Esempio n. 1
0
 public function push_special($data, $content_id, $content_relation_id, $check)
 {
     $content_push = array('content_id' => $content_id, 'content_relation_id' => $content_relation_id, 'type' => 1, 'relation_data' => serialize($data['special']));
     include_once ROOT_PATH . 'lib/class/special.class.php';
     $special_obj = new special();
     $content_data = $data;
     $sql = "SELECT * FROM " . DB_PREFIX . "content_push WHERE type=1 AND content_id={$content_id}";
     $info = $this->db->query_first($sql);
     if ($info && !$content_relation_id) {
         $content_push['content_id'] = $info['content_id'];
         $content_push['content_relation_id'] = $info['content_relation_id'];
     }
     $sql = "SELECT * FROM " . DB_PREFIX . "content_columns WHERE content_id={$content_id}";
     $content_columns = $this->db->query_first($sql);
     $content_columnsarr = $content_columns['column_datas'] ? unserialize($content_columns['column_datas']) : array();
     foreach ($content_columnsarr as $k => $v) {
         $cc[$k] = $v['name'];
     }
     $content_data['publish_content_columns'] = $cc;
     if ($check && !empty($info)) {
         //先判断content_push有没有记录
         $relation_data = unserialize($info['relation_data']);
         $data_special_keys = array_keys($data['special']);
         $relation_special_keys = array_keys($relation_data);
         $insert_relation_idarr = array_diff($data_special_keys, $relation_special_keys);
         $delete_relation_idarr = array_diff($relation_special_keys, $data_special_keys);
         if (!$insert_relation_idarr && !$delete_relation_idarr) {
             //只更新专题内容
             $content_data['content_id'] = $content_push['content_relation_id'];
             $content_data['cid'] = $content_push['content_id'];
             $special_obj->update_special_content($content_data);
             return true;
         } else {
             if ($insert_relation_idarr) {
                 //插入专题内容
                 $content_data['special_id'] = implode(',', $insert_relation_idarr);
                 $content_data['content_id'] = $content_push['content_relation_id'];
                 $content_data['cid'] = $content_push['content_id'];
                 $special_obj->insert_special_content($content_data);
             } else {
                 if ($delete_relation_idarr) {
                     //通知专题删除内容
                     $special_obj->delete_special_content(implode(',', $delete_relation_idarr), $content_push['content_id'], $data);
                 }
             }
         }
         //更新content_push
         if ($data['special']) {
             if (!$content_push['content_relation_id']) {
                 unset($content_push['content_relation_id']);
             }
             self::update('content_push', ' id=' . $info['id'], $content_push);
         } else {
             self::delete_expand('content_push', $info['id']);
         }
     } else {
         if ($data['special']) {
             //插入content_push
             self::insert('content_push', $content_push);
             //插入专题内容
             $content_data['special_id'] = implode(',', array_keys($data['special']));
             $content_data['content_id'] = $content_push['content_relation_id'];
             $content_data['cid'] = $content_push['content_id'];
             $special_obj->insert_special_content($content_data);
         }
     }
 }