Ejemplo n.º 1
0
 /**
  * 根据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();
 }
Ejemplo n.º 2
0
 public function actionUpdate($content_model_id, $id, $page = null)
 {
     $field = ContentModelField::get_field_by_id($id, false);
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (!isset($_POST['Field']) || !is_array($_POST['Field'])) {
             $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);');
             $this->message('保存模型字段信息错误', self::MSG_ERROR, true);
         }
         if ($_POST['Field']['content_model_field_name'] == '') {
             $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);');
             $this->message('字段名称不能为空', self::MSG_ERROR, true);
         }
         /*if($_POST['Field']['content_model_field_identify'] =='') {
         			$this->redirect[] = array(
         				'text' => '',
         				'href' => 'javascript:history.go(-1);',
         			);
         			$this->message('字段标识不能为空', self::MSG_ERROR, true);
         		}
         		
         		if(!preg_match("/^[\w]+$/",$_POST['Field']['content_model_field_identify'])) {
         			$this->redirect[] = array(
         				'text' => '',
         				'href' => 'javascript:history.go(-1);',
         			);
         			$this->message('字段标识只能为英文字母', self::MSG_ERROR, true);
         		}*/
         if (!isset($_POST['Field']['content_model_field_type']) || $_POST['Field']['content_model_field_type'] == '') {
             $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);');
             $this->message('请选择字段数据类型', self::MSG_ERROR, true);
         }
         if (intval($_POST['Field']['content_model_field_max_length']) < 1) {
             $this->redirect[] = array('text' => '', 'href' => 'javascript:history.go(-1);');
             $this->message('字段最大长度格式错误,请填写大于0的数字', self::MSG_ERROR, true);
         }
         /*$content_model_field = ContentModelField::get_field_by_id($id);
         		$sql = "SELECT `content_model_field_identify` FROM {{content_model_fields}}
         				WHERE content_model_field_id<>:content_model_field_id AND `content_model_field_status`<>:content_model_field_status AND content_model_field_identify=:content_model_field_identify  AND `content_model_id`=:content_model_id";
         		$cmd = Yii::app()->db->createCommand($sql);
         		$cmd->bindValue(':content_model_field_id', $id);
         		$cmd->bindValue(':content_model_field_status', ContentModelField::STAT_DELETED);
         		$cmd->bindValue(':content_model_field_identify', $_POST['Field']['content_model_field_identify']);
         		$cmd->bindValue(':content_model_id', $content_model_id);
         		$cmd->execute();
         		
         		if($cmd->queryScalar()) {
         			$this->redirect[] = array(
         				'text' => '',
         				'href' => 'javascript:history.go(-1);',
         			);
         			$this->message('字段标识重复', self::MSG_ERROR, true);
         		}*/
         $flag = Yii::app()->db->createCommand()->update('{{content_model_fields}}', array('content_model_field_name' => $_POST['Field']['content_model_field_name'], 'content_model_field_type' => isset($_POST['Field']['content_model_field_type']) ? intval($_POST['Field']['content_model_field_type']) : 0, 'content_model_field_default' => $_POST['Field']['content_model_field_default'], 'content_model_field_tips' => $_POST['Field']['content_model_field_tips'], 'content_model_field_max_length' => isset($_POST['Field']['content_model_field_max_length']) ? intval($_POST['Field']['content_model_field_max_length']) : 1, 'content_model_field_rank' => !empty($_POST['Field']['content_model_field_rank']) ? intval($_POST['Field']['content_model_field_rank']) : 255, 'content_model_field_lasttime' => $_SERVER['REQUEST_TIME']), 'content_model_field_id=:content_model_field_id', array(':content_model_field_id' => $id));
         //
         if ($flag) {
             //更新缓存
             ContentModelField::update_cache();
             $content_model_identify = ContentModel::get_model_identify_by_id($content_model_id);
             $newfields = array(array('field_name' => $_POST['Field']['content_model_field_name'], 'field_identify' => $field['content_model_field_identify'], 'field_type' => $_POST['Field']['content_model_field_type'], 'field_length' => $_POST['Field']['content_model_field_max_length']));
             if (ContentModel::alter_addons_table($content_model_identify, $newfields)) {
                 //更新附加表成功
             } else {
                 //更新附加表失败
             }
             //记录操作日志
             $user = Yii::app()->user;
             $message = '{user_name}修改内容模型字段({field_name})信息成功';
             $data = array('user_id' => $user->id, 'user_name' => $user->name, 'field_name' => $field['content_model_field_name'], 'data' => array('content_model_field_id' => $id));
             AdminLogs::add($user->id, 'Content/Model/Field', $id, 'Modify', 'success', $message, $data);
         }
         if (!isset($_GET['ajax'])) {
             $this->redirect[] = array('text' => '', 'href' => url($this->module->id . "/Content/Model/{$content_model_id}/Field/Index"));
             $this->message('修改模型字段完成', self::MSG_SUCCESS, true);
         }
     }
     if (empty($field)) {
         $this->redirect[] = array('text' => '', 'href' => url($this->module->id . "/Collect/Model/{$content_model_id}/Field/Index"));
         $this->message('模型字段不存在或已被删除', self::MSG_ERROR, true);
     }
     $this->render('update', array('field' => $field, "content_model_id" => $content_model_id));
 }