国内流行的内容管理系统(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.

331 lines
16KB

  1. <?php
  2. /**
  3. * 模型解析相关函数
  4. *
  5. * @version $id:inc_archives_all.php 9:56 2010年7月21日 tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. /**
  12. * 获得一个附加表单
  13. *
  14. * @access public
  15. * @param object $ctag ctag
  16. * @return string
  17. */
  18. function GetFormItem($ctag)
  19. {
  20. $fieldname = $ctag->GetName();
  21. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  22. <tr>
  23. <td width=\"80\">~name~</td>
  24. <td width=\"720\">~form~</td>
  25. </tr>
  26. </table>\r\n";
  27. $innertext = trim($ctag->GetInnerText());
  28. if ($innertext != "") {
  29. if ($ctag->GetAtt("type") == 'select') {
  30. $myformItem = '';
  31. $items = explode(',', $innertext);
  32. $myformItem = "<select name='$fieldname' class='biz-input-sm'>";
  33. foreach ($items as $v) {
  34. $v = trim($v);
  35. if ($v != '') {
  36. $myformItem .= "<option value='$v'>$v</option>\r\n";
  37. }
  38. }
  39. $myformItem .= "</select>\r\n";
  40. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  41. $formitem = str_replace("~form~", $myformItem, $formitem);
  42. return $formitem;
  43. } else if ($ctag->GetAtt("type") == 'radio') {
  44. $myformItem = '';
  45. $items = explode(',', $innertext);
  46. foreach ($items as $v) {
  47. $v = trim($v);
  48. $i = 0;
  49. if ($v != '') {
  50. if ($i == 0) {
  51. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v' checked> $v</label>\r\n";
  52. } else {
  53. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v'> $v</label>\r\n";
  54. }
  55. }
  56. }
  57. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  58. $formitem = str_replace("~form~", $myformItem, $formitem);
  59. return $formitem;
  60. } else {
  61. $formitem = str_replace('~name~', $ctag->GetAtt('itemname'), $formitem);
  62. $formitem = str_replace('~form~', $innertext, $formitem);
  63. $formitem = str_replace('@value', '', $formitem);
  64. return $formitem;
  65. }
  66. }
  67. if ($ctag->GetAtt("type") == "htmltext" || $ctag->GetAtt("type") == "textdata") {
  68. $formitem = "";
  69. $formitem .= "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"80\">".$ctag->GetAtt('itemname')."</td><td>";
  70. $formitem .= GetEditor($fieldname, '', 350, 'Basic', 'string');
  71. $formitem .= "</td></tr></table>\r\n";
  72. return $formitem;
  73. } else if ($ctag->GetAtt("type") == "multitext") {
  74. $innertext = "<textarea name='$fieldname' id='$fieldname' class='biz-textarea-sm'></textarea>\r\n";
  75. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  76. $formitem = str_replace("~form~", $innertext, $formitem);
  77. return $formitem;
  78. } else if ($ctag->GetAtt("type") == "datetime") {
  79. $nowtime = GetDateTimeMk(time());
  80. $innertext = "<input name=\"$fieldname\" value=\"$nowtime\" type=\"text\" id=\"$fieldname\" class=\"biz-input-md\">";
  81. $innertext .= "<input name=\"selPubtime\" type=\"button\" id=\"selkeyword\" value=\"选择\" onClick=\"showCalendar('$fieldname', 'Y-m-d H:i:00', '24');\">";
  82. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  83. $formitem = str_replace("~form~", $innertext, $formitem);
  84. return $formitem;
  85. } else if ($ctag->GetAtt("type") == "img") {
  86. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectImage('form1.$fieldname','big')\">\r\n";
  87. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  88. $formitem = str_replace("~form~", $innertext, $formitem);
  89. return $formitem;
  90. } else if ($ctag->GetAtt("type") == "media") {
  91. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectMedia('form1.$fieldname')\">\r\n";
  92. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  93. $formitem = str_replace("~form~", $innertext, $formitem);
  94. return $formitem;
  95. } else if ($ctag->GetAtt("type") == "addon") {
  96. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectSoft('form1.$fieldname')\">\r\n";
  97. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  98. $formitem = str_replace("~form~", $innertext, $formitem);
  99. return $formitem;
  100. } else if ($ctag->GetAtt("type") == "media") {
  101. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectMedia('form1.$fieldname')\">\r\n";
  102. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  103. $formitem = str_replace("~form~", $innertext, $formitem);
  104. return $formitem;
  105. } else if ($ctag->GetAtt("type") == "relation") {
  106. $innertext = "<textarea name='$fieldname' id='$fieldname' class='biz-textarea-sm'></textarea>\r\n";
  107. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  108. $formitem = str_replace("~form~", $innertext, $formitem);
  109. return $formitem;
  110. } else {
  111. if ($ctag->GetAtt('default') != "") $dfvalue = $ctag->GetAtt('default');
  112. else $dfvalue = "";
  113. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md' value='$dfvalue'>\r\n";
  114. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  115. $formitem = str_replace("~form~", $innertext, $formitem);
  116. return $formitem;
  117. }
  118. }
  119. /**
  120. * 处理不同类型的数据
  121. *
  122. * @access public
  123. * @param string $dvalue 值
  124. * @param string $dtype 类型
  125. * @param int $aid 文档id
  126. * @param string $job 操作类型
  127. * @param string $addvar 增加值
  128. * @return string
  129. */
  130. function GetFieldValue($dvalue, $dtype, $aid = 0, $job = 'add', $addvar = '')
  131. {
  132. global $cfg_cookie_encode, $cfg_dir_purview, $isUrlOpen;
  133. if ($dtype == "int") {
  134. $dvalue = trim(preg_replace("#[^0-9]#", "", $dvalue));
  135. if ($dvalue == "") $dvalue = 0;
  136. return $dvalue;
  137. } else if ($dtype == "float") {
  138. $dvalue = trim(preg_replace("#[^0-9\.]#", "", $dvalue));
  139. if ($dvalue == "") $dvalue = 0;
  140. return $dvalue;
  141. } else if ($dtype == "datetime") {
  142. return GetMkTime($dvalue);
  143. } else if ($dtype == "textdata") {
  144. if ($job == 'edit') {
  145. $addvarDirs = explode('/', $addvar);
  146. $addvarDir = preg_replace("#\/".$addvarDirs[count($addvarDirs) - 1]."$#", "", $addvar);
  147. $mdir = $GLOBALS['cfg_basedir'].$addvarDir;
  148. if (!is_dir($mdir)) {
  149. MkdirAll($mdir, $GLOBALS['cfg_dir_purview']);
  150. }
  151. $fp = fopen($GLOBALS['cfg_basedir'].$addvar, "w");
  152. fwrite($fp, stripslashes($dvalue));
  153. fclose($fp);
  154. CloseFtp();
  155. return $addvar;
  156. } else {
  157. $ipath = $GLOBALS['cfg_cmspath']."/data/textdata";
  158. $tpath = ceil($aid / 5000);
  159. if (!is_dir($GLOBALS['cfg_basedir'].$ipath)) {
  160. MkdirAll($GLOBALS['cfg_basedir'].$ipath, $cfg_dir_purview);
  161. }
  162. if (!is_dir($GLOBALS['cfg_basedir'].$ipath.'/'.$tpath)) {
  163. MkdirAll($GLOBALS['cfg_basedir'].$ipath.'/'.$tpath, $cfg_dir_purview);
  164. }
  165. $ipath = $ipath.'/'.$tpath;
  166. $filename = "{$ipath}/{$aid}-".cn_substr(md5($cfg_cookie_encode), 0, 16).".txt";
  167. $fp = fopen($GLOBALS['cfg_basedir'].$filename, "w");
  168. fwrite($fp, stripslashes($dvalue));
  169. fclose($fp);
  170. CloseFtp();
  171. return $filename;
  172. }
  173. } else if ($dtype == "img") {
  174. $iurl = stripslashes($dvalue);
  175. if (trim($iurl) == "") {
  176. return "";
  177. }
  178. $iurl = trim(str_replace($GLOBALS['cfg_basehost'], "", $iurl));
  179. $imgurl = "{dede:img text='' width='' height=''} ".$iurl." {/dede:img}";
  180. if (preg_match("#^http:\/\/#i", $iurl) && $GLOBALS['isUrlOpen']) {
  181. //远程图片
  182. $reimgs = "";
  183. if ($isUrlOpen) {
  184. $reimgs = GetRemoteImage($iurl, $GLOBALS['adminid']);
  185. if (is_array($reimgs)) {
  186. $imgurl = "{dede:img text='' width='".$reimgs[1]."' height='".$reimgs[2]."'} ".$reimgs[0]." {/dede:img}";
  187. }
  188. } else {
  189. $imgurl = "{dede:img text='' width='' height=''} ".$iurl." {/dede:img}";
  190. }
  191. } else if ($iurl != "") {
  192. //站内图片
  193. $imgfile = $GLOBALS['cfg_basedir'].$iurl;
  194. if (is_file($imgfile)) {
  195. $imginfos = GetImageSize($imgfile);
  196. $imgurl = "{dede:img text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}";
  197. }
  198. }
  199. return addslashes($imgurl);
  200. } else {
  201. return $dvalue;
  202. }
  203. }
  204. /**
  205. * 获得带值的表单(编辑时用)
  206. *
  207. * @access public
  208. * @param object $ctag ctag
  209. * @param string $fvalue 表单值
  210. * @return string
  211. */
  212. function GetFormItemValue($ctag, $fvalue)
  213. {
  214. $fieldname = $ctag->GetName();
  215. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  216. <tr>
  217. <td width=\"80\">~name~</td>
  218. <td width=\"720\">~form~</td>
  219. </tr>
  220. </table>\r\n";
  221. $innertext = trim($ctag->GetInnerText());
  222. if ($innertext != "") {
  223. if ($ctag->GetAtt("type") == 'select') {
  224. $myformItem = '';
  225. $items = explode(',', $innertext);
  226. $myformItem = "<select name='$fieldname' class='biz-input-sm'>";
  227. foreach ($items as $v) {
  228. $v = trim($v);
  229. if ($v != '') {
  230. if ($fvalue == $v) {
  231. $myformItem .= "<option value='$v' selected>$v</option>\r\n";
  232. } else {
  233. $myformItem .= "<option value='$v'>$v</option>\r\n";
  234. }
  235. }
  236. }
  237. $myformItem .= "</select>\r\n";
  238. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  239. $formitem = str_replace("~form~", $myformItem, $formitem);
  240. return $formitem;
  241. } else if ($ctag->GetAtt("type") == 'radio') {
  242. $myformItem = '';
  243. $items = explode(',', $innertext);
  244. foreach ($items as $v) {
  245. $v = trim($v);
  246. if ($v != '') {
  247. if ($fvalue == $v) {
  248. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v' checked> $v</label>\r\n";
  249. } else {
  250. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v'> $v</label>\r\n";
  251. }
  252. }
  253. }
  254. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  255. $formitem = str_replace("~form~", $myformItem, $formitem);
  256. return $formitem;
  257. } else {
  258. $formitem = str_replace('~name~', $ctag->GetAtt('itemname'), $formitem);
  259. $formitem = str_replace('~form~', $innertext, $formitem);
  260. $formitem = str_replace('@value', $fvalue, $formitem);
  261. return $formitem;
  262. }
  263. }
  264. //文本数据的特殊处理
  265. if ($ctag->GetAtt("type") == "textdata") {
  266. if (is_file($GLOBALS['cfg_basedir'].$fvalue)) {
  267. $fp = fopen($GLOBALS['cfg_basedir'].$fvalue, 'r');
  268. $okfvalue = "";
  269. while (!feof($fp)) {
  270. $okfvalue .= fgets($fp, 1024);
  271. }
  272. fclose($fp);
  273. } else {
  274. $okfvalue = "";
  275. }
  276. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"80\">".$ctag->GetAtt('itemname')."</td>\r\n";
  277. $formitem .= "<td>\r\n".GetEditor($fieldname, $okfvalue, 350, 'Basic', 'string')."</td>\r\n";
  278. $formitem .= "</tr></table>\r\n";
  279. $formitem .= "<input type='hidden' name='{$fieldname}_file' value='{$fvalue}'>\r\n";
  280. return $formitem;
  281. } else if ($ctag->GetAtt("type") == "htmltext") {
  282. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"80\">".$ctag->GetAtt('itemname')."</td>\r\n";
  283. $formitem .= "<td>\r\n".GetEditor($fieldname, $fvalue, 350, 'Basic', 'string')."</td>\r\n";
  284. $formitem .= "</tr></table>\r\n";
  285. return $formitem;
  286. } else if ($ctag->GetAtt("type") == "multitext") {
  287. $innertext = "<textarea name='$fieldname' id='$fieldname' class='biz-textarea-sm'>$fvalue</textarea>\r\n";
  288. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  289. $formitem = str_replace("~form~", $innertext, $formitem);
  290. return $formitem;
  291. } else if ($ctag->GetAtt("type") == "datetime") {
  292. $nowtime = GetDateTimeMk($fvalue);
  293. $innertext = "<input name=\"$fieldname\" value=\"$nowtime\" type=\"text\" id=\"$fieldname\" class=\"biz-input-md\">";
  294. $innertext .= "<input name=\"selPubtime\" type=\"button\" id=\"selkeyword\" value=\"选择\" onClick=\"showCalendar('$fieldname', 'Y-m-d H:i:00', '24');\">";
  295. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  296. $formitem = str_replace("~form~", $innertext, $formitem);
  297. return $formitem;
  298. } else if ($ctag->GetAtt("type") == "img") {
  299. $ndtp = new DedeTagParse();
  300. $ndtp->LoadSource($fvalue);
  301. if (!is_array($ndtp->CTags)) {
  302. $ndtp->Clear();
  303. $fvalue = "";
  304. }
  305. $ntag = $ndtp->GetTag("img");
  306. $fvalue = trim($ntag->GetInnerText());
  307. $innertext = "<input type='text' name='$fieldname' value='$fvalue' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectImage('form1.$fieldname','big')\">\r\n";
  308. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  309. $formitem = str_replace("~form~", $innertext, $formitem);
  310. return $formitem;
  311. } else if ($ctag->GetAtt("type") == "media") {
  312. $innertext = "<input type='text' name='$fieldname' value='$fvalue' id='$fieldname' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectMedia('form1.$fieldname')\">\r\n";
  313. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  314. $formitem = str_replace("~form~", $innertext, $formitem);
  315. return $formitem;
  316. } else if ($ctag->GetAtt("type") == "addon") {
  317. $innertext = "<input type='text' name='$fieldname' id='$fieldname' value='$fvalue' class='biz-input-md'><input name='".$fieldname."_bt' type='button' value='浏览' onClick=\"SelectSoft('form1.$fieldname')\">\r\n";
  318. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  319. $formitem = str_replace("~form~", $innertext, $formitem);
  320. return $formitem;
  321. } else {
  322. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='biz-input-md' value='$fvalue'>\r\n";
  323. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  324. $formitem = str_replace("~form~", $innertext, $formitem);
  325. return $formitem;
  326. }
  327. }
  328. ?>