国内流行的内容管理系统(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=="relation") {
  62. if(empty($dfvalue)) $dfvalue = '';
  63. $fields[0] = " `$fieldname` TEXT NOT NULL default '$dfvalue';";
  64. $fields[1] = "TEXT";
  65. }
  66. else if($dtype=="textchar")
  67. {
  68. if(empty($dfvalue)) $dfvalue = '';
  69. $fields[0] = " `$fieldname` char(100) NOT NULL default '$dfvalue';";
  70. $fields[1] = "char(100)";
  71. }
  72. else if($dtype=="checkbox")
  73. {
  74. $dfvalue = str_replace(',',"','",$dfvalue);
  75. $dfvalue = "'".$dfvalue."'";
  76. $fields[0] = " `$fieldname` SET($dfvalue) NULL;";
  77. $fields[1] = "SET($dfvalue)";
  78. }
  79. else if($dtype=="select" || $dtype=="radio")
  80. {
  81. $dfvalue = str_replace(',', "','", $dfvalue);
  82. $dfvalue = "'".$dfvalue."'";
  83. $fields[0] = " `$fieldname` enum($dfvalue) NULL;";
  84. $fields[1] = "enum($dfvalue)";
  85. } else {
  86. if(empty($dfvalue))
  87. {
  88. $dfvalue = '';
  89. }
  90. if(empty($mxlen))
  91. {
  92. $mxlen = 100;
  93. }
  94. if($mxlen > 255)
  95. {
  96. $mxlen = 250;
  97. }
  98. $fields[0] = " `$fieldname` varchar($mxlen) NOT NULL default '$dfvalue';";
  99. $fields[1] = "varchar($mxlen)";
  100. }
  101. return $fields;
  102. }
  103. /**
  104. * 获取模型列表字段
  105. *
  106. * @access public
  107. * @param object $dtp 模板引擎
  108. * @param string $oksetting 设置
  109. * @return array
  110. */
  111. function GetAddFieldList(&$dtp,&$oksetting)
  112. {
  113. $oklist = '';
  114. $dtp->SetNameSpace("field","<",">");
  115. $dtp->LoadSource($oksetting);
  116. if(is_array($dtp->CTags))
  117. {
  118. foreach($dtp->CTags as $tagid=>$ctag)
  119. {
  120. if($ctag->GetAtt('islist')==1)
  121. {
  122. $oklist .= ($oklist=='' ? strtolower($ctag->GetName()) : ','.strtolower($ctag->GetName()) );
  123. }
  124. }
  125. }
  126. return $oklist;
  127. }