/** * 根据content_archives_id获取文档 * @param mixed $content_archives_id 文档编号 * @return string $content_archives 文档 */ public static function get_archive_by_id($content_archives_id, $allow_cache = false) { $content_archives_name = ''; if (!$content_archives_id) { return ''; } //有开启缓存功能,则从缓存中取数据, 如果有数据,则直接返回结果 if ($allow_cache && Yii::app()->cache) { $_cache_key = 'content.archive.row.' . $content_archives_id; $_r = Yii::app()->cache->get($_cache_key); if ($_r && is_array($_r)) { return $_r; } } $cmd = Yii::app()->db->createCommand(); $cmd->select('a.content_archives_id, ac.content_model_id, m.content_model_name, ac.class_id, ac.class_name, a.content_archives_subject, a.content_archives_color, a.content_archives_short_subject, a.content_archives_flag, a.content_archives_jump_url, a.content_archives_source, a.content_archives_author, a.content_archives_thumb, a.content_archives_keywords, a.content_archives_summary, a.content_archives_status, a.content_archives_rank, a.content_archives_pubtime, a.content_archives_lasttime, a.content_archives_dateline')->from('{{content_archives}} a')->join('{{content_archives_classes_relating}} acr', 'acr.content_archives_id=a.content_archives_id')->join('{{content_archives_classes}} ac', 'ac.class_id=acr.class_id')->join('{{content_model}} m', 'm.content_model_id=ac.content_model_id')->where('a.content_archives_id=:content_archives_id', array('content_archives_id' => $content_archives_id)); $_r = $cmd->queryRow(); if ($_r) { //附加表结构 $_r['content_model_colums'] = ContentModel::get_model_table_by_id($_r['content_model_id']); //附加表数据 $content_model_identify = ContentModel::get_model_identify_by_id($_r['content_model_id']); $_sql = "SELECT * FROM {{content_addons{$content_model_identify}}} WHERE content_archives_id=:content_archives_id LIMIT 0, 1"; $cmd = Yii::app()->db->createCommand($_sql); $cmd->bindValue(':content_archives_id', $content_archives_id); $_a_r = $cmd->queryRow(); if (is_array($_a_r)) { // foreach ($_r['content_model_colums'] as $_k => $_v) { if ($_v['content_model_field_type'] == ContentModelField::DATA_TYPE_CHECKBOX) { $_a_r[$_v['content_model_field_identify']] = unserialize($_a_r[$_v['content_model_field_identify']]); } } $_r = array_merge($_r, $_a_r); } unset($_a_r); //自定义属性 $_r['content_archives_flag'] = explode(',', $_r['content_archives_flag']); //文档栏目 $_sql = "SELECT c.*\n\t\t\t\t\tFROM {{content_archives_classes_relating}} cr\n\t\t\t\t\tINNER JOIN {{content_archives_classes}} c ON c.class_id = cr.class_id \n\t\t\t\t\tWHERE cr.content_archives_id=:content_archives_id"; $_r['content_archives_classes'] = Yii::app()->db->createCommand($_sql)->queryAll(true, array(':content_archives_id' => $content_archives_id)); //文档标签 $_sql = "SELECT tags_id, tags_name\n\t\t\t\t\tFROM {{content_archives_tags}}\n\t\t\t\t\tWHERE content_archives_id=:content_archives_id\n\t\t\t\t\tORDER BY tags_id ASC"; $_r['content_archives_tags'] = Yii::app()->db->createCommand($_sql)->queryAll(true, array(':content_archives_id' => $content_archives_id)); } //有开启缓存,则把结果添加到缓存中 if ($allow_cache && Yii::app()->cache) { $_cache_time_out = Setting::getSettingCache('GOODS_ROW_TIME_OUT'); Yii::app()->cache->set($_cache_key, $_r, $_cache_time_out); unset($_cache_time_out, $_cache_key); } return $_r ? $_r : array(); }
public function actionUpdate($id) { $archive = ContentArchives::get_archive_by_id($id, false); //dump($archive);exit; if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (!isset($_POST['Archive']) || !is_array($_POST['Archive'])) { $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);'); $this->message('发布文档信息错误', self::MSG_ERROR, true); } if ($_POST['Archive']['content_archives_subject'] == '') { $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);'); $this->message('文档标题不能为空', self::MSG_ERROR, true); } if (empty($_POST['Archive']['class_id']) || !is_array($_POST['Archive']['class_id'])) { $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);'); $this->message('请至少选择一个文档栏目', self::MSG_ERROR, true); } else { foreach ($_POST['Archive']['class_id'] as $_k => $_v) { if (empty($_v)) { unset($_POST['Archive']['class_id'][$_k]); } } if (empty($_POST['Archive']['class_id'])) { $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);'); $this->message('请至少选择一个文档栏目', self::MSG_ERROR, true); } } /*if($_POST['Archive']['content_archives_body'] =='') { $this->redirect[] = array( 'text' => '', 'href' => 'javascript:history.go(-1);', ); $this->message('文档内容不能为空', self::MSG_ERROR, true); }*/ //自定义属性 if (isset($_POST['Archive']['content_archives_flag']) && is_array($_POST['Archive']['content_archives_flag'])) { $_POST['Archive']['content_archives_flag'] = implode(',', $_POST['Archive']['content_archives_flag']); } else { $_POST['Archive']['content_archives_flag'] = ''; } //发布时间 $pubdate = $_POST['Archive']['content_archives_pubtime'] == '' ? $_SERVER['REQUEST_TIME'] : strtotime($_POST['Archive']['content_archives_pubtime']); $user = Yii::app()->user; $flag = Yii::app()->db->createCommand()->update('{{content_archives}}', array('content_archives_subject' => $_POST['Archive']['content_archives_subject'], 'content_archives_color' => $_POST['Archive']['content_archives_color'], 'content_archives_short_subject' => $_POST['Archive']['content_archives_short_subject'], 'content_archives_flag' => $_POST['Archive']['content_archives_flag'], 'content_archives_jump_url' => $_POST['Archive']['content_archives_jump_url'], 'content_archives_thumb' => $_POST['Archive']['content_archives_thumb'], 'content_archives_source' => $_POST['Archive']['content_archives_source'], 'content_archives_author' => $_POST['Archive']['content_archives_author'], 'content_archives_keywords' => $_POST['Archive']['content_archives_keywords'], 'content_archives_summary' => $_POST['Archive']['content_archives_summary'], 'content_archives_rank' => $_POST['Archive']['content_archives_rank'] ? intval($_POST['Archive']['content_archives_rank']) : 255, 'content_archives_pubtime' => $pubdate, 'content_archives_lasttime' => $_SERVER['REQUEST_TIME'], 'update_user_id' => $user->user_id), 'content_archives_id=:content_archives_id', array(':content_archives_id' => $id)); if ($flag) { $content_archives_name = $_POST['Archive']['content_archives_name']; //文档栏目 $_POST['Archive']['class_id'] = array_unique($_POST['Archive']['class_id']); $_sql_addons = ""; $_params = array(':content_archives_id' => $id); foreach ($_POST['Archive']['class_id'] as $_k => $_v) { $_sql_addons .= $_sql_addons ? " OR class_id=:class_id{$_k}" : "class_id=:class_id{$_k}"; $_params[":class_id{$_k}"] = $_v; } //删除多余栏目 $_sql = "DELETE FROM {{content_archives_classes_relating}} WHERE content_archives_id=:content_archives_id AND NOT ({$_sql_addons})"; Yii::app()->db->createCommand($_sql)->execute($_params); //取出现有栏目 $_sql = "SELECT class_id FROM {{content_archives_classes_relating}} WHERE content_archives_id=:content_archives_id AND ({$_sql_addons})"; $_classes = Yii::app()->db->createCommand($_sql)->queryColumn($_params); //去除已存在库中的栏目 $_classes = array_diff($_POST['Archive']['class_id'], $_classes); //栏目入库 foreach ($_classes as $_k => $_v) { Yii::app()->db->createCommand()->insert('{{content_archives_classes_relating}}', array('content_archives_id' => $id, 'class_id' => $_v)); } //标签处理 $_sql_addons = ""; $_params = array(':content_archives_id' => $id); $content_archives_tags = preg_split('/[,|,]/', $_POST['Archive']['content_archives_tags']); foreach ($content_archives_tags as $_k => $_v) { $_sql_addons .= $_sql_addons ? " OR tags_name=:tags_name{$_k}" : "tags_name=:tags_name{$_k}"; $_params[":tags_name{$_k}"] = $_v; } //删除多余栏目 $_sql = "DELETE FROM {{content_archives_tags}} WHERE content_archives_id=:content_archives_id AND NOT ({$_sql_addons})"; Yii::app()->db->createCommand($_sql)->execute($_params); //取出现有栏目 $_sql = "SELECT tags_name FROM {{content_archives_tags}} WHERE content_archives_id=:content_archives_id AND ({$_sql_addons})"; $_tags = Yii::app()->db->createCommand($_sql)->queryColumn($_params); //去除已存在库中的栏目 $_tags = array_diff($content_archives_tags, $_tags); //栏目入库 foreach ($_tags as $_k => $_v) { Yii::app()->db->createCommand()->insert('{{content_archives_tags}}', array('content_archives_id' => $id, 'tags_name' => $_v)); } //缩略图 //附加表信息 $_model = ContentModel::get_model_by_id($archive['content_model_id']); $_columns = ContentModel::get_model_table_by_id($_model['content_model_id']); $_table_name = "{{content_addons{$_model['content_model_identify']}}}"; $data = array(); foreach ($_columns as $_k => $_v) { if ($_v['content_model_field_type'] == ContentModelField::DATA_TYPE_CHECKBOX) { $data[$_v['content_model_field_identify']] = serialize($_POST['Archive'][$_v['content_model_field_identify']]); } else { $data[$_v['content_model_field_identify']] = $_POST['Archive'][$_v['content_model_field_identify']]; } } Yii::app()->db->createCommand()->update($_table_name, $data, 'content_archives_id=:content_archives_id', array(':content_archives_id' => $id)); //删除缓存 if (Yii::app()->cache) { Yii::app()->cache->delete("content.archive.row.{$id}"); } //记录操作日志 $message = '{user_name}修改了文档({archive_subject})信息'; $data = array('user_id' => $user->id, 'user_name' => $user->name, 'archive_subject' => $content_archives_name, 'data' => array('content_archives_id' => $id)); AdminLogs::add($user->id, 'Content/Archive', $id, 'Modify', 'success', $message, $data); if (!isset($_GET['ajax'])) { $this->redirect[] = array('text' => '', 'href' => $this->forward ? $this->forward : url($this->module->id . '/Content/Archives/Index')); $this->message('保存文档成功', self::MSG_SUCCESS, true); } } else { //记录操作日志 $user = Yii::app()->user; $message = '{user_name}修改文档({archive_subject})信息失败'; $data = array('user_id' => $user->id, 'user_name' => $user->name, 'archive_subject' => $content_archives_name, 'data' => array('server' => $_POST['Archive'])); AdminLogs::add($user->id, 'Content/Archive', $id, 'Modify', 'failure', $message, $data); $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);'); $this->message('保存文档信息失败', self::MSG_ERROR, true); } } if (empty($archive)) { $this->redirect[] = array('text' => '', 'href' => $_SERVER['HTTP_REFERER']); $this->message('文档不存在或已被删除', self::MSG_ERROR, true); } $archive['content_archives_pubtime'] = date('Y-m-d H:i:00', $archive['content_archives_pubtime']); $_model = ContentModel::get_model_by_id($archive['content_model_id']); $_edit_template = $_model['content_model_edit_template'] ? $_model['content_model_edit_template'] : 'default'; $this->render("_{$_edit_template}_update", array('_edit_template' => $_edit_template, 'archive' => $archive, 'classes' => ContentArchivesClass::get_classes_by_cache())); }