国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

251 строка
8.7KB

  1. <?php
  2. /**
  3. * 支付接口
  4. *
  5. * @version $Id: sys_info_mark.php 1 22:28 2010年7月20日Z 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. require_once(dirname(__FILE__)."/config.php");
  12. require_once(DEDEINC.'/datalistcp.class.php');
  13. CheckPurview('sys_Data');
  14. $dopost = (empty($dopost)) ? '' : $dopost;
  15. $pid = (empty($pid)) ? 0 : intval($pid);
  16. /*
  17. 下面数数组格式的例子:
  18. */
  19. //一个简单的[数组<->表单]解析类
  20. /*数组结构应该为:
  21. array(
  22. [name]=>array(
  23. [title]=>'当前表单项的名称',
  24. [type]=>'text|select',
  25. [description]=>'表单内容的介绍说明'
  26. [iterm]=>'1:使用标准双接口,使用担保交易接口', //如果含有":",则前面为value值,后面为显示内容
  27. [value]=>'使用担保交易接口',
  28. ),
  29. )
  30. 使用方法:
  31. 将上述的格式传入到数组中去,然后进行解析:
  32. 1.声明类,并创建数组
  33. $af = new Array2form($config);
  34. 2.设置一个表单模板(可选,如果不设置载入默认)
  35. $af->SetDefaultTpl($templets); $templets:为一个底册模板文件
  36. 表单模板格式为:
  37. <p>~title~:~form~<small>~description~</small></p>
  38. 3.获取特定项目表单
  39. $af->GetIterm('alipay', 1) //1.表示获取一个默认模板下的完整表单,2.仅获取一个表单项
  40. 4.获取所有表单内容
  41. $af->GetAll() //获取表单所有解析后的内容
  42. */
  43. class Array2form
  44. {
  45. var $FormArray = array();
  46. var $ArrFromTPL = '';
  47. function __construct($formarray = array())
  48. {
  49. if (count($formarray) > 1) {
  50. $this->FormArray = $formarray;
  51. //var_dump($this->FormArray);
  52. $this->SetDefaultTpl();
  53. }
  54. }
  55. //析构函数,兼容PHP4
  56. /*
  57. function Array2form($formarray = array())
  58. {
  59. $this->__construct($formarray);
  60. }
  61. */
  62. //获取一个特定项目的表单
  63. function GetIterm($itermid = '', $itermtype = 1)
  64. {
  65. $reval = $reval_form = $reval_title = $reval_des = $myformItem = '';
  66. if (is_array($this->FormArray)) {
  67. foreach ($this->FormArray as $key => $val) {
  68. if ($key == $itermid) {
  69. $reval_title = $val['title'];
  70. $reval_des = $val['description'];
  71. $reval_form = $this->GetForm($key, $val, $val['type']);
  72. //进行模板标签替换
  73. if ($itermtype == 1)
  74. $reval = preg_replace(
  75. array("/~title~/", "/~form~/", "/~description~/"),
  76. array($reval_title, $reval_form, $reval_des),
  77. $this->ArrFromTPL
  78. );
  79. else return $reval_form;
  80. }
  81. }
  82. } else {
  83. return FALSE;
  84. }
  85. return empty($reval) ? '' : $reval;
  86. }
  87. function GetForm($key, $formarry = array(), $formtype = 'text')
  88. {
  89. switch ($formtype) {
  90. case 'text':
  91. //生成文本编辑框
  92. $valstr = (empty($formarry['value'])) ? "value=''" : "value='{$formarry['value']}'";
  93. $reval_form = "<input type='text' name='{$key}' id='{$key}' style='width:300px' class='text'{$valstr}>";
  94. break;
  95. case 'select':
  96. //生成选择框
  97. $reval_title = $formarry['title'];
  98. $items = explode(',', $formarry['iterm']);
  99. $reval_form = "<select name='{$key}' class='text'>";
  100. if (is_array($items)) {
  101. foreach ($items as $v) {
  102. $v = trim($v);
  103. if ($v == '') continue;
  104. //统一将中文冒号转为英文
  105. $v = str_replace(":", ":", $v);
  106. if (preg_match("/[\:]/", $v)) {
  107. list($value, $name) = preg_split('#:#', $v);
  108. $reval_form .= ($formarry['value'] == $value) ? "<option value='$value' selected>$name</option>\r\n" : "<option value='$value'>$name</option>\r\n";
  109. } else {
  110. $reval_form .= ($formarry['value'] == $v) ? "<option value='$v' selected>$v</option>\r\n" : "<option value='$v'>$v</option>\r\n";
  111. }
  112. }
  113. }
  114. $reval_form .= "</select>\r\n";
  115. break;
  116. }
  117. return $reval_form;
  118. }
  119. //获取所有的表单内容
  120. function GetAll()
  121. {
  122. $reval = empty($reval) ? '' : $reval;
  123. if (is_array($this->FormArray)) {
  124. foreach ($this->FormArray as $key => $val) {
  125. $reval .= $this->GetIterm($key);
  126. }
  127. return $reval;
  128. } else {
  129. return FALSE;
  130. }
  131. }
  132. //获取一个特定项目的表单
  133. function SetDefaultTpl($tplname = '')
  134. {
  135. if (empty($tplname)) {
  136. $this->ArrFromTPL = '<p>~title~:~form~<small>~description~</small></p>';
  137. } else {
  138. if (file_exists($tplname)) $this->ArrFromTPL = file_get_contents($tplname);
  139. else $this->ArrFromTPL = $tplname;
  140. }
  141. }
  142. }
  143. $tplstring = "
  144. <tr>
  145. <td height='26' align='center'>~title~:</td>
  146. <td>~form~ <small>~description~</small></td>
  147. </tr>
  148. ";
  149. //安装支付接口
  150. if ($dopost == 'install') {
  151. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  152. if (is_array($row)) {
  153. if ($cfg_soft_lang == 'utf-8') {
  154. $config_row = AutoCharset(unserialize(utf82gb($row['config'])));
  155. } else if ($cfg_soft_lang == 'gb2312') {
  156. $config_row = unserialize($row['config']);
  157. }
  158. //print_r($config_row);exit;
  159. $af = new Array2form($config_row);
  160. $af->SetDefaultTpl($tplstring);
  161. $reval = $af->GetAll();
  162. }
  163. include DedeInclude('templets/sys_payment_install.htm');
  164. exit;
  165. }
  166. //配置支付接口
  167. else if ($dopost == 'config') {
  168. if ($pay_name == "" || $pay_desc == "" || $pay_fee == "") {
  169. ShowMsg("您有未填写的项目", "-1");
  170. exit();
  171. }
  172. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  173. if ($cfg_soft_lang == 'utf-8') {
  174. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  175. } else if ($cfg_soft_lang == 'gb2312') {
  176. $config = unserialize($row['config']);
  177. }
  178. $payments = "'code' => '".$row['code']."',";
  179. foreach ($config as $key => $v) {
  180. $config[$key]['value'] = ${$key};
  181. $payments .= "'".$key."' => '".$config[$key]['value']."',";
  182. }
  183. $payments = substr($payments, 0, -1);
  184. $payment = "\$payment=array(".$payments.")";
  185. $configstr = "<"."?php\r\n".$payment."\r\n?".">\r\n";
  186. if (!empty($payment)) {
  187. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  188. $fp = fopen($m_file, "w") or die("写入文件 $safeconfigfile 失败,请检查权限");
  189. fwrite($fp, $configstr);
  190. fclose($fp);
  191. }
  192. if ($cfg_soft_lang == 'utf-8') {
  193. $config = AutoCharset($config, 'utf-8', 'gb2312');
  194. $config = serialize($config);
  195. $config = gb2utf8($config);
  196. } else {
  197. $config = serialize($config);
  198. }
  199. $query = "UPDATE `#@__payment` SET name = '$pay_name',fee='$pay_fee',description='$pay_desc',config='$config',enabled='1' WHERE id='$pid'";
  200. $dsql->ExecuteNoneQuery($query);
  201. if ($pm == 'edit') $msg = "保存修改成功";
  202. else $msg = "安装成功";
  203. ShowMsg($msg, "sys_payment.php");
  204. exit();
  205. }
  206. //删除支付接口
  207. else if ($dopost == 'uninstall') {
  208. $row = $dsql->GetOne("SELECT * FROM `#@__payment` WHERE id='$pid'");
  209. if ($cfg_soft_lang == 'utf-8') {
  210. $config = AutoCharset(unserialize(utf82gb($row['config'])));
  211. } else if ($cfg_soft_lang == 'gb2312') {
  212. $config = unserialize($row['config']);
  213. }
  214. foreach ($config as $key => $v) $config[$key]['value'] = "";
  215. if ($cfg_soft_lang == 'utf-8') {
  216. $config = AutoCharset($config, 'utf-8', 'gb2312');
  217. $config = serialize($config);
  218. $config = gb2utf8($config);
  219. } else {
  220. $config = serialize($config);
  221. }
  222. $query = "UPDATE `#@__payment` SET fee='',config='$config',enabled='0' WHERE id='$pid'";
  223. $dsql->ExecuteNoneQuery($query);
  224. //同时需要删除对应的缓存
  225. $m_file = DEDEDATA."/payment/".$row['code'].".php";
  226. @unlink($m_file);
  227. ShowMsg("删除成功", "sys_payment.php");
  228. exit();
  229. }
  230. $sql = "SELECT * FROM `#@__payment` ORDER BY `rank` ASC";
  231. $dlist = new DataListCP();
  232. $dlist->SetTemplet(DEDEADMIN."/templets/sys_payment.htm");
  233. $dlist->SetSource($sql);
  234. $dlist->display();