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

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