From 6aea22ad27aaf21c7eec5eb110d7bda99b1ba612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E6=B6=A9=E6=B6=A9=E7=9A=84?= Date: Wed, 14 Sep 2016 00:14:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=8D=E9=80=89=E6=A1=86?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=96=B0=E5=A2=9E=E5=92=8C=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/common/model/Document.php | 274 +++++++++++++------------- 1 file changed, 142 insertions(+), 132 deletions(-) diff --git a/application/common/model/Document.php b/application/common/model/Document.php index 4b8d80dd..d825321c 100644 --- a/application/common/model/Document.php +++ b/application/common/model/Document.php @@ -1,133 +1,143 @@ - -// +---------------------------------------------------------------------- - -namespace app\common\model; - -/** -* 设置模型 -*/ -class Document extends \think\model\Merge{ - - protected $fk = 'doc_id'; - //protected static $relationModel = array('document_article'); - - // 定义需要自动写入时间戳格式的字段 - protected $autoWriteTimestamp = array('create_time','update_time','deadline'); - - protected $auto = array('doc_id', 'title', 'description', 'update_time','deadline'); - protected $insert = array('uid', 'attach'=>0, 'view'=>0, 'comment'=>0, 'extend'=>0, 'create_time', 'status'); - - protected $type = array( - 'cover_id' => 'integer', - 'link_id' => 'integer', - 'level' => 'integer', - 'comment' => 'integer', - 'view' => 'integer', - ); - - protected function setUidAttr(){ - return session('user_auth.uid'); - } - - protected function setDocIdAttr(){ - return input('id','','intval,trim'); - } - - protected function setDeadlineAttr($value){ - return $value ? strtotime($value) : time(); - } - - protected function setCreateTimeAttr($value){ - return $value ? strtotime($value) : time(); - } - - /** - * 获取数据状态 - * @return integer 数据状态 - * @author huajie - */ - protected function setStatusAttr($value){ - $cate = input('post.category_id'); - $check = db('Category')->getFieldById($cate, 'check'); - if($check){ - $status = 2; - }else{ - $status = 1; - } - return $status; - } - - protected function getTagsAttr($value){ - if ($value) { - return explode(',', $value); - } - } - - public function extend($name){ - if (is_numeric($name)) { - $name = db('model')->where(array('id'=>$name))->value('name'); - } - self::$relationModel = array('document_' . $name); - return $this; - } - - public function change(){ - /* 获取数据对象 */ - $data = \think\Request::instance()->post(); - - if ($data !== false) { - /* 添加或新增基础内容 */ - if(empty($data['id'])){ //新增数据 - unset($data['id']); - $id = $this->validate('document.edit')->save($data); //添加基础内容 - - if(!$id){ - return false; - } - $data['id'] = $id; - } else { //更新数据 - $status = $this->validate('document.edit')->save($data, array('id'=>$data['id'])); //更新基础内容 - if(false === $status){ - return false; - } - } - return $data['id']; - }else{ - return false; - } - } - - public function del($map){ - return $this->where($map)->delete(); - } - - public function detail($id){ - $data = $this->get($id); - - return $data; - } - - public function recom($id, $field = '*', $limit = 10, $order = 'id desc'){ - $tag = $this->where(array('id'=>$id))->value('tags'); - $map = ''; - if ($tag) { - $tags = explode(',', $tag); - foreach ($tags as $item) { - $where[] = 'tags LIKE "%' . $item . '%"'; - } - $map = implode(' OR ', $where); - } - $list = $this->where($map)->field($field)->limit($limit)->order($order)->select(); - if (empty($list)) { - return $list; - }else{ - return $this->field($field)->limit($limit)->order($order)->select(); - } - } + +// +---------------------------------------------------------------------- + +namespace app\common\model; + +/** +* 设置模型 +*/ +class Document extends \think\model\Merge{ + + protected $fk = 'doc_id'; + //protected static $relationModel = array('document_article'); + + // 定义需要自动写入时间戳格式的字段 + protected $autoWriteTimestamp = array('create_time','update_time','deadline'); + + protected $auto = array('doc_id', 'title', 'description', 'update_time','deadline'); + protected $insert = array('uid', 'attach'=>0, 'view'=>0, 'comment'=>0, 'extend'=>0, 'create_time', 'status'); + + protected $type = array( + 'cover_id' => 'integer', + 'link_id' => 'integer', + 'level' => 'integer', + 'comment' => 'integer', + 'view' => 'integer', + ); + + protected function setUidAttr(){ + return session('user_auth.uid'); + } + + protected function setDocIdAttr(){ + return input('id','','intval,trim'); + } + + protected function setDeadlineAttr($value){ + return $value ? strtotime($value) : time(); + } + + protected function setCreateTimeAttr($value){ + return $value ? strtotime($value) : time(); + } + + /** + * 获取数据状态 + * @return integer 数据状态 + * @author huajie + */ + protected function setStatusAttr($value){ + $cate = input('post.category_id'); + $check = db('Category')->getFieldById($cate, 'check'); + if($check){ + $status = 2; + }else{ + $status = 1; + } + return $status; + } + + protected function getTagsAttr($value){ + if ($value) { + return explode(',', $value); + } + } + + public function extend($name){ + if (is_numeric($name)) { + $name = db('model')->where(array('id'=>$name))->value('name'); + } + self::$relationModel = array('document_' . $name); + return $this; + } + + public function change(){ + /* 获取数据对象 */ + $data = \think\Request::instance()->post(); + + if ($data !== false) { + //增加增加复选框 shu'zu数组保存 + foreach($data ad $key=>$val){ + if(is_array($val)){ + $data[$key] = implode(',', $val); + } + } + /* 添加或新增基础内容 */ + if(empty($data['id'])){ //新增数据 + unset($data['id']); + $id = $this->validate('document.edit')->save($data); //添加基础内容 + + if(!$id){ + return false; + } + $data['id'] = $id; + } else { //更新数据 + $status = $this->validate('document.edit')->save($data, array('id'=>$data['id'])); //更新基础内容 + if(false === $status){ + return false; + } + } + return $data['id']; + }else{ + return false; + } + } + + public function del($map){ + return $this->where($map)->delete(); + } + + public function detail($id){ + $data = $this->get($id); + $model_type = db('attribute')->where('model_id'=>$data['model_id'], 'type'=>array('in', 'checkbox'))->column('name'); + foreach($model_type as $val){ + $data->setAttr($val, explode(',', $data[$val])); + } + + return $data; + } + + public function recom($id, $field = '*', $limit = 10, $order = 'id desc'){ + $tag = $this->where(array('id'=>$id))->value('tags'); + $map = ''; + if ($tag) { + $tags = explode(',', $tag); + foreach ($tags as $item) { + $where[] = 'tags LIKE "%' . $item . '%"'; + } + $map = implode(' OR ', $where); + } + $list = $this->where($map)->field($field)->limit($limit)->order($order)->select(); + if (empty($list)) { + return $list; + }else{ + return $this->field($field)->limit($limit)->order($order)->select(); + } + } } \ No newline at end of file