1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-20 22:36:22 +00:00
ocsms/appinfo/ocsmsapp.php
stagprom 4519f0088d new file: appinfo/formatphonenumber.php
modified:   appinfo/ocsmsapp.php
	modified:   controller/smscontroller.php
	modified:   db/smsmapper.php

A lot of changes in Code dealing with phonenumbers
2014-11-24 15:54:10 +01:00

149 lines
3.2 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
*/
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"]);
}
}
}
}
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);
}
}