pay_method.class.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. class pay_method {
  3. public function __construct($modules_path) {
  4. $this->db = pc_base::load_model('pay_payment_model');
  5. $this->modules_path = $modules_path;
  6. }
  7. /**
  8. * 获取支付类型列表
  9. */
  10. public function get_list() {
  11. $list = $this->get_payment();
  12. $install = $this->get_intallpayment();
  13. if(is_array($list)) {
  14. foreach ($list as $code => $payment ) {
  15. if (isset($install[$code])) {
  16. $install[$code]['pay_desc'] = $list[$code]['pay_desc'];
  17. unset($list[$code]);
  18. }
  19. }
  20. }
  21. $all = @array_merge($install, $list);
  22. return array('data' => $all,
  23. array(
  24. 'all' => count($all),
  25. 'install' => count($install)
  26. )
  27. );
  28. }
  29. /**
  30. * 获取插件目录信息
  31. * @param unknown_type $code
  32. */
  33. public function get_payment( $code = '') {
  34. $modules = $this->read_payment($this->modules_path.DIRECTORY_SEPARATOR.'classes');
  35. foreach($modules as $payment) {
  36. if ( empty($code) || $payment['code']) {
  37. $config = array();
  38. foreach ($payment['config'] as $conf) {
  39. $name = $conf['name'];
  40. $conf['name'] = L($name);
  41. if ($conf['type'] == 'select') {
  42. $conf['range'] = L($name.'_range');
  43. }
  44. $config[$name] = $conf;
  45. }
  46. }
  47. $payment_info[$payment['code']] = array(
  48. "pay_id" => 0,
  49. "pay_code" => $payment['code'],
  50. "pay_name" => $payment['name'],
  51. "pay_desc" => $payment['desc'],
  52. "pay_fee" => '0',
  53. "config" => $config,
  54. "is_cod" => $payment['is_cod'],
  55. "is_online" => $payment['is_online'],
  56. "enabled" => '0',
  57. "sort_order" => "",
  58. "author" => $payment['author'],
  59. "website" => $payment['website'],
  60. "version" => $payment['version']
  61. );
  62. }
  63. if (empty($code)) {
  64. return $payment_info;
  65. } else {
  66. return $payment_info[$code];
  67. }
  68. }
  69. /**
  70. * 取得数据库中的支付列表
  71. * @param $code
  72. */
  73. public function get_intallpayment($code = '')
  74. {
  75. if (empty($code)) {
  76. $intallpayment = array();
  77. $result = $this->db->select();
  78. foreach($result as $r) {
  79. $r['pay_code'] = ucwords($r['pay_code']);
  80. $intallpayment[$r['pay_code']] = $r;
  81. }
  82. return $intallpayment;
  83. } else {
  84. return $this->db->get_one(array('pay_code'=>ucwords($code)));
  85. }
  86. }
  87. /**
  88. * 读取插件目录中插件列表
  89. * @param unknown_type $directory
  90. */
  91. public function read_payment($directory = ".") {
  92. $dir = @opendir($directory);
  93. $set_modules = true;
  94. $modules = array();
  95. while (($file = @readdir($dir))!== false) {
  96. if ( preg_match( "/^[A-Z]{1}.*?\\.class.php\$/", $file ) ) {
  97. include_once( $directory.DIRECTORY_SEPARATOR.$file );
  98. }
  99. }
  100. @closedir($dir);
  101. foreach ($modules as $key => $value ) {
  102. asort($modules[$key] );
  103. }
  104. asort( $modules );
  105. return $modules;
  106. }
  107. }
  108. ?>