国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.6KB

  1. <?php
  2. /**
  3. * 获得字段创建信息
  4. *
  5. * @access public
  6. * @param string $dtype 字段类型
  7. * @param string $fieldname 字段名称
  8. * @param string $dfvalue 默认值
  9. * @param string $mxlen 最大字符长度
  10. * @return array
  11. */
  12. function GetFieldMake($dtype, $fieldname, $dfvalue, $mxlen)
  13. {
  14. $fields = array();
  15. if($dtype == "int" || $dtype == "datetime")
  16. {
  17. if($dfvalue == "" || preg_match("#[^0-9-]#", $dfvalue))
  18. {
  19. $dfvalue = 0;
  20. }
  21. $fields[0] = " `$fieldname` int(11) NOT NULL default '$dfvalue';";
  22. $fields[1] = "int(11)";
  23. }
  24. else if($dtype == "stepselect")
  25. {
  26. if($dfvalue == "" || preg_match("#[^0-9\.-]#", $dfvalue))
  27. {
  28. $dfvalue = 0;
  29. }
  30. $fields[0] = " `$fieldname` char(20) NOT NULL default '$dfvalue';";
  31. $fields[1] = "char(20)";
  32. }
  33. else if($dtype == "float")
  34. {
  35. if($dfvalue == "" || preg_match("#[^0-9\.-]#", $dfvalue))
  36. {
  37. $dfvalue = 0;
  38. }
  39. $fields[0] = " `$fieldname` float NOT NULL default '$dfvalue';";
  40. $fields[1] = "float";
  41. }
  42. else if($dtype == "img" || $dtype == "media" || $dtype == "addon" || $dtype == "imgfile")
  43. {
  44. if(empty($dfvalue)) $dfvalue = '';
  45. if($mxlen=="") $mxlen = 200;
  46. if($mxlen > 255) $mxlen = 100;
  47. $fields[0] = " `$fieldname` varchar($mxlen) NOT NULL default '$dfvalue';";
  48. $fields[1] = "varchar($mxlen)";
  49. }
  50. else if($dtype == "multitext" || $dtype == "htmltext")
  51. {
  52. $fields[0] = " `$fieldname` mediumtext;";
  53. $fields[1] = "mediumtext";
  54. }
  55. else if($dtype=="textdata")
  56. {
  57. if(empty($dfvalue)) $dfvalue = '';
  58. $fields[0] = " `$fieldname` varchar(100) NOT NULL default '';";
  59. $fields[1] = "varchar(100)";
  60. }
  61. else if($dtype=="textchar")
  62. {
  63. if(empty($dfvalue)) $dfvalue = '';
  64. $fields[0] = " `$fieldname` char(100) NOT NULL default '$dfvalue';";
  65. $fields[1] = "char(100)";
  66. }
  67. else if($dtype=="checkbox")
  68. {
  69. $dfvalue = str_replace(',',"','",$dfvalue);
  70. $dfvalue = "'".$dfvalue."'";
  71. $fields[0] = " `$fieldname` SET($dfvalue) NULL;";
  72. $fields[1] = "SET($dfvalue)";
  73. }
  74. else if($dtype=="select" || $dtype=="radio")
  75. {
  76. $dfvalue = str_replace(',', "','", $dfvalue);
  77. $dfvalue = "'".$dfvalue."'";
  78. $fields[0] = " `$fieldname` enum($dfvalue) NULL;";
  79. $fields[1] = "enum($dfvalue)";
  80. }
  81. else
  82. {
  83. if(empty($dfvalue))
  84. {
  85. $dfvalue = '';
  86. }
  87. if(empty($mxlen))
  88. {
  89. $mxlen = 100;
  90. }
  91. if($mxlen > 255)
  92. {
  93. $mxlen = 250;
  94. }
  95. $fields[0] = " `$fieldname` varchar($mxlen) NOT NULL default '$dfvalue';";
  96. $fields[1] = "varchar($mxlen)";
  97. }
  98. return $fields;
  99. }
  100. /**
  101. * 获取模型列表字段
  102. *
  103. * @access public
  104. * @param object $dtp 模板引擎
  105. * @param string $oksetting 设置
  106. * @return array
  107. */
  108. function GetAddFieldList(&$dtp,&$oksetting)
  109. {
  110. $oklist = '';
  111. $dtp->SetNameSpace("field","<",">");
  112. $dtp->LoadSource($oksetting);
  113. if(is_array($dtp->CTags))
  114. {
  115. foreach($dtp->CTags as $tagid=>$ctag)
  116. {
  117. if($ctag->GetAtt('islist')==1)
  118. {
  119. $oklist .= ($oklist=='' ? strtolower($ctag->GetName()) : ','.strtolower($ctag->GetName()) );
  120. }
  121. }
  122. }
  123. return $oklist;
  124. }