| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: 老猫 <thinkcmf@126.com>
 
- // +----------------------------------------------------------------------
 
- namespace app\portal\model;
 
- use app\admin\model\RouteModel;
 
- use think\db\Query;
 
- use think\Model;
 
- use tree\Tree;
 
- class PortalCategoryModel extends Model
 
- {
 
-     protected $type = [
 
-         'more' => 'array',
 
-     ];
 
-     /**
 
-      * 生成分类 select树形结构
 
-      * @param int $selectId   需要选中的分类 id
 
-      * @param int $currentCid 需要隐藏的分类 id
 
-      * @return string
 
-      * @throws \think\db\exception\DataNotFoundException
 
-      * @throws \think\db\exception\ModelNotFoundException
 
-      * @throws \think\exception\DbException
 
-      */
 
-     public function adminCategoryTree($selectId = 0, $currentCid = 0)
 
-     {
 
-         $categories = $this->order("list_order ASC")
 
-             ->where('delete_time', 0)
 
-             ->where(function (Query $query) use ($currentCid) {
 
-                 if (!empty($currentCid)) {
 
-                     $query->where('id', 'neq', $currentCid);
 
-                 }
 
-             })
 
-             ->select()->toArray();
 
-         $tree       = new Tree();
 
-         $tree->icon = ['  │', '  ├─', '  └─'];
 
-         $tree->nbsp = '  ';
 
-         $newCategories = [];
 
-         foreach ($categories as $item) {
 
-             $item['selected'] = $selectId == $item['id'] ? "selected" : "";
 
-             array_push($newCategories, $item);
 
-         }
 
-         $tree->init($newCategories);
 
-         $str     = '<option value=\"{$id}\" {$selected}>{$spacer}{$name}</option>';
 
-         $treeStr = $tree->getTree(0, $str);
 
-         return $treeStr;
 
-     }
 
-     /**
 
-      * 分类树形结构
 
-      * @param int    $currentIds
 
-      * @param string $tpl
 
-      * @return string
 
-      * @throws \think\db\exception\DataNotFoundException
 
-      * @throws \think\db\exception\ModelNotFoundException
 
-      * @throws \think\exception\DbException
 
-      */
 
-     public function adminCategoryTableTree($currentIds = 0, $tpl = '')
 
-     {
 
- //        if (!empty($currentCid)) {
 
- //            $where['id'] = ['neq', $currentCid];
 
- //        }
 
-         $categories = $this->order("list_order ASC")->where('delete_time', 0)->select()->toArray();
 
-         $tree       = new Tree();
 
-         $tree->icon = ['  │', '  ├─', '  └─'];
 
-         $tree->nbsp = '  ';
 
-         if (!is_array($currentIds)) {
 
-             $currentIds = [$currentIds];
 
-         }
 
-         $newCategories = [];
 
-         foreach ($categories as $item) {
 
-             $item['parent_id_node'] = ($item['parent_id']) ? ' class="child-of-node-' . $item['parent_id'] . '"' : '';
 
-             $item['style']          = empty($item['parent_id']) ? '' : 'display:none;';
 
-             $item['status_text']    = empty($item['status']) ? '<span class="label label-warning">隐藏</span>' : '<span class="label label-success">显示</span>';
 
-             $item['checked']        = in_array($item['id'], $currentIds) ? "checked" : "";
 
-             $item['url']            = cmf_url('portal/List/index', ['id' => $item['id']]);
 
-             $item['str_action']     = '<a class="btn btn-xs btn-primary" href="' . url("AdminCategory/add", ["parent" => $item['id']]) . '">添加子分类</a>  <a class="btn btn-xs btn-primary" href="' . url("AdminCategory/edit", ["id" => $item['id']]) . '">' . lang('EDIT') . '</a>  <a class="btn btn-xs btn-danger js-ajax-delete" href="' . url("AdminCategory/delete", ["id" => $item['id']]) . '">' . lang('DELETE') . '</a> ';
 
-             if ($item['status']) {
 
-                 $item['str_action'] .= '<a class="btn btn-xs btn-warning js-ajax-dialog-btn" data-msg="您确定隐藏此分类吗" href="' . url('AdminCategory/toggle', ['ids' => $item['id'], 'hide' => 1]) . '">隐藏</a>';
 
-             } else {
 
-                 $item['str_action'] .= '<a class="btn btn-xs btn-success js-ajax-dialog-btn" data-msg="您确定显示此分类吗" href="' . url('AdminCategory/toggle', ['ids' => $item['id'], 'display' => 1]) . '">显示</a>';
 
-             }
 
-             array_push($newCategories, $item);
 
-         }
 
-         $tree->init($newCategories);
 
-         if (empty($tpl)) {
 
-             $tpl = " <tr id='node-\$id' \$parent_id_node style='\$style' data-parent_id='\$parent_id' data-id='\$id'>
 
-                         <td style='padding-left:20px;'><input type='checkbox' class='js-check' data-yid='js-check-y' data-xid='js-check-x' name='ids[]' value='\$id' data-parent_id='\$parent_id' data-id='\$id'></td>
 
-                         <td><input name='list_orders[\$id]' type='text' size='3' value='\$list_order' class='input-order'></td>
 
-                         <td>\$id</td>
 
-                         <td>\$spacer <a href='\$url' target='_blank'>\$name</a></td>
 
-                         <td>\$description</td>
 
-                         <td>\$status_text</td>
 
-                         <td>\$str_action</td>
 
-                     </tr>";
 
-         }
 
-         $treeStr = $tree->getTree(0, $tpl);
 
-         return $treeStr;
 
-     }
 
-     /**
 
-      * 添加文章分类
 
-      * @param $data
 
-      * @return bool
 
-      */
 
-     public function addCategory($data)
 
-     {
 
-         $result = true;
 
-         self::startTrans();
 
-         try {
 
-             if (!empty($data['more']['thumbnail'])) {
 
-                 $data['more']['thumbnail'] = cmf_asset_relative_url($data['more']['thumbnail']);
 
-             }
 
-             $this->allowField(true)->save($data);
 
-             $id = $this->id;
 
-             if (empty($data['parent_id'])) {
 
-                 $this->where('id', $id)->update(['path' => '0-' . $id]);
 
-             } else {
 
-                 $parentPath = $this->where('id', intval($data['parent_id']))->value('path');
 
-                 $this->where('id', $id)->update(['path' => "$parentPath-$id"]);
 
-             }
 
-             self::commit();
 
-         } catch (\Exception $e) {
 
-             self::rollback();
 
-             $result = false;
 
-         }
 
-         if ($result != false) {
 
-             //设置别名
 
-             $routeModel = new RouteModel();
 
-             if (!empty($data['alias']) && !empty($id)) {
 
-                 $routeModel->setRoute($data['alias'], 'portal/List/index', ['id' => $id], 2, 5000);
 
-                 $routeModel->setRoute($data['alias'] . '/:id', 'portal/Article/index', ['cid' => $id], 2, 4999);
 
-             }
 
-             $routeModel->getRoutes(true);
 
-         }
 
-         return $result;
 
-     }
 
-     public function editCategory($data)
 
-     {
 
-         $result = true;
 
-         $id          = intval($data['id']);
 
-         $parentId    = intval($data['parent_id']);
 
-         $oldCategory = $this->where('id', $id)->find();
 
-         if (empty($parentId)) {
 
-             $newPath = '0-' . $id;
 
-         } else {
 
-             $parentPath = $this->where('id', intval($data['parent_id']))->value('path');
 
-             if ($parentPath === false) {
 
-                 $newPath = false;
 
-             } else {
 
-                 $newPath = "$parentPath-$id";
 
-             }
 
-         }
 
-         if (empty($oldCategory) || empty($newPath)) {
 
-             $result = false;
 
-         } else {
 
-             $data['path'] = $newPath;
 
-             if (!empty($data['more']['thumbnail'])) {
 
-                 $data['more']['thumbnail'] = cmf_asset_relative_url($data['more']['thumbnail']);
 
-             }
 
-             $this->isUpdate(true)->allowField(true)->save($data, ['id' => $id]);
 
-             $children = $this->field('id,path')->where('path', 'like', $oldCategory['path'] . "-%")->select();
 
-             if (!$children->isEmpty()) {
 
-                 foreach ($children as $child) {
 
-                     $childPath = str_replace($oldCategory['path'] . '-', $newPath . '-', $child['path']);
 
-                     $this->where('id', $child['id'])->update(['path' => $childPath], ['id' => $child['id']]);
 
-                 }
 
-             }
 
-             $routeModel = new RouteModel();
 
-             if (!empty($data['alias'])) {
 
-                 $routeModel->setRoute($data['alias'], 'portal/List/index', ['id' => $data['id']], 2, 5000);
 
-                 $routeModel->setRoute($data['alias'] . '/:id', 'portal/Article/index', ['cid' => $data['id']], 2, 4999);
 
-             } else {
 
-                 $routeModel->deleteRoute('portal/List/index', ['id' => $data['id']]);
 
-                 $routeModel->deleteRoute('portal/Article/index', ['cid' => $data['id']]);
 
-             }
 
-             $routeModel->getRoutes(true);
 
-         }
 
-         return $result;
 
-     }
 
- }
 
 
  |