Exemple #1
0
 /**
  * 构造函数,
  * 为了避免循环实例化,请尽量调用单例模式
  */
 public function __construct()
 {
     $this->contact_mapper = Contact_Mapper::instance();
     $this->contact_model = Contact_Model::instance();
     $this->cache_pre = CACHE_PRE . 'category_';
     $this->cache = Cache::instance();
 }
Exemple #2
0
 public function __construct()
 {
     parent::__construct();
     $this->model = new Message_Model();
     $this->message_type = null;
     $this->activityModel = Activity_Model::instance();
     $this->friendModel = Friend_Model::instance();
     $this->groupModel = Group_Model::instance();
     $this->groupContactModel = Group_Contact_Model::instance();
     $this->contactModel = Contact_Model::instance();
 }
Exemple #3
0
 /**
  * 过滤输入、创建群联系人对象
  * @param array $data 联系人信息
  * @return Group_Contact $contact
  */
 public function array_to_Group_contact($data)
 {
     $contact = new Group_Contact();
     $location_model = Location_Model::instance();
     $bjx_arr = Kohana::config_load('bjx');
     foreach ($data as $type => $value) {
         switch ($type) {
             case 'tels':
                 if (!empty($value)) {
                     $values = $tmp = array();
                     foreach ($value as $val) {
                         if (!in_array(trim($val['value']), $tmp)) {
                             $tmp[] = trim($val['value']);
                             $values[] = array('value' => trim($val['value']), 'type' => $val['type'], 'city' => $location_model->get_tel_location(trim($val['value'])), 'pref' => !empty($val['pref']) ? (int) $val['pref'] : 0);
                         }
                     }
                     call_user_func(array($contact, 'set_' . $type), $values);
                 }
                 break;
             case 'ims':
                 if (!empty($value)) {
                     $values = $tmp = $protocols = array();
                     foreach ($value as $val) {
                         $val['protocol'] = strtolower($val['protocol']);
                         $keys = array_keys($tmp, trim($val['value']));
                         $key = isset($keys[0]) ? $keys[0] : -1;
                         if ($key < 0 or $protocols[$key] != $val['protocol']) {
                             $tmp[] = trim($val['value']);
                             $protocols[] = $val['protocol'];
                             $values[] = array('value' => trim($val['value']), 'protocol' => $val['protocol'], 'type' => $val['type']);
                         }
                     }
                     call_user_func(array($contact, 'set_' . $type), $values);
                 }
                 break;
             case 'addresses':
                 if (!empty($value)) {
                     $values = $tmp = array();
                     $t = '';
                     foreach ($value as $val) {
                         $t = trim($val['country']) . '|' . trim($val['region']) . '|' . trim($val['city']) . '|' . trim($val['street']) . '|' . trim($val['postal']);
                         if (!in_array($t, $tmp)) {
                             $values[] = array('country' => trim($val['country']), 'region' => trim($val['region']), 'city' => trim($val['city']), 'street' => trim($val['street']), 'postal' => trim($val['postal']), 'type' => $val['type']);
                             $tmp[] = $t;
                         }
                     }
                     call_user_func(array($contact, 'set_' . $type), $values);
                 }
                 break;
             case 'emails':
             case 'urls':
             case 'events':
             case 'relations':
                 if (!empty($value)) {
                     $values = $tmp = array();
                     foreach ($value as $val) {
                         if (!in_array(trim($val['value']), $tmp)) {
                             $tmp[] = trim($val['value']);
                             $values[] = array('value' => trim($val['value']), 'type' => $val['type']);
                         }
                     }
                     call_user_func(array($contact, 'set_' . $type), $values);
                 }
                 break;
             case 'birthday':
                 $contactModel = Contact_Model::instance();
                 call_user_func(array($contact, 'set_' . $type), !empty($value) ? $contactModel->_filter_birthday($value) : '');
                 break;
             case 'id':
                 break;
             default:
                 call_user_func(array($contact, 'set_' . $type), !empty($value) ? $value : '');
                 break;
         }
     }
     $formatted_name = $this->name_to_formatted_name($data['family_name'], $data['given_name']);
     //拼接后的全名为空,并且输入的全名不是空的,把全名拆分设置
     if (empty($formatted_name) and !empty($data['formatted_name'])) {
         $name = $this->formatted_name_to_name($data['formatted_name']);
         $contact->set_given_name($name['given_name']);
         $contact->set_family_name($name['family_name']);
     } else {
         $fn = $formatted_name;
     }
     if (!empty($fn)) {
         require_once Kohana::find_file('vendor', 'pinyin/c2p');
         $phonetic = getPinYin($fn, false, ' ');
         $tmp = explode(' ', $phonetic);
         $sort = '';
         if (is_array($tmp)) {
             foreach ($tmp as $t) {
                 $sort .= isset($t[0]) ? $t[0] : '';
             }
         }
         $t = ord($sort[0]);
         if (empty($sort) or $t < 97 or $t > 122) {
             $sort = '#';
         }
         $sort = substr($sort, 0, 20);
         $contact->set_formatted_name($fn);
         $contact->set_phonetic(implode('', $tmp));
         $contact->set_sort($sort);
     } else {
         $contact->set_formatted_name('');
         $contact->set_phonetic('');
         $contact->set_sort('#');
     }
     return $contact;
 }
Exemple #4
0
 /**
  * 
  * @param $user_id
  * @return unknown_type
  */
 private function _get_relation_contact_lsits($user_id)
 {
     $res = array();
     //$key = 'momo_contacts_relation_'.$user_id;
     //$res = Cache::instance()->get($key);
     //if(!$res) {
     $contact_lists = Contact_Model::instance()->get($user_id, null, '', 1);
     if (count($contact_lists) > 0 && is_array($contact_lists)) {
         foreach ($contact_lists as $contact) {
             if (count($contact['tels']) > 0 && is_array($contact['tels'])) {
                 foreach ($contact['tels'] as $tel) {
                     if ($tel['type'] == 'cell') {
                         $relation[] = array('name' => $contact['formatted_name'], 'mobile' => $tel['value']);
                     }
                 }
             }
         }
         if ($relation) {
             $res = User_Model::instance()->create_at($relation, $user_id, 0);
             //if($res)
             //Cache::instance()->set($key, $res, NULL, 86400);
         }
     }
     //}
     return $res;
 }
Exemple #5
0
 /**
  * 获取联系人列表
  * @param $user_id
  * @return array
  */
 private function _get_contact_lsits($user_id)
 {
     $res = array();
     $contact_lists = Contact_Model::instance()->get($user_id, null, '', 1);
     if (count($contact_lists) > 0 && is_array($contact_lists)) {
         foreach ($contact_lists as $contact) {
             if (count($contact['tels']) > 0 && is_array($contact['tels'])) {
                 foreach ($contact['tels'] as $tel) {
                     if ($tel['type'] == 'cell') {
                         $res[$tel['value']] = $contact['formatted_name'];
                     }
                 }
             }
         }
     }
     return $res;
 }
Exemple #6
0
 /**
  * 根据手机号码获取用户联系人的姓名
  * @param $user_id 用户ID
  * @param $mobile 手机号码
  * @param string $zone_code 国家码
  * @return array
  */
 public function get_contact_formatted_name($user_id, $mobile, $zone_code = '86')
 {
     $result = array();
     if ($mobile) {
         $zone_code = $zone_code ? $zone_code : '86';
         $search = '+' . $zone_code . $mobile;
         $ids = Contact_Mapper::instance()->get_id_by_tel($user_id, $search);
         $contact_model = Contact_Model::instance();
         foreach ($ids as $id) {
             $contact = $contact_model->get($user_id, $id);
             $result[] = $contact->get_formatted_name();
         }
     }
     return $result;
 }
Exemple #7
0
 /**
  * 检查是否保存快照
  * @param string $uri 请求URI
  * @param string $operation 操作说明
  * @return void
  */
 private function _check_save_snapshot($uri, $operation = '')
 {
     // 检查操作类型
     if (in_array($uri, array('add_batch', 'destroy', 'remove_batch', 'update', 'set_batch'), TRUE)) {
         // 非网站的默认为同步
         if ($this->get_source() != 0 and $uri != 'recover_history') {
             $operation = 'sync';
         } else {
             switch ($uri) {
                 case 'add_batch':
                     $operation = empty($operation) ? 'add_category' : $operation;
                     break;
                 case 'remove_batch':
                     $operation = empty($operation) ? 'remove_category' : $operation;
                     break;
                 case 'update':
                     $operation = empty($operation) ? 'update_category' : $operation;
                     break;
                 case 'set_batch':
                     $operation = empty($operation) ? 'set_category' : $operation;
                     break;
                 case 'destroy':
                     $operation = empty($operation) ? 'remove_category' : $operation;
                     break;
             }
         }
         Contact_Model::instance()->is_save_snapshot($this->user_id, $operation);
     }
 }
Exemple #8
0
 /**
  * 单例模式
  * @return Contact_Model
  */
 public static function &instance()
 {
     if (!isset(self::$instance)) {
         // Create a new instance
         self::$instance = new Contact_Model();
     }
     return self::$instance;
 }