1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-11 18:06:29 +00:00
ocsms/appinfo/ocsmsapp.php
Loic Blot 5f0263f71e Move formatphonenumber.php to proper dir and rename.
* fix some coding styles
* Add contributor
2014-11-27 14:04:25 +00:00

155 lines
3.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* ownCloud - ocsms
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Loic Blot <loic.blot@unix-experience.fr>
* @copyright Loic Blot 2014
*/
namespace OCA\OcSms\AppInfo;
use \OCP\AppFramework\App;
use \OCA\OcSms\Controller\SmsController;
use \OCA\OcSms\Db\Sms;
use \OCA\OcSms\Db\SmsMapper;
use \OCA\OcSms\Lib\PhoneNumberFormatter;
class OcSmsApp extends App {
/**
* @var array used to cache the parsed contacts for every request
*/
/*
caching dosn´t work because on every call all will be reinstantiated
*/
private static $contacts; // dosn´t work
private static $contactsInverted; // dosn´t work
private $c;
public function __construct (array $urlParams=array()) {
parent::__construct('ocsms', $urlParams);
$container = $this->getContainer();
$this->c = $container;
$app = $this;
/**
* Controllers
*/
$container->registerService('SmsController', function($c) use($app) {
return new SmsController(
$c->query('AppName'),
$c->query('Request'),
$c->query('UserId'),
$c->query('SmsMapper'),
$app
);
});
/**
* Database Layer
*/
$container->registerService('Sms', function($c) {
return new Sms($c->query('ServerContainer')->getDb());
});
$container->registerService('SmsMapper', function($c) {
return new SmsMapper($c->query('ServerContainer')->getDb());
});
/**
* Core
*/
$container->registerService('UserId', function($c) {
return \OCP\User::getUser();
});
/**
* Managers
*/
$container->registerService('ContactsManager', function($c){
return $c->getServer()->getContactsManager();
});
}
public function getContacts() {
// Only load contacts if they aren't in the buffer
// dosn´t work
if(count(self::$contacts) == 0) {
$this->loadContacts();
}
return self::$contacts;
}
public function getInvertedContacts() {
// Only load contacts if they aren't in the buffer
// dosn´t work
if(count(self::$contactsInverted) == 0) {
$this->loadContacts();
}
return self::$contactsInverted;
}
/**
* Partially importe this function from owncloud Chat app
* https://github.com/owncloud/chat/blob/master/app/chat.php
*/
private function loadContacts() {
self::$contacts = array();
self::$contactsInverted = array();
$cm = $this->c['ContactsManager'];
if ($cm == null) {
return;
}
$result = array();
try {
$result = $cm->search('',array('FN'));
} catch (Exception $e) {
// If contact manager failed, avoid the issue
return;
}
foreach ($result as $r) {
if (isset ($r["TEL"])) {
$phoneIds = $r["TEL"];
if (is_array($phoneIds)) {
$countPhone = count($phoneIds);
for ($i=0; $i < $countPhone; $i++) {
$this->pushPhoneNumberToCache($phoneIds[$i], $r["FN"]);
}
}
else {
$this->pushPhoneNumberToCache($phoneIds, $r["FN"]);
}
}
}
}
/*
all numbers will be formatted
*/
private function pushPhoneNumberToCache($rawPhone, $contactName) {
$phoneNb = PhoneNumberFormatter::format($rawPhone);
self::$contacts[$phoneNb] = $contactName;
// Inverted contacts
if (!isset(self::$contactsInverted[$contactName])) {
self::$contactsInverted[$contactName] = array();
}
array_push(self::$contactsInverted[$contactName], $phoneNb);
}
}