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

336 lines
16KB

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