Класс Payment.php
Класс Payment
Предназначен для работы со способами оплаты сайта. Выполняет основные функции для работы с ними (удаление, добавление и т.д).
Функция get_payment_methods()
/*Выборка всех способов оплаты*/ public function get_payment_methods($filter = array()) { $delivery_filter = ''; if(!empty($filter['delivery_id'])) { $delivery_filter = $this->db->placehold('AND id in (SELECT payment_method_id FROM __delivery_payment dp WHERE dp.delivery_id=?)', intval($filter['delivery_id'])); } $enabled_filter = ''; if(!empty($filter['enabled'])) { $enabled_filter = $this->db->placehold('AND enabled=?', intval($filter['enabled'])); } $lang_sql = $this->languages->get_query(array('object'=>'payment')); $query = "SELECT p.id, p.module, p.currency_id, p.settings, p.enabled, p.position, p.image, $lang_sql->fields FROM __payment_methods p $lang_sql->join WHERE 1 $delivery_filter $enabled_filter ORDER BY position "; $this->db->query($query); return $this->db->results(); }
Функция принимает один аргумент $filter в виде массива.
Параметры которые содержит функция:
- $filter['delivery_id'] - id способа доставки для связки со способом оплаты
- $filter['enabled'] - фильтр активности способа оплаты
Функция возвращает массив объектов способов оплаты
Функция get_payment_method()
/*Выборка конкретного способа оплаты*/ public function get_payment_method($id) { if (empty($id)) { return false; } $payment_id_filter = $this->db->placehold('AND p.id=?', intval($id)); $lang_sql = $this->languages->get_query(array('object'=>'payment')); $query = $this->db->placehold("SELECT p.id, p.module, p.currency_id, p.settings, p.enabled, p.position, p.image, $lang_sql->fields FROM __payment_methods p $lang_sql->join WHERE 1 $payment_id_filter LIMIT 1 "); $this->db->query($query); return $this->db->result(); }
Функция выбора конкретного способа оплаты
Функция принимает один аргумент $id - id нужного способа оплаты
Параметры которые содержит функция:
- $id -id нужного способа оплаты
Функция возвращает данные о способе оплаты
Функция get_payment_settings()
/*Выборка настроек способа оплаты*/ public function get_payment_settings($method_id) { $query = $this->db->placehold("SELECT settings FROM __payment_methods WHERE id=? LIMIT 1", intval($method_id)); $this->db->query($query); $settings = $this->db->result('settings'); $settings = unserialize($settings); return $settings; }
Функция выбирает настройки каждого модуля оплаты отдельно.
Принимает один аргумент $method_id - id способа оплаты
Функция возвращает данные о настройках каждого модуля оплаты (ключи, настройки режими работы и т.д)
Функция get_payment_modules()
/*Выборка модулей(обработчиков) способов оплаты*/ public function get_payment_modules() { $modules_dir = $this->config->root_dir.'payment/'; $modules = array(); $handler = opendir($modules_dir); while ($dir = readdir($handler)) { $dir = preg_replace("/[^A-Za-z0-9]+/", "", $dir); if (!empty($dir) && $dir != "." && $dir != ".." && is_dir($modules_dir.$dir)) { if(is_readable($modules_dir.$dir.'/settings.xml') && $xml = simplexml_load_file($modules_dir.$dir.'/settings.xml')) { $module = new stdClass; $module->name = (string)$xml->name; $module->settings = array(); foreach($xml->settings as $setting) { $module->settings[(string)$setting->variable] = new stdClass; $module->settings[(string)$setting->variable]->name = (string)$setting->name; $module->settings[(string)$setting->variable]->variable = (string)$setting->variable; $module->settings[(string)$setting->variable]->variable_options = array(); foreach($setting->options as $option) { $module->settings[(string)$setting->variable]->options[(string)$option->value] = new stdClass; $module->settings[(string)$setting->variable]->options[(string)$option->value]->name = (string)$option->name; $module->settings[(string)$setting->variable]->options[(string)$option->value]->value = (string)$option->value; } } $modules[$dir] = $module; } } } closedir($handler); return $modules; }
Фукнция считывает с каждой директории модули оплаты и возращает инофрмацию о них
Функция get_payment_deliveries()
/*Выборка доступных способов доставки для конкретного способа оплаты*/ public function get_payment_deliveries($id) { $query = $this->db->placehold("SELECT delivery_id FROM __delivery_payment WHERE payment_method_id=?", intval($id)); $this->db->query($query); return $this->db->results('delivery_id'); }
Фукнция выборки доступных способов доставки для конкретного способа оплаты
Функция принимает один аргумент $id - id способа оплаты
Параметры которые содержит функция:
Функция массив с id закрепленных способов доставки
Функция update_payment_method()
/*Обновление способа оплаты*/ public function update_payment_method($id, $payment_method) { $payment_method = (object)$payment_method; // Проверяем есть ли мультиязычность и забираем описания для перевода $result = $this->languages->get_description($payment_method, 'payment'); $query = $this->db->placehold("UPDATE __payment_methods SET ?% WHERE id in(?@)", $payment_method, (array)$id); $this->db->query($query); // Если есть описание для перевода. Указываем язык для обновления if(!empty($result->description)) { $this->languages->action_description($id, $result->description, 'payment', $this->languages->lang_id()); } return $id; }
Фукнция обновление способа оплаты
Функция принимает два аргумента $id, $payment_method
Параметры которые содержит функция:
- $id - id обновляемого способа оплаты
- $payment_method - данные для обновления (например название, описание)
Функция возвращает id обновленной записи
Функция update_payment_settings()
/*Обновление настроек способа оплаты*/ public function update_payment_settings($method_id, $settings) { if(!is_string($settings)) { $settings = serialize($settings); } $query = $this->db->placehold("UPDATE __payment_methods SET settings=? WHERE id in(?@) LIMIT 1", $settings, (array)$method_id); $this->db->query($query); return $method_id; }
Фукнция обновления настроек способа оплаты
Функция принимает два аругмента($method_id, $settings)
Параметры которые содержит функция:
- $method_id - id обновляемого способа оплаты
- $settings - настройки модуля оплаты (например ключ, режим работы)
Функция возвращает id обновленного способа оплаты
Функция update_payment_deliveries()
/*Обновление доступных способов доставки*/ public function update_payment_deliveries($id, $deliveries_ids) { $query = $this->db->placehold("DELETE FROM __delivery_payment WHERE payment_method_id=?", intval($id)); $this->db->query($query); if(is_array($deliveries_ids)) { foreach($deliveries_ids as $d_id) { $this->db->query("INSERT INTO __delivery_payment SET payment_method_id=?, delivery_id=?", $id, $d_id); } } }
Фукнция обновления связки способов доставки у способа оплаты
Функция принимает два аргумента $id, $deliveries_ids
Параметры которые содержит функция:
- $id - id способа оплаты
- $deliveries_ids - массив id привязанных способов доставки
Функция add_payment_method()
/*Добавление способа оплаты*/ public function add_payment_method($payment_method) { $payment_method = (object)$payment_method; // Проверяем есть ли мультиязычность и забираем описания для перевода $result = $this->languages->get_description($payment_method, 'payment'); $query = $this->db->placehold('INSERT INTO __payment_methods SET ?%', $payment_method); if(!$this->db->query($query)) { return false; } $id = $this->db->insert_id(); // Если есть описание для перевода. Указываем язык для обновления if(!empty($result->description)) { $this->languages->action_description($id, $result->description, 'payment'); } $this->db->query("UPDATE __payment_methods SET position=id WHERE id=?", $id); return $id; }
Фукнция добавления нового способа оплаты
Функция принимает один аргумент $payment_method
Параметры которые содержит функция:
- $payment_method - данные о способе доставки (имя, описание, активность и т.д)
Функция возвращает id добавленного способа оплаты
Функция delete_payment_method()
/*Удаление способа оплаты*/ public function delete_payment_method($id) { // Удаляем связь метода оплаты с достаками $query = $this->db->placehold("DELETE FROM __delivery_payment WHERE payment_method_id=?", intval($id)); $this->db->query($query); if(!empty($id)) { $this->image->delete_image($id, 'image', 'payment_methods', $this->config->original_payments_dir, $this->config->resized_payments_dir); $query = $this->db->placehold("DELETE FROM __payment_methods WHERE id=? LIMIT 1", intval($id)); $this->db->query($query); $this->db->query("DELETE FROM __lang_payment_methods WHERE payment_id=?", intval($id)); } }
Фукнция удаления способа оплаты
Функция принимает один аргумент $id
Параметры которые содержит функция:
- $id - id способа оплаты, который нужно удалить