1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-10 09:26:15 +00:00
ocsms/appinfo/ocsmsapp.php
stagprom 405ee9af6f Added many comments to sourcees
modified:   appinfo/formatphonenumber.php
modified:   appinfo/ocsmsapp.php
modified:   controller/smscontroller.php
modified:   db/smsmapper.php
2014-11-25 13:28:43 +01:00

154 lines
3.4 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\AppInfo\FormatPhoneNumber;
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 = FormatPhoneNumber::formatPhoneNumber($rawPhone);
self::$contacts[$phoneNb] = $contactName;
// Inverted contacts
if (!isset(self::$contactsInverted[$contactName]))
self::$contactsInverted[$contactName] = array();
array_push(self::$contactsInverted[$contactName], $phoneNb);
}
}