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

328 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 GNU GPL v2 (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='admin-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='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='admin-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=\"admin-input-lg\">";
  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='admin-input-lg'><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='admin-input-lg'><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='admin-input-lg'><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='admin-input-lg'><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='admin-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='admin-input-lg' 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. return $addvar;
  155. } else {
  156. $ipath = '/data/textdata';
  157. $tpath = ceil($aid / 5000);
  158. if (!is_dir($GLOBALS['cfg_basedir'].$ipath)) {
  159. MkdirAll($GLOBALS['cfg_basedir'].$ipath, $cfg_dir_purview);
  160. }
  161. if (!is_dir($GLOBALS['cfg_basedir'].$ipath.'/'.$tpath)) {
  162. MkdirAll($GLOBALS['cfg_basedir'].$ipath.'/'.$tpath, $cfg_dir_purview);
  163. }
  164. $ipath = $ipath.'/'.$tpath;
  165. $filename = "{$ipath}/{$aid}-".cn_substr(md5($cfg_cookie_encode), 0, 16).".txt";
  166. $fp = fopen($GLOBALS['cfg_basedir'].$filename, "w");
  167. fwrite($fp, stripslashes($dvalue));
  168. fclose($fp);
  169. return $filename;
  170. }
  171. } else if ($dtype == "img") {
  172. $iurl = stripslashes($dvalue);
  173. if (trim($iurl) == "") {
  174. return "";
  175. }
  176. $iurl = trim(str_replace($GLOBALS['cfg_basehost'], "", $iurl));
  177. $imgurl = "{dede:img text='' width='' height=''} ".$iurl." {/dede:img}";
  178. if (preg_match("#^(http|https):\/\/#i", $iurl) && $GLOBALS['isUrlOpen']) {
  179. //远程图片
  180. $reimgs = "";
  181. if ($isUrlOpen) {
  182. $reimgs = GetRemoteImage($iurl, $GLOBALS['adminid']);
  183. if (is_array($reimgs)) {
  184. $imgurl = "{dede:img text='' width='".$reimgs[1]."' height='".$reimgs[2]."'} ".$reimgs[0]." {/dede:img}";
  185. }
  186. } else {
  187. $imgurl = "{dede:img text='' width='' height=''} ".$iurl." {/dede:img}";
  188. }
  189. } else if ($iurl != "") {
  190. //站内图片
  191. $imgfile = $GLOBALS['cfg_basedir'].$iurl;
  192. if (is_file($imgfile)) {
  193. $imginfos = GetImageSize($imgfile);
  194. $imgurl = "{dede:img text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}";
  195. }
  196. }
  197. return addslashes($imgurl);
  198. } else {
  199. return $dvalue;
  200. }
  201. }
  202. /**
  203. * 获得带值的表单修改时用
  204. *
  205. * @access public
  206. * @param object $ctag ctag
  207. * @param string $fvalue 表单值
  208. * @return string
  209. */
  210. function GetFormItemValue($ctag, $fvalue)
  211. {
  212. $fieldname = $ctag->GetName();
  213. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  214. <tr>
  215. <td width=\"80\">~name~</td>
  216. <td width=\"720\">~form~</td>
  217. </tr>
  218. </table>\r\n";
  219. $innertext = trim($ctag->GetInnerText());
  220. if ($innertext != "") {
  221. if ($ctag->GetAtt("type") == 'select') {
  222. $myformItem = '';
  223. $items = explode(',', $innertext);
  224. $myformItem = "<select name='$fieldname' class='admin-input-sm'>";
  225. foreach ($items as $v) {
  226. $v = trim($v);
  227. if ($v != '') {
  228. if ($fvalue == $v) {
  229. $myformItem .= "<option value='$v' selected>$v</option>\r\n";
  230. } else {
  231. $myformItem .= "<option value='$v'>$v</option>\r\n";
  232. }
  233. }
  234. }
  235. $myformItem .= "</select>\r\n";
  236. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  237. $formitem = str_replace("~form~", $myformItem, $formitem);
  238. return $formitem;
  239. } else if ($ctag->GetAtt("type") == 'radio') {
  240. $myformItem = '';
  241. $items = explode(',', $innertext);
  242. foreach ($items as $v) {
  243. $v = trim($v);
  244. if ($v != '') {
  245. if ($fvalue == $v) {
  246. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v' checked='checked'> $v</label>\r\n";
  247. } else {
  248. $myformItem .= "<label><input type='radio' name='$fieldname' value='$v'> $v</label>\r\n";
  249. }
  250. }
  251. }
  252. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  253. $formitem = str_replace("~form~", $myformItem, $formitem);
  254. return $formitem;
  255. } else {
  256. $formitem = str_replace('~name~', $ctag->GetAtt('itemname'), $formitem);
  257. $formitem = str_replace('~form~', $innertext, $formitem);
  258. $formitem = str_replace('@value', $fvalue, $formitem);
  259. return $formitem;
  260. }
  261. }
  262. //文本数据的特殊处理
  263. if ($ctag->GetAtt("type") == "textdata") {
  264. if (is_file($GLOBALS['cfg_basedir'].$fvalue)) {
  265. $fp = fopen($GLOBALS['cfg_basedir'].$fvalue, 'r');
  266. $okfvalue = "";
  267. while (!feof($fp)) {
  268. $okfvalue .= fgets($fp, 1024);
  269. }
  270. fclose($fp);
  271. } else {
  272. $okfvalue = "";
  273. }
  274. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"80\">".$ctag->GetAtt('itemname')."</td>\r\n";
  275. $formitem .= "<td>\r\n".GetEditor($fieldname, $okfvalue, 350, 'Basic', 'string')."</td>\r\n";
  276. $formitem .= "</tr></table>\r\n";
  277. $formitem .= "<input type='hidden' name='{$fieldname}_file' value='{$fvalue}'>\r\n";
  278. return $formitem;
  279. } else if ($ctag->GetAtt("type") == "htmltext") {
  280. $formitem = "<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"80\">".$ctag->GetAtt('itemname')."</td>\r\n";
  281. $formitem .= "<td>\r\n".GetEditor($fieldname, $fvalue, 350, 'Basic', 'string')."</td>\r\n";
  282. $formitem .= "</tr></table>\r\n";
  283. return $formitem;
  284. } else if ($ctag->GetAtt("type") == "multitext") {
  285. $innertext = "<textarea name='$fieldname' id='$fieldname' class='admin-textarea-sm'>$fvalue</textarea>\r\n";
  286. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  287. $formitem = str_replace("~form~", $innertext, $formitem);
  288. return $formitem;
  289. } else if ($ctag->GetAtt("type") == "datetime") {
  290. $nowtime = GetDateTimeMk($fvalue);
  291. $innertext = "<input name=\"$fieldname\" value=\"$nowtime\" type=\"text\" id=\"$fieldname\" class=\"admin-input-lg\">";
  292. $innertext .= "<input name=\"selPubtime\" type=\"button\" id=\"selkeyword\" value=\"选择\" onclick=\"showCalendar('$fieldname', 'Y-m-d H:i:00', '24');\">";
  293. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  294. $formitem = str_replace("~form~", $innertext, $formitem);
  295. return $formitem;
  296. } else if ($ctag->GetAtt("type") == "img") {
  297. $ndtp = new DedeTagParse();
  298. $ndtp->LoadSource($fvalue);
  299. if (!is_array($ndtp->CTags)) {
  300. $ndtp->Clear();
  301. $fvalue = "";
  302. }
  303. $ntag = $ndtp->GetTag("img");
  304. $fvalue = trim($ntag->GetInnerText());
  305. $innertext = "<input type='text' name='$fieldname' value='$fvalue' id='$fieldname' class='admin-input-lg'><input name='".$fieldname."_bt' type='button' value='选择' onclick=\"SelectImage('form1.$fieldname','big')\">\r\n";
  306. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  307. $formitem = str_replace("~form~", $innertext, $formitem);
  308. return $formitem;
  309. } else if ($ctag->GetAtt("type") == "media") {
  310. $innertext = "<input type='text' name='$fieldname' value='$fvalue' id='$fieldname' class='admin-input-lg'><input name='".$fieldname."_bt' type='button' value='选择' onclick=\"SelectMedia('form1.$fieldname')\">\r\n";
  311. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  312. $formitem = str_replace("~form~", $innertext, $formitem);
  313. return $formitem;
  314. } else if ($ctag->GetAtt("type") == "addon") {
  315. $innertext = "<input type='text' name='$fieldname' id='$fieldname' value='$fvalue' class='admin-input-lg'><input name='".$fieldname."_bt' type='button' value='选择' onclick=\"SelectSoft('form1.$fieldname')\">\r\n";
  316. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  317. $formitem = str_replace("~form~", $innertext, $formitem);
  318. return $formitem;
  319. } else {
  320. $innertext = "<input type='text' name='$fieldname' id='$fieldname' class='admin-input-lg' value='$fvalue'>\r\n";
  321. $formitem = str_replace("~name~", $ctag->GetAtt('itemname'), $formitem);
  322. $formitem = str_replace("~form~", $innertext, $formitem);
  323. return $formitem;
  324. }
  325. }
  326. ?>