content_input.class.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. class content_input {
  3. var $model_id;
  4. var $fields;
  5. var $model;
  6. var $data;
  7. var $site_config;
  8. function __construct($model_id) {
  9. $this->db_pre = Yii::$app->db->tablePrefix;
  10. $this->model_id = $model_id;
  11. $this->fields = json_decode(Yii::$app->cache->get(CacheId::modelFieldCacheId($model_id)),true);
  12. $this->model = json_decode(Yii::$app->cache->get(CacheId::modelFieldCacheId($model_id)),true);
  13. $this->site_config = json_decode(Yii::$app->cache->get(CacheId::siteConfigCacheId()),true);
  14. }
  15. function get($data,$is_import = 0) {
  16. $identityInfo = Yii::$app->controller->getIdentityInfo();
  17. if(!defined('IN_ADMIN')) $group_id = $identityInfo['group_id'];//获取用户组
  18. else $role_id = $identityInfo['role_id'];
  19. $this->data = $data = trim_script($data);
  20. $info = array();
  21. foreach($data as $field=>$value)
  22. {
  23. if(!isset($this->fields[$field]) || check_in($role_id, $this->fields[$field]['unset_role_ids']) || check_in($group_id, $this->fields[$field]['unset_group_ids'])) continue;
  24. $name = $this->fields[$field]['name'];
  25. $min_length = $this->fields[$field]['min_length'];
  26. $max_length = $this->fields[$field]['max_length'];
  27. $pattern = $this->fields[$field]['pattern'];
  28. $error_tips = $this->fields[$field]['error_tips'];
  29. if(empty($error_tips)) $error_tips = $name.'不符合条件';
  30. $length = empty($value) ? 0 : (is_string($value) ? strlen($value) : count($value));
  31. if($min_length && $length < $min_length) {
  32. if($is_import) {
  33. return false;
  34. } else {
  35. Yii::$app->controller->showMessage(array('class'=>'info', 'message'=>$name.' 不能少于 '.$min_length.'个字符'));
  36. }
  37. }
  38. if($max_length && $length > $max_length) {
  39. if($is_import) {
  40. $value = str_cut($value,0,$max_length,'');
  41. } else {
  42. Yii::$app->controller->showMessage(array('class'=>'info', 'message'=>$name.' 不能多于 '.$max_length.'个字符'));
  43. }
  44. } elseif($max_length) {
  45. $value = str_cut($value,0,$max_length,'');
  46. }
  47. if($pattern && $length && !preg_match($pattern, $value) && !$is_import) Yii::$app->controller->showMessage(array('class'=>'info', 'message'=>$error_tips));
  48. $this->table_name = $this->fields[$field]['is_system'] ? $this->db_pre.$this->model['table_name'] : $this->db_pre.$this->model['table_name'].'_data';
  49. if($this->fields[$field]['is_unique'])
  50. {
  51. //这里要补充判断唯一方法
  52. $exists = (new \yii\db\Query())
  53. ->from($this->table_name)
  54. ->where([$field => $value])
  55. ->count();
  56. if($exists)Yii::$app->controller->showMessage(array('class'=>'info', 'message'=>$name.' 不能重复'));
  57. }
  58. $func = $this->fields[$field]['form_type'];
  59. if(method_exists($this, $func)) $value = $this->$func($field, $value);
  60. if($this->fields[$field]['is_system']) {
  61. $info['system'][$field] = $value;
  62. } else {
  63. $info['model'][$field] = $value;
  64. }
  65. //颜色选择为隐藏域 在这里进行取值
  66. $info['system']['style'] = $_POST['style_color'] ? strip_tags($_POST['style_color']) : '';
  67. if($_POST['style_font_weight']) $info['system']['style'] = $info['system']['style'].';'.strip_tags($_POST['style_font_weight']);
  68. }
  69. return $info;
  70. }
  71. }?>