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

426 lines
17KB

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