content_form.class.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. use app\common\components\CacheId;
  3. use app\common\components\FormElements;
  4. use app\common\widget\UeditorWidget;
  5. use app\common\widget\LinkmenuWidget;
  6. use app\modules\cms\models\PositionData;
  7. use app\modules\cms\models\Category;
  8. use app\modules\cms\models\CategoryConfig;
  9. use app\modules\admin\models\Sysconfig;
  10. use app\models\Linkmenu;
  11. use app\common\models\EActiveRecord;
  12. class content_form {
  13. var $model_id;
  14. var $fields;
  15. var $id;
  16. var $formValidator;
  17. var $extTypeList;
  18. var $url;
  19. var $data;
  20. function __construct($model_id,$cat_id = 0,$categorys = array()) {
  21. $this->model_id = $model_id;
  22. $this->cat_id = $cat_id;
  23. $this->categorys = $categorys;
  24. $this->catTits = Category::getTits($cat_id);
  25. $arr_parent_ids = $this->categorys[$cat_id]['arr_parent_ids'];
  26. if(!empty($arr_parent_ids))
  27. {
  28. $extResult = CategoryConfig::find()->where("cat_id=".$this->cat_id." or cat_id in(".trim($arr_parent_ids,',').")")->orderBy(['cat_id'=>SORT_ASC,'list_order'=>SORT_ASC])->limit(5)->asArray()->all();
  29. }
  30. else
  31. {
  32. $extResult = CategoryConfig::find()->where("cat_id=".$this->cat_id)->orderBy(['cat_id'=>SORT_ASC,'list_order'=>SORT_ASC])->limit(5)->asArray()->all();
  33. }
  34. if(is_array($extResult))foreach($extResult as $k=>$tmpResult)
  35. {
  36. $tmpResult['var_name']= 'ext_type_'.($k+1);
  37. $this->extTypeList[$tmpResult['var_name']] = $tmpResult;
  38. }
  39. $this->fields = json_decode(Yii::$app->cache->get(CacheId::modelFieldCacheId($model_id)),true);
  40. foreach($this->fields as $k=>$field)
  41. {
  42. if(!empty($this->extTypeList))foreach($this->extTypeList as $extType)
  43. {
  44. if($k==$extType['var_name'])
  45. {
  46. $this->fields[$k]['tips'] = $extType['name'];
  47. $this->fields[$k]['name'] = $extType['bak'];
  48. }
  49. }
  50. }
  51. }
  52. function get($data = array()) {
  53. $identityInfo = Yii::$app->controller->getIdentityInfo();
  54. //获取用户组或角色
  55. if(!defined('IN_ADMIN')) $group_id = $identityInfo['group_id'];
  56. else $role_id = $identityInfo['role_id'];
  57. $this->data = $data;
  58. if(isset($data['id'])) $this->id = $data['id'];
  59. $this->url = isset($data['url'])?$data['url']:'';//跳转链接
  60. $info = array();
  61. if(is_array($this->fields))foreach($this->fields as $field=>$v) {
  62. if(defined('IN_ADMIN')) {
  63. if($v['is_core'] || check_rights($role_id, $v['unset_role_ids'])) continue;
  64. } else {
  65. if($v['is_core'] || !$v['is_add'] || check_rights($group_id, $v['unset_group_ids'])) continue;
  66. }
  67. $func = $v['form_type'];
  68. $value = isset($data[$field]) ? htmlspecialchars($data[$field], ENT_QUOTES) : '';
  69. if($func=='pages' && isset($data['maxchar_perpage'])) {
  70. $value = $data['pagination_type'].'|'.$data['maxchar_perpage'];
  71. }
  72. if(!method_exists($this, $func)) continue;
  73. if($func!='box'&&$func!='author'&&$func!='cat_id'&&$func!='copy_from'&&$func!='datetime'&&$func!='downfiles'&&$func!='editor'&&$func!='ext_type'&&$func!='group_id'&&$func!='image'&&$func!='images'&&$func!='is_link'&&$func!='keywords'&&$func!='linkmenu'&&$func!='map'&&$func!='number'&&$func!='pages'&&$func!='pos_id'&&$func!='read_price'&&$func!='sysconfig'&&$func!='text'&&$func!='textarea'&&$func!='title'&&$func!='type_id')continue;
  74. $form = $this->$func($field, $value, $v);
  75. //star 1:必填
  76. if($form !== false) {
  77. if(defined('IN_ADMIN')) {
  78. if($v['is_base']) {
  79. $star = $v['min_length'] || $v['pattern'] ? 1 : 0;
  80. $info['base'][$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'is_omnipotent'=>$v['is_omnipotent'],'form_type'=>$v['form_type'],'is_add_admin'=>$v['is_add_admin']);
  81. } else {
  82. $star = $v['min_length'] || $v['pattern'] ? 1 : 0;
  83. $info['senior'][$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'is_omnipotent'=>$v['is_omnipotent'],'form_type'=>$v['form_type'],'is_add_admin'=>$v['is_add_admin']);
  84. }
  85. } else {
  86. $star = $v['min_length'] || $v['pattern'] ? 1 : 0;
  87. $info[$field] = array('name'=>$v['name'], 'tips'=>$v['tips'], 'form'=>$form, 'star'=>$star,'is_omnipotent'=>$v['is_omnipotent'],'form_type'=>$v['form_type'],'is_add'=>$v['is_add']);
  88. }
  89. }
  90. }
  91. return $info;
  92. }
  93. }?>