/public/api/Payment.php

https://bitbucket.org/AntonTyutin/pretty-simpla · PHP · 149 lines · 115 code · 26 blank · 8 comment · 15 complexity · de3069319b6b4a99ea253b6b9d005ed0 MD5 · raw file

  1. <?php
  2. /**
  3. * Simpla CMS
  4. *
  5. * @copyright 2011 Denis Pikusov
  6. * @link http://simplacms.ru
  7. * @author Denis Pikusov
  8. *
  9. */
  10. require_once('Simpla.php');
  11. class Payment extends Simpla
  12. {
  13. public function get_payment_methods($filter = array())
  14. {
  15. $delivery_filter = '';
  16. if(!empty($filter['delivery_id']))
  17. $delivery_filter = $this->db->placehold('AND id in (SELECT payment_method_id FROM __delivery_payment dp WHERE dp.delivery_id=?)', intval($filter['delivery_id']));
  18. $enabled_filter = '';
  19. if(!empty($filter['enabled']))
  20. $enabled_filter = $this->db->placehold('AND enabled=?', intval($filter['enabled']));
  21. $query = "SELECT *
  22. FROM __payment_methods WHERE 1 $delivery_filter $enabled_filter ORDER BY position";
  23. $this->db->query($query);
  24. return $this->db->results();
  25. }
  26. function get_payment_method($id)
  27. {
  28. $query = $this->db->placehold("SELECT * FROM __payment_methods WHERE id=? LIMIT 1", intval($id));
  29. $this->db->query($query);
  30. $payment_method = $this->db->result();
  31. return $payment_method;
  32. }
  33. function get_payment_settings($method_id)
  34. {
  35. $query = $this->db->placehold("SELECT settings FROM __payment_methods WHERE id=? LIMIT 1", intval($method_id));
  36. $this->db->query($query);
  37. $settings = $this->db->result('settings');
  38. $settings = unserialize($settings);
  39. return $settings;
  40. }
  41. function get_payment_modules()
  42. {
  43. $modules_dir = $this->config->root_dir.'payment/';
  44. $modules = array();
  45. $handler = opendir($modules_dir);
  46. while ($dir = readdir($handler))
  47. {
  48. $dir = preg_replace("/[^A-Za-z0-9]+/", "", $dir);
  49. if (!empty($dir) && $dir != "." && $dir != ".." && is_dir($modules_dir.$dir))
  50. {
  51. if(is_readable($modules_dir.$dir.'/settings.xml') && $xml = simplexml_load_file($modules_dir.$dir.'/settings.xml'))
  52. {
  53. $module = null;
  54. $module->name = (string)$xml->name;
  55. $module->settings = array();
  56. foreach($xml->settings as $setting)
  57. {
  58. $module->settings[(string)$setting->variable]->name = (string)$setting->name;
  59. $module->settings[(string)$setting->variable]->variable = (string)$setting->variable;
  60. $module->settings[(string)$setting->variable]->variable_options = array();
  61. foreach($setting->options as $option)
  62. {
  63. $module->settings[(string)$setting->variable]->options[(string)$option->value]->name = (string)$option->name;
  64. $module->settings[(string)$setting->variable]->options[(string)$option->value]->value = (string)$option->value;
  65. }
  66. }
  67. $modules[$dir] = $module;
  68. }
  69. }
  70. }
  71. closedir($handler);
  72. return $modules;
  73. }
  74. public function get_payment_deliveries($id)
  75. {
  76. $query = $this->db->placehold("SELECT delivery_id FROM __delivery_payment WHERE payment_method_id=?", intval($id));
  77. $this->db->query($query);
  78. return $this->db->results('delivery_id');
  79. }
  80. public function update_payment_method($id, $payment_method)
  81. {
  82. $query = $this->db->placehold("UPDATE __payment_methods SET ?% WHERE id in(?@)", $payment_method, (array)$id);
  83. $this->db->query($query);
  84. return $id;
  85. }
  86. public function update_payment_settings($method_id, $settings)
  87. {
  88. if(!is_string($settings))
  89. {
  90. $settings = serialize($settings);
  91. }
  92. $query = $this->db->placehold("UPDATE __payment_methods SET settings=? WHERE id in(?@) LIMIT 1", $settings, (array)$method_id);
  93. $this->db->query($query);
  94. return $method_id;
  95. }
  96. public function update_payment_deliveries($id, $deliveries_ids)
  97. {
  98. $query = $this->db->placehold("DELETE FROM __delivery_payment WHERE payment_method_id=?", intval($id));
  99. $this->db->query($query);
  100. if(is_array($deliveries_ids))
  101. foreach($deliveries_ids as $d_id)
  102. $this->db->query("INSERT INTO __delivery_payment SET payment_method_id=?, delivery_id=?", $id, $d_id);
  103. }
  104. public function add_payment_method($payment_method)
  105. {
  106. $query = $this->db->placehold('INSERT INTO __payment_methods
  107. SET ?%',
  108. $payment_method);
  109. if(!$this->db->query($query))
  110. return false;
  111. $id = $this->db->insert_id();
  112. $this->db->query("UPDATE __payment_methods SET position=id WHERE id=?", $id);
  113. return $id;
  114. }
  115. public function delete_payment_method($id)
  116. {
  117. if(!empty($id))
  118. {
  119. $query = $this->db->placehold("DELETE FROM __payment_methods WHERE id=? LIMIT 1", intval($id));
  120. $this->db->query($query);
  121. }
  122. }
  123. }