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(); }
/** * 更新文章内容 * @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("更新失败!"); } }
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; }