content_input.class.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. class content_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. $this->site_config = getcache('sitelist','commons');
  16. $this->site_config = $this->site_config[$this->siteid];
  17. }
  18. function get($data,$isimport = 0) {
  19. //$this->data = $data = trim_script($data);
  20. $this->data = $data;
  21. $info = array();
  22. foreach($data as $field=>$value) {
  23. if(!isset($this->fields[$field]) && !check_in($field,'paytype,paginationtype,maxcharperpage,id')) continue;
  24. if(defined('IN_ADMIN')) {
  25. if(check_in($_SESSION['roleid'], $this->fields[$field]['unsetroleids'])) continue;
  26. } else {
  27. $_groupid = param::get_cookie('_groupid');
  28. if(check_in($_groupid, $this->fields[$field]['unsetgroupids'])) continue;
  29. }
  30. $name = $this->fields[$field]['name'];
  31. $minlength = $this->fields[$field]['minlength'];
  32. $maxlength = $this->fields[$field]['maxlength'];
  33. $pattern = $this->fields[$field]['pattern'];
  34. $errortips = $this->fields[$field]['errortips'];
  35. if(empty($errortips)) $errortips = $name.' '.L('not_meet_the_conditions');
  36. $length = empty($value) ? 0 : (is_string($value) ? strlen($value) : count($value));
  37. if($minlength && $length < $minlength) {
  38. if($isimport) {
  39. return false;
  40. } else {
  41. showmessage($name.' '.L('not_less_than').' '.$minlength.L('characters'));
  42. }
  43. }
  44. if($maxlength && $length > $maxlength) {
  45. if($isimport) {
  46. $value = str_cut($value,$maxlength,'');
  47. } else {
  48. showmessage($name.' '.L('not_more_than').' '.$maxlength.L('characters'));
  49. }
  50. } elseif($maxlength) {
  51. $value = str_cut($value,$maxlength,'');
  52. }
  53. if($pattern && $length && !preg_match($pattern, $value) && !$isimport) showmessage($errortips);
  54. $MODEL = getcache('model', 'commons');
  55. $this->db->table_name = $this->fields[$field]['issystem'] ? $this->db_pre.$MODEL[$this->modelid]['tablename'] : $this->db_pre.$MODEL[$this->modelid]['tablename'].'_data';
  56. if($this->fields[$field]['isunique'] && $this->db->get_one(array($field=>$value),$field) && ROUTE_A != 'edit') showmessage($name.L('the_value_must_not_repeat'));
  57. $func = $this->fields[$field]['formtype'];
  58. if(method_exists($this, $func)) $value = $this->$func($field, $value);
  59. if($this->fields[$field]['issystem']) {
  60. $info['system'][$field] = $value;
  61. } else {
  62. $info['model'][$field] = $value;
  63. }
  64. //颜色选择为隐藏域 在这里进行取值
  65. $info['system']['style'] = $_POST['style_color'] && preg_match('/^#([0-9a-z]+)/i', $_POST['style_color']) ? $_POST['style_color'] : '';
  66. if($_POST['style_font_weight']=='bold') $info['system']['style'] = $info['system']['style'].';'.strip_tags($_POST['style_font_weight']);
  67. }
  68. return $info;
  69. }
  70. }?>