Esempio n. 1
0
 /**
  * 移动回收站联系人到联系人
  * @param int $user_id 用户ID
  * @param array $ids     联系人ID
  * @return array 结果数组
  */
 public function move_recycle_to_contact($user_id, $ids)
 {
     $contact_ids = $this->contact_mapper->get_valid_recycled_ids($user_id, $ids);
     $recovered_ids = $statuses = array();
     $now = api::get_now_time();
     foreach ($ids as $id) {
         if (in_array($id, $contact_ids)) {
             $recovered_ids[] = (int) $id;
             $statuses[$id] = array('status' => 200, 'id' => (int) $id, 'modified_at' => $now);
         } else {
             $statuses[$id] = array('status' => 404, 'id' => (int) $id, 'modified_at' => 0);
         }
     }
     if (!empty($recovered_ids)) {
         //修改前保存快照
         if ($this->save_snapshot($user_id)) {
             $added_ids = $this->contact_mapper->move_recycle_to_contact($user_id, $recovered_ids, $this->get_source_name());
             if ($added_ids) {
                 $this->prepare_task($user_id, $added_ids, array(), array(), $recovered_ids);
             } else {
                 foreach ($recovered_ids as $id) {
                     $statuses[$id]['status'] = 500;
                 }
             }
         } else {
             foreach ($recovered_ids as $id) {
                 $statuses[$id]['status'] = 500;
             }
         }
     }
     return array_values($statuses);
 }