/** * 更新联系人所在分组 * @param int $id * @param string $type */ private function _contact_to_group($id, $type = 'add') { if ($this->get_method() != 'POST') { $this->send_response(405, NULL, Kohana::lang('contact.method_not_exist')); } $id = (int) $id; if ($type == 'add' and empty($id)) { $this->send_response(400, NULL, Kohana::lang('contact.group_id_empty')); } if (!empty($id) and !$this->model->get_category_name($this->user_id, $id)) { $this->send_response(400, NULL, Kohana::lang('contact.group_not_exist')); } $data = $this->get_data(); $ids = !empty($data['ids']) ? explode(',', $data['ids']) : array(); if (empty($ids)) { $this->send_response(400, NULL, Kohana::lang('contact.contact_ids_empty')); } $result = array(); $update_ids = $this->model->move_contact_category($this->user_id, $id, $ids, $type); if ($update_ids) { $now = api::get_now_time(); foreach ($update_ids as $id) { $result[] = array('id' => (int) $id, 'modified_at' => $now); } } $this->send_response(200, $result, '', FALSE); }
/** * 更新联系人修改时间 * @param int $user_id 用户ID * @param array $ids 联系人ID * @param string $source 来源 * @return bool */ public function update_contact_modified($user_id, $ids, $source) { $sql = sprintf("UPDATE %s SET modified = %d, SOURCE = %s WHERE uid = %d AND cid IN (%s)", $this->get_table($user_id, 'contacts'), api::get_now_time(), $this->db->escape($source), $user_id, implode(',', $ids)); $query = $this->db->query($sql); if ($query) { return TRUE; } return FALSE; }
/** * 检查是否需要保存快照 * @param int $user_id 用户ID * @param string $operation 操作说明 * @param bool $auto 是否自动保存快照 * @param bool $save 是否保存 ($auto == FALSE时生效) * @return bool */ public function is_save_snapshot($user_id, $operation, $auto = TRUE, $save = FALSE) { //联系人为空 $result = FALSE; $history = $this->contact_mapper->get_last_history($user_id); if ($auto == TRUE) { if ($operation == 'recover_snapshot') { $result = TRUE; } else { //粒度不分太细 switch (TRUE) { //操作历史为空 case $history === FALSE: //上次操作应用不同 //上次操作应用不同 case $history['appid'] != $this->appid: //上次操作设备不同 //上次操作设备不同 case $history['device_id'] != $this->device_id: //上次操作说明不同 //上次操作说明不同 case $history['operation'] != $operation: //上次操作与本次操作时间超过10分钟 //上次操作与本次操作时间超过10分钟 case api::get_now_time() - $history['dateline'] > 600: $result = TRUE; break; //操作为合并操作 //操作为合并操作 case $operation === 'merge': $deleted_ids = unserialize($history['deleted_ids']); if (!empty($deleted_ids)) { $result = TRUE; } break; default: $result = FALSE; break; } } $this->is_snapshot = api::get_now_time() == $history['dateline'] ? FALSE : $result; $this->is_history = $result; } else { //根据设定参数备份快照 if ($save == TRUE) { $this->is_snapshot = TRUE; $this->is_history = TRUE; } else { $this->is_snapshot = FALSE; $this->is_history = FALSE; } } $this->history = $history; $this->operation = $operation; if ($this->is_snapshot) { $this->count = $this->contact_mapper->get_count($user_id); $this->category_count = $this->contact_mapper->get_category_count($user_id); } if ($operation == 'add') { $this->count = isset($this->count) ? $this->count : $this->contact_mapper->get_count($user_id); if ($this->count == 0) { $this->is_snapshot = FALSE; } else { $this->category_count = $this->contact_mapper->get_category_count($user_id); } } }