Beispiel #1
0
 function create()
 {
     if (!$this->input['title']) {
         $this->errorOutput('标题不能为空');
     }
     if (!$this->input['content'] && !$this->input['outlink']) {
         $this->errorOutput('内容不能为空');
     }
     if (urldecode($this->input['outlink']) && urldecode($this->input['outlink']) != '请填写超链接!') {
         $content = '';
     } else {
         $check_info = hg_check_content(html_entity_decode($this->input['content']));
         $content = addslashes($this->input['content']);
     }
     if (!(strpos(urldecode($this->input['indexpic']), 'http://') === false)) {
         $this->input['indexpic'] = $this->indexpic_img_local(urldecode($this->input['indexpic']));
     }
     $info = array('title' => $this->input['title'], 'page_title' => $this->input['pagetitles'], 'tcolor' => $this->input['tcolor'], 'isbold' => intval($this->input['isbold']), 'isitalic' => intval($this->input['isitalic']), 'istop' => $this->input['istop'] == 1 ? 1 : 0, 'iscomm' => $this->input['iscomm'] == 1 ? 0 : 1, 'istpl' => $this->input['istpl'] == 1 ? 1 : 0, 'subtitle' => $this->input['subtitle'], 'keywords' => str_replace(' ', ',', trim($this->input['keywords'])), 'brief' => $this->input['brief'], 'author' => $this->input['author'], 'source' => $this->input['source'], 'indexpic' => intval($this->input['indexpic']), 'outlink' => $this->input['outlink'], 'sort_id' => intval($this->input['sort_id']), 'column_id' => $this->input['column_id'], 'org_id' => $this->input['org_id'] ? intval($this->input['org_id']) : intval($this->user['org_id']), 'user_id' => $this->input['user_id'] ? intval($this->input['user_id']) : intval($this->user['user_id']), 'user_name' => $this->input['user_name'] ? $this->input['user_name'] : $this->user['user_name'], 'create_time' => $this->input['create_time'] ? $this->input['create_time'] : TIMENOW, 'update_time' => $this->input['update_time'] ? $this->input['update_time'] : TIMENOW, 'pub_time' => strtotime($this->input['pub_time']), 'ip' => hg_getip(), 'weight' => intval($this->input['weight']), 'water_id' => $this->input['water_config_id'], 'water_name' => $this->input['water_config_name'], 'is_img' => $check_info['is_img'], 'is_video' => $check_info['is_video'], 'is_tuji' => $check_info['is_tuji'], 'is_vote' => $check_info['is_vote'], 'appid' => intval($this->user['appid']), 'appname' => trim($this->user['display_name']), 'state' => isset($this->input['state']) ? intval($this->input['state']) : $this->settings['default_state'], 'pub_time' => strtotime($this->input['publish_time']), 'app' => $this->input['app'] ? $this->input['app'] : APP_UNIQUEID, 'module' => $this->input['mod'] ? $this->input['mod'] : MOD_UNIQUEID, 'para' => $this->input['para']);
     include_once ROOT_PATH . 'lib/class/publishconfig.class.php';
     $this->publish_column = new publishconfig();
     $column_id = $info['column_id'] = $this->publish_column->get_columnname_by_ids('id,name', $info['column_id']);
     $info['column_id'] = serialize($info['column_id']);
     $info['id'] = $article_id = $this->obj->insert_data($info, "article");
     $this->obj->update(array('order_id' => $article_id), "article", "id={$article_id}");
     //内容表
     $infoCon = array('articleid' => $article_id, 'content' => $content);
     $this->obj->insert_data($infoCon, "article_contentbody");
     ###更新索引图ID
     $this->obj->update(array('cid' => $article_id), 'material', ' material_id=' . $this->input['indexpic']);
     //处理图片
     if ($this->input['needlocalimg']) {
         $url = is_array($this->input['needlocalimg']) ? implode(',', $this->input['needlocalimg']) : $this->input['needlocalimg'];
         $material = $this->mater->localMaterial($url);
         if (is_array($material) && count($material) > 0) {
             foreach ($material as $k => $v) {
                 if ($v && !$v['error']) {
                     $tem_data = array('cid' => $info['id'], 'material_id' => $v['id'], 'name' => $v['name'], 'type' => $v['type'], 'mark' => $v['mark'], 'filesize' => $v['filesize'], 'create_time' => $v['create_time'], 'ip' => $v['ip'], 'remote_url' => $v['remote_url'], 'host' => $v['host'], 'dir' => $v['dir'], 'filepath' => $v['filepath'], 'filename' => $v['filename']);
                     $tem_data['pic'] = array('host' => $v['host'], 'dir' => $v['dir'], 'filepath' => $v['filepath'], 'filename' => $v['filename']);
                     $tem_data['pic'] = serialize($tem_data['pic']);
                     $this->obj->insert_data($tem_data, 'material');
                 }
             }
         }
     }
     if ($this->input['img']) {
         if (is_array($this->input['img']) && count($this->input['img']) > 0) {
             $material_id = array();
             foreach ($this->input['img'] as $k => $v) {
                 if ($v) {
                     $tmp_data = array('cid' => $info['id'], 'material_id' => $v['id'], 'name' => $v['name'], 'type' => $v['type'], 'mark' => $v['mark'] ? $v['mark'] : 'img', 'filesize' => $v['filesize'], 'create_time' => $v['create_time'], 'host' => $v['host'], 'dir' => $v['dir'], 'filepath' => $v['filepath'], 'filename' => $v['filename']);
                     $tmp_data['pic'] = array('host' => $v['host'], 'dir' => $v['dir'], 'filepath' => $v['filepath'], 'filename' => $v['filename']);
                     $tmp_data['pic'] = serialize($tmp_data['pic']);
                     $material_id[] = $v['id'];
                     $this->obj->insert_data($tmp_data, 'material');
                 }
             }
             $material_id = implode(',', $material_id);
             if ($material_id) {
                 $this->mater->updateMaterialNum($material_id);
             }
         }
     }
     //放入发布队列
     if (intval($info['state']) == 1 && !empty($column_id)) {
         $op = 'insert';
         $this->publish_insert_query($article_id, $op);
     }
     $this->addItem($info);
     $this->output();
 }
Beispiel #2
0
 /**
  * 更新文章内容
  * @name update
  * @param $id int 文章ID
  * @param $title string 标题
  * @param $subtitle string 副标题
  * @param $keywords string 关键词
  * @param $brief string 简介
  * @param $outlink string 外链
  * @param $content string 正文内容
  * @param $author string 作者
  * @param $source string 来源
  * @param $columnid string 栏目ID
  * @return $ret array 文章信息
  */
 public function update()
 {
     if (empty($this->input['id'])) {
         $this->errorOutput("文章ID不能为空");
     }
     $this->input['title'] = trim($this->input['title']);
     if (!$this->input['title']) {
         $this->errorOutput("标题不能为空");
     }
     //if(!$this->input['content'] && !$this->input['outlink'])
     //{
     //	$this->errorOutput('内容不能为空');
     //}
     $article_id = intval($this->input['id']);
     //查询修改文章之前已经发布到的栏目
     $sql = "SELECT * FROM " . DB_PREFIX . "article WHERE id = " . $article_id;
     $q = $this->db->query_first($sql);
     $stat_article_detail = $q;
     #####节点权限检测数据收集
     if ($this->user['group_type'] > MAX_ADMIN_TYPE) {
         $_sort_ids = '';
         if ($q['sort_id']) {
             $_sort_ids = $q['sort_id'];
         }
         if ($this->input['sort_id']) {
             $_sort_ids = $_sort_ids ? $_sort_ids . ',' . $this->input['sort_id'] : $this->input['sort_id'];
         }
         if ($_sort_ids) {
             $sql = 'SELECT id, parents FROM ' . DB_PREFIX . 'sort WHERE id IN(' . $_sort_ids . ')';
             $query = $this->db->query($sql);
             while ($row = $this->db->fetch_array($query)) {
                 $data['nodes'][$row['id']] = $row['parents'];
             }
             //$this->errorOutput(var_export($data['nodes']['news_node'],1));
         }
     }
     #####节点权限
     $data['id'] = $article_id;
     $data['user_id'] = $q['user_id'];
     $data['org_id'] = $q['org_id'];
     $data['column_id'] = $this->input['column_id'];
     /*
     		 if($this->user['group_type'] > MAX_ADMIN_TYPE && $data['column_id'] && !$this->user['prms']['news']['publish'])
     		 {
     $this->errorOutput(NO_PRIVILEGE);
     }
     */
     $q['column_id'] = unserialize($q['column_id']);
     $data['published_column_id'] = '';
     $data['weight'] = $q['weight'];
     ###获取默认数据状态
     if (!empty($q['column_id'])) {
         $status = $this->get_status_setting('update_publish', $q['state']);
         //$this->errorOutput('true'.$status);
     } else {
         if (intval($q['state']) == 1) {
             $status = $this->get_status_setting('update_audit', $q['state']);
         }
         //$this->errorOutput('false'.$status);
     }
     ######获取默认数据状态
     #####结束
     $ori_column_id = array();
     if (is_array($q['column_id'])) {
         $ori_column_id = array_keys($q['column_id']);
         $data['published_column_id'] = implode(',', $ori_column_id);
     }
     //存在时验证create权限
     //        if ($this->input['is_first_hand_save']) {
     //            $data['_action'] = 'create';
     //        }
     $this->verify_content_prms($data);
     if (urldecode($this->input['outlink']) && urldecode($this->input['outlink']) != '请填写超链接!') {
         $content = '';
     } else {
         $check_info = hg_check_content(html_entity_decode($this->input['content']));
         $content = addslashes(trim($this->input['content']));
     }
     if (!(strpos(urldecode($this->input['indexpic']), 'http://') === false)) {
         $this->input['indexpic'] = $this->indexpic_img_local(urldecode($this->input['indexpic']));
     }
     $spe_idarr = explode(',', $this->input['special_id']);
     $col_namearr = explode(',', $this->input['column_name']);
     $col_idarr = explode(',', $this->input['col_id']);
     $sname_idarr = explode(',', $this->input['show_name']);
     $spe_arr = array();
     if ($col_idarr) {
         foreach ($col_idarr as $k => $v) {
             $spe_arr[$v]['id'] = $v;
             $spe_arr[$v]['name'] = $col_namearr[$k];
             $spe_arr[$v]['special_id'] = $spe_idarr[$k];
             $spe_arr[$v]['show_name'] = $sname_idarr[$k];
         }
     }
     //是否开启评论  优先使用iscomment设置
     if (isset($this->input['iscomment'])) {
         $this->input['other_settings']['closecomm'] = !intval($this->input['iscomment']);
     }
     $info = array('title' => addslashes($this->input['title']), 'page_title' => addslashes($this->input['pagetitles']), 'tcolor' => $this->input['tcolor'], 'isbold' => intval($this->input['isbold']), 'isitalic' => intval($this->input['isitalic']), 'istop' => $this->input['istop'] == 1 ? 1 : 0, 'iscomment' => !$this->input['other_settings']['closecomm'], 'is_praise' => intval($this->input['is_praise']), 'istpl' => $this->input['istpl'] == 1 ? 1 : 0, 'subtitle' => addslashes($this->input['subtitle']), 'keywords' => $this->input['keywords'], 'brief' => addslashes($this->input['brief']), 'author' => addslashes($this->input['author']), 'source' => addslashes($this->input['source']), 'outlink' => addslashes($this->input['outlink']), 'indexpic' => intval($this->input['indexpic']), 'sort_id' => intval($this->input['sort_id']), 'column_id' => $this->input['column_id'], 'org_id' => intval($this->user['org_id']), 'weight' => intval($this->input['weight']), 'water_id' => $this->input['water_config_id'], 'water_name' => urldecode($this->input['water_config_name']), 'is_img' => $check_info['is_img'], 'is_video' => $check_info['is_video'], 'is_tuji' => $check_info['is_tuji'], 'is_vote' => $check_info['is_vote'], 'appid' => intval($this->user['appid']), 'appname' => trim(urldecode($this->user['display_name'])), 'pub_time' => strtotime($this->input['pub_time']), 'other_settings' => $this->input['other_settings'] ? serialize($this->input['other_settings']) : '', 'ori_url' => $this->input['ori_url'], 'special' => addslashes(serialize($spe_arr)), 'template_sign' => intval($this->input['template_sign']), 'click_num' => intval($this->input['click_num']));
     $this->check_weight_prms($info['weight'], $data['weight']);
     include_once ROOT_PATH . 'lib/class/publishconfig.class.php';
     $this->publish_column = new publishconfig();
     $info['column_id'] = $this->publish_column->get_columnname_by_ids('id,name', $info['column_id']);
     $info['column_id'] = $info['column_id'] ? serialize($info['column_id']) : '';
     $old_material = $this->obj->getMaterialById($article_id);
     //原文章内容的素材
     $old_material_id = array();
     foreach ($old_material as $k => $v) {
         $old_material_id[] = $v['material_id'];
         //原文章内容的素材ID
     }
     $ret_history = $this->add_history($article_id, implode(',', $old_material_id));
     $article_update_ret = $this->obj->update($info, "article", "id={$article_id}");
     //记录文稿发布库栏目分发表
     $this->obj->update_pub_column($article_id, $this->input['column_id']);
     //记录文稿发布库栏目分发表
     //更新内容表
     $content_update_ret = $this->obj->update(array('content' => $content), "article_contentbody", "articleid={$article_id}");
     //更新素材表
     //编目更新
     $this->catalog('update', $article_id, 'article', $ret['catalog']);
     $material_id = $this->input['material_id'];
     //if(!empty($material_id))
     //{
     $material_id = is_array($material_id) ? $material_id : explode(',', $material_id);
     $material_history = explode(',', urldecode($this->input['material_history']));
     $del_material = array_diff($material_history, $material_id);
     $mid_str = implode(',', $material_id);
     $del_material = implode(',', $del_material);
     if (!empty($del_material)) {
         $this->mater->delMaterialById($del_material);
         $condition = " material_id IN(" . $del_material . ")";
         $this->obj->delete('material', $condition);
     }
     if ($mid_str) {
         $this->mater->updateMaterial($mid_str, $article_id, $info['sort_id']);
         //更新cid,catid
         $material_update_ret = $this->obj->update(array('cid' => $article_id), "material", "material_id IN({$mid_str})");
     }
     $new_material_str = $mid_str;
     //}
     if (!empty($new_material_str)) {
         // 此次新闻的所有素材ID 中有的是历史记录的已经被删除的素材,so,所有的需要复原操作
         $q = $this->obj->get_deled_material_by_mid($new_material_str);
         //对已经被删除的 进行复原
         $recover_material_id = $space = "";
         if (is_array($q) && count($q) > 0) {
             foreach ($q as $k => $v) {
                 $recover_material_id .= $space . $v['material_id'];
                 $space = ",";
             }
         }
         if (!empty($recover_material_id)) {
             $this->mater->recoverMaterialState($recover_material_id);
             //////恢复数据--恢复文件名///////////////
             $this->obj->update(array('isdel' => 1), "material", "material_id IN ({$recover_material_id})");
         }
         // 此次新闻的所有素材ID 中有的是历史记录的已经被删除的素材,so,所有的需要复原操作
     }
     $new_material_id = explode(',', $new_material_str);
     $del_old = array_unique(array_diff($old_material_id, $new_material_id));
     if (!empty($del_old)) {
         $del_old_str = implode(',', $del_old);
         //旧的
         $sql = "SELECT  * FROM " . DB_PREFIX . "material WHERE material_id IN(" . $del_old_str . ")";
         $material_ret = $this->db->query($sql);
         while ($row = $this->db->fetch_array($material_ret)) {
             if ($row['expand_id']) {
                 publish_insert_query($row, 'delete', '', 1, 'name');
             }
         }
         $this->mater->deleteMaterialState($del_old_str);
         //////改数据--改文件名///////////////
         $this->obj->update(array('isdel' => 0), "material", "material_id IN ({$del_old_str})");
     }
     //查询文章所属的所有父级分类
     //$sort = $this->obj->getSortByFather($info['sort_id']);
     //入水印关系表
     //$this->mater->insertMaterialWater($sort,$article_id,intval($this->input['water_config_id']));
     //发布系统
     $ret = $this->obj->get_article(" id = {$article_id}", 'column_id,state,expand_id,catalog');
     //更改文章后发布的栏目
     $ret['column_id'] = unserialize($ret['column_id']);
     $new_column_id = array();
     if (is_array($ret['column_id'])) {
         $new_column_id = array_keys($ret['column_id']);
     }
     $info['id'] = $article_id;
     if (intval($ret['state']) == 1) {
         if (!empty($ret['expand_id'])) {
             $del_column = array_diff($ori_column_id, $new_column_id);
             if (!empty($del_column)) {
                 publish_insert_query($info, 'delete', $del_column);
             }
             $add_column = array_diff($new_column_id, $ori_column_id);
             if (!empty($add_column)) {
                 publish_insert_query($info, 'insert', $add_column);
             }
             $same_column = array_intersect($ori_column_id, $new_column_id);
             if (!empty($same_column)) {
                 publish_insert_query($info, 'update', $same_column);
                 //有新插入素材时需插入子队列
                 publish_insert_query($info, 'insert', $same_column, 1);
             }
         } else {
             $op = "insert";
             publish_insert_query($info, $op);
         }
     } else {
         if (!empty($ret['expand_id'])) {
             $op = "delete";
             publish_insert_query($info, $op);
         }
     }
     if ($info) {
         if ($article_update_ret || $content_update_ret || $material_update_ret) {
             $info['state'] = $status;
             $data = array('modifier' => $this->user['user_name'], 'modifier_id' => $this->user['user_id'], 'update_time' => TIMENOW, 'state' => $status);
             $this->obj->update($data, 'article', "id={$article_id}");
             $stat_data = array('content_id' => $article_id, 'contentfather_id' => '', 'type' => 'update', 'user_id' => $stat_article_detail['user_id'], 'user_name' => $stat_article_detail['user_name'], 'before_data' => $stat_article_detail['title'], 'last_data' => $this->input['title'], 'num' => 1);
             $this->addStatistics($stat_data);
             $this->addLogs('修改文章', $stat_article_detail, $info, $info['title']);
         }
         if ($this->input['need_indexpic'] && $info['indexpic']) {
             $info['indexpic_url'] = $this->obj->getIndexpic($info['indexpic']);
             $info['pic'] = $info['indexpic_url'];
             //统一索引图输出格式
         }
         $this->addItem($info);
         $this->output();
     } else {
         $this->errorOutput("更新失败!");
     }
 }
Beispiel #3
0
 public function create()
 {
     if (urldecode($this->input['outlink']) && urldecode($this->input['outlink']) != '请填写超链接!') {
         $content = '';
     } else {
         $check_info = hg_check_content(html_entity_decode($this->input['content']));
         $content = addslashes($this->input['content']);
     }
     if (!(strpos(urldecode($this->input['indexpic']), 'http://') === false)) {
         $this->input['indexpic'] = $this->indexpic_img_local(urldecode($this->input['indexpic']));
     }
     $info = array('title' => $this->input['title'], 'page_title' => $this->input['pagetitles'], 'tcolor' => $this->input['tcolor'], 'isbold' => intval($this->input['isbold']), 'isitalic' => intval($this->input['isitalic']), 'istop' => $this->input['istop'] == 1 ? 1 : 0, 'iscomm' => $this->input['iscomm'] == 1 ? 0 : 1, 'istpl' => $this->input['istpl'] == 1 ? 1 : 0, 'subtitle' => $this->input['subtitle'], 'keywords' => $this->input['keywords'], 'brief' => $this->input['brief'], 'author' => $this->input['author'], 'source' => $this->input['source'], 'indexpic' => intval($this->input['indexpic']), 'outlink' => $this->input['outlink'], 'sort_id' => intval($this->input['sort_id']), 'column_id' => $this->input['column_id'], 'user_id' => intval($this->user['user_id']), 'user_name' => $this->user['user_name'], 'create_time' => TIMENOW, 'update_time' => TIMENOW, 'pub_time' => strtotime($this->input['pub_time']), 'ip' => hg_getip(), 'weight' => intval($this->input['weight']), 'water_id' => $this->input['water_config_id'], 'water_name' => $this->input['water_config_name'], 'is_img' => $check_info['is_img'], 'is_video' => $check_info['is_video'], 'is_tuji' => $check_info['is_tuji'], 'is_vote' => $check_info['is_vote'], 'appid' => intval($this->user['appid']), 'appname' => trim($this->user['appname']));
     $info['column_id'] = $this->publish_column->get_columnname_by_ids('id,name', $info['column_id']);
     $info['column_id'] = serialize($info['column_id']);
     $sql = "INSERT INTO " . DB_PREFIX . "survey SET ";
     $sql_extra = $space = '';
     foreach ($info as $k => $v) {
         if (!empty($v)) {
             switch ($k) {
                 case 'keywords':
                     $sql_extra .= $space . $k . "='" . str_replace(array(",", ",", " "), array(",", ",", ","), $v) . "'";
                     break;
                 default:
                     $sql_extra .= $space . $k . "='" . $v . "'";
                     break;
             }
             $space = ',';
         }
     }
     $sql .= $sql_extra;
     $this->db->query($sql);
     $article_id = $this->db->insert_id();
     $this->input['id'] = $article_id;
     $sql = "UPDATE " . DB_PREFIX . "survey SET order_id = {$article_id} WHERE id = {$article_id}";
     $this->db->query($sql);
     $arr = array();
     //更新素材表
     $material_id = $this->input['material_id'];
     if (!empty($material_id)) {
         $material_history = array();
         if (trim(urldecode($this->input['material_history']))) {
             $material_history = explode(',', urldecode($this->input['material_history']));
         }
         $del_material = array_diff($material_history, $material_id);
         $mid_str = implode(',', $material_id);
         if (!empty($del_material)) {
             $del_material = implode(',', $del_material);
             $this->mater->delMaterialById($del_material, 2);
             //根据素材ID来删除素材信息
             $sql = "DELETE FROM " . DB_PREFIX . "material WHERE material_id IN(" . $del_material . ")";
             $this->db->query($sql);
         }
         $this->mater->updateMaterial($mid_str, $article_id, $info['sort_id']);
         //更新cid,catid
         $sql = "UPDATE " . DB_PREFIX . "material SET cid=" . $article_id . " WHERE material_id IN (" . $mid_str . ")";
         $this->db->query($sql);
     }
     //查询文章所属的所有父级分类
     $sort = $this->getSortByFather($info['sort_id']);
     //入水印关系表
     //		if(!empty($this->input['water_config_id']) && intval($this->input['water_config_id'])!=-1)
     //		{
     $this->mater->insertMaterialWater($sort, $article_id, intval($this->input['water_config_id']));
     //		}
     //内容表
     $sql = "INSERT INTO " . DB_PREFIX . "survey_contentbody(articleid,content) VALUES(" . $article_id . ",'" . $content . "')";
     $this->db->query($sql);
     //放入发布队列
     $sql = "SELECT * FROM " . DB_PREFIX . "survey WHERE id = " . $article_id;
     $r = $this->db->query_first($sql);
     if (intval($r['state']) == 1 && !empty($r['column_id'])) {
         $op = 'insert';
         $this->publish_insert_query($article_id, $op);
     }
     $info['id'] = $article_id;
     return $info;
 }