member_input.class.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. class member_input {
  3. var $modelid;
  4. var $fields;
  5. var $data;
  6. function __construct($modelid) {
  7. $this->db = pc_base::load_model('sitemodel_field_model');
  8. $this->db_pre = $this->db->db_tablepre;
  9. $this->modelid = $modelid;
  10. $this->fields = getcache('model_field_'.$modelid,'model');
  11. //初始化附件类
  12. pc_base::load_sys_class('attachment','',0);
  13. $this->siteid = param::get_cookie('siteid');
  14. $this->attachment = new attachment('content','0',$this->siteid);
  15. }
  16. function get($data) {
  17. $this->data = $data = trim_script($data);
  18. $model_cache = getcache('member_model', 'commons');
  19. $this->db->table_name = $this->db_pre.$model_cache[$this->modelid]['tablename'];
  20. $info = array();
  21. $debar_filed = array('catid','title','style','thumb','status','islink','description');
  22. if(is_array($data)) {
  23. foreach($data as $field=>$value) {
  24. if($data['islink']==1 && !in_array($field,$debar_filed)) continue;
  25. $field = safe_replace($field);
  26. $name = $this->fields[$field]['name'];
  27. $minlength = $this->fields[$field]['minlength'];
  28. $maxlength = $this->fields[$field]['maxlength'];
  29. $pattern = $this->fields[$field]['pattern'];
  30. $errortips = $this->fields[$field]['errortips'];
  31. if(empty($errortips)) $errortips = "$name 不符合要求!";
  32. $length = empty($value) ? 0 : strlen($value);
  33. if($minlength && $length < $minlength && !$isimport) showmessage("$name 不得少于 $minlength 个字符!");
  34. if (!array_key_exists($field, $this->fields)) showmessage('模型中不存在'.$field.'字段');
  35. if($maxlength && $length > $maxlength && !$isimport) {
  36. showmessage("$name 不得超过 $maxlength 个字符!");
  37. } else {
  38. str_cut($value, $maxlength);
  39. }
  40. if($pattern && $length && !preg_match($pattern, $value) && !$isimport) showmessage($errortips);
  41. if($this->fields[$field]['isunique'] && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage("$name 的值不得重复!");
  42. $func = $this->fields[$field]['formtype'];
  43. if(method_exists($this, $func)) $value = $this->$func($field, $value);
  44. $info[$field] = $value;
  45. }
  46. }
  47. return $info;
  48. }
  49. function textarea($field, $value) {
  50. if(!$this->fields[$field]['enablehtml']) $value = strip_tags($value);
  51. return $value;
  52. }
  53. function editor($field, $value) {
  54. $setting = string2array($this->fields[$field]['setting']);
  55. $enablesaveimage = $setting['enablesaveimage'];
  56. $site_setting = string2array($this->site_config['setting']);
  57. $watermark_enable = intval($site_setting['watermark_enable']);
  58. $value = $this->attachment->download('content', $value,$watermark_enable);
  59. return $value;
  60. }
  61. function box($field, $value) {
  62. if($this->fields[$field]['boxtype'] == 'checkbox') {
  63. if(!is_array($value) || empty($value)) return false;
  64. array_shift($value);
  65. $value = ','.implode(',', $value).',';
  66. return $value;
  67. } elseif($this->fields[$field]['boxtype'] == 'multiple') {
  68. if(is_array($value) && count($value)>1) {
  69. $value = ','.implode(',', $value).',';
  70. return $value;
  71. }
  72. } else {
  73. return $value;
  74. }
  75. }
  76. function images($field, $value) {
  77. //取得图片列表
  78. $pictures = $_POST[$field.'_url'];
  79. //取得图片说明
  80. $pictures_alt = isset($_POST[$field.'_alt']) ? $_POST[$field.'_alt'] : array();
  81. $array = $temp = array();
  82. if(!empty($pictures)) {
  83. foreach($pictures as $key=>$pic) {
  84. $temp['url'] = $pic;
  85. $temp['alt'] = str_replace(array('"',"'"),'`',$pictures_alt[$key]);
  86. $array[$key] = $temp;
  87. }
  88. }
  89. $array = array2string($array);
  90. return $array;
  91. }
  92. function datetime($field, $value) {
  93. $setting = string2array($this->fields[$field]['setting']);
  94. if($setting['fieldtype']=='int') {
  95. $value = strtotime($value);
  96. }
  97. return $value;
  98. }
  99. function checkmobile($field, $value) {
  100. return $value;
  101. }
  102. }
  103. ?>