コード例 #1
0
 function send_payment($payment_type_gid, $id_user, $amount, $currency_gid, $system_gid, $payment_data = array(), $check_html_action = false)
 {
     $return = array("errors" => array(), "info" => array());
     $CI =& get_instance();
     $CI->load->model('Payments_model');
     $for_validate = array("payment_type_gid" => $payment_type_gid, "id_user" => $id_user, "amount" => $amount, "currency_gid" => $currency_gid, "system_gid" => $system_gid, "payment_data" => $payment_data);
     $validate_data = $CI->Payments_model->validate_payment(null, $for_validate);
     if (!empty($validate_data["errors"])) {
         $return["errors"] = $validate_data["errors"];
         return $return;
     }
     $CI->load->model('payments/models/Payment_systems_model');
     if ($check_html_action == "form") {
         $post_data = array("payment_type_gid" => $validate_data['data']['payment_type_gid'], "id_user" => $validate_data['data']['id_user'], "amount" => $validate_data['data']['amount'], "currency_gid" => $validate_data['data']['currency_gid'], "system_gid" => $validate_data['data']['system_gid'], "payment_data" => $payment_data);
         if ($CI->Payment_systems_model->action_html($system_gid)) {
             post_location_request(site_url() . "payments/form", $post_data);
             return;
         }
         if ($CI->Payment_systems_model->action_js($system_gid)) {
             $payment_id = $CI->Payments_model->save_payment(null, $validate_data['data']);
             redirect(site_url() . 'payments/js/' . $payment_id);
             return;
         }
     }
     if ($check_html_action == "validate" && $CI->Payment_systems_model->action_html($system_gid)) {
         $validate = $CI->Payment_systems_model->action_validate($system_gid, $payment_data);
         if (!empty($validate["errors"])) {
             $return = $validate;
             return $return;
         } else {
             $payment_data = $validate["data"];
         }
     }
     $for_validate = array("payment_type_gid" => $payment_type_gid, "id_user" => $id_user, "amount" => $amount, "currency_gid" => $currency_gid, "system_gid" => $system_gid, "payment_data" => $payment_data);
     $validate_data = $CI->Payments_model->validate_payment(null, $for_validate);
     if (!empty($validate_data["errors"])) {
         $return["errors"] = $validate_data["errors"];
     } else {
         $payment = $validate_data["data"];
         $id_payment = $CI->Payments_model->save_payment(null, $payment);
         $payment = $CI->Payments_model->get_payment_by_id($id_payment);
         $payment["id_payment"] = $payment["id"];
         $return = $CI->Payment_systems_model->action_request($payment["system_gid"], $payment);
     }
     return $return;
 }
コード例 #2
0
ファイル: api_banners.php プロジェクト: Calit2-UCI/IoT_Map
 /**
  * Activate banner
  *
  * @param int $banner_id
  * @param type $used_position
  */
 public function activate()
 {
     if ($this->session->userdata('auth_type') != 'user') {
         log_message('error', 'banners API: Wrong auth type ("' . $this->session->userdata('auth_type') . '")');
         $this->set_api_content('errors', l('api_error_wrong_auth_type', 'banners'));
         return false;
     }
     $banner_id = $this->input->post('banner_id', true);
     $banner_id = is_numeric($banner_id) && $banner_id > 0 ? intval($banner_id) : 0;
     if (!$banner_id) {
         $this->set_api_content('error', l('api_error_empty_banner_id', 'banners'));
         return false;
     }
     if ($this->pg_module->is_module_installed('services')) {
         $this->load->model('Services_model');
         $service_data = $this->Services_model->get_service_by_gid('banner_service');
         if (empty($service_data) || !$service_data['status']) {
             $this->set_api_content('errors', l('error_empty_service_activate_service', 'banners'));
             return false;
         }
     } else {
         $this->set_api_content('errors', l('error_empty_service_activate_service', 'banners'));
         return false;
     }
     $banner = $this->Banners_model->get($banner_id);
     // check banner's existence
     $info = $this->Banners_model->get_user_activate_info($banner_id);
     $this->load->model('banners/models/Banner_place_model');
     $place = $this->Banner_place_model->get($banner['banner_place_id']);
     $place['places_in_rotation'] = intval($place['places_in_rotation']);
     $this->load->model('banners/models/Banner_group_model');
     $groups = $this->Banner_group_model->get_all_groups_key_id();
     $gids = array_keys($groups);
     $fill_places = $this->Banner_group_model->get_fill_positions($gids, $banner['banner_place_id'], $banner['id']);
     foreach ($groups as $k => $group) {
         $groups[$k]['free_positions'] = $place['places_in_rotation'];
         if (!empty($fill_places[$group['id']])) {
             $groups[$k]['free_positions'] = $groups[$k]['free_positions'] - $fill_places[$group['id']];
             if ($groups[$k]['free_positions'] < 0) {
                 $groups[$k]['free_positions'] = 0;
             }
         }
     }
     $used_position = $this->input->post('used_position', true);
     $validate = array('positions' => array(), 'sum' => 0);
     if ($used_position) {
         foreach ($used_position as $group_id => $used_position) {
             $used_position = intval($used_position);
             if ($used_position > $groups[$group_id]['free_positions']) {
                 $used_position = $groups[$group_id]['free_positions'];
             }
             if ($used_position < 0) {
                 $used_position = 0;
             }
             if ($used_position) {
                 $validate['positions'][$group_id] = $used_position;
                 $validate['sum'] += $used_position * $groups[$group_id]['price'];
             }
         }
     }
     if ($validate['sum'] <= 0) {
         $this->set_api_content('errors', l('error_empty_activate_banner_sum', 'banners'));
         return false;
     } else {
         $this->Banners_model->set_user_activate_info($banner_id, $validate);
         $this->load->helper('payments');
         post_location_request(site_url() . 'services/form/banner_service', array('price' => $validate['sum'], 'id_banner_payment' => $banner_id));
     }
     foreach ($groups as $k => $group) {
         $groups[$k]['user_positions'] = !empty($info['positions'][$group['id']]) ? $info['positions'][$group['id']] : 0;
     }
     $this->set_api_content('data', array('service_data' => $service_data, 'groups' => $groups));
 }
コード例 #3
0
ファイル: banners.php プロジェクト: Calit2-UCI/IoT_Map
 public function activate($banner_id)
 {
     if ($this->session->userdata("auth_type") != "user") {
         show_404();
         return;
     }
     if ($this->pg_module->is_module_installed('services')) {
         $this->load->model('Services_model');
         $service_data = $this->Services_model->get_service_by_gid('banner_service');
         if (empty($service_data) || !$service_data["status"]) {
             $this->system_messages->add_message('error', l('error_empty_service_activate_service', 'banners'));
         }
         $this->template_lite->assign('service_data', $service_data);
     } else {
         $this->system_messages->add_message('error', l('error_empty_service_activate_service', 'banners'));
         redirect(site_url() . 'users/account/banners');
     }
     $banner = $this->Banners_model->get($banner_id);
     $info = $this->Banners_model->get_user_activate_info($banner_id);
     $this->load->model('banners/models/Banner_place_model');
     $place = $this->Banner_place_model->get($banner["banner_place_id"]);
     $place['places_in_rotation'] = intval($place['places_in_rotation']);
     $this->load->model('banners/models/Banner_group_model');
     $groups = $this->Banner_group_model->get_all_groups_key_id();
     $gids = array_keys($groups);
     $fill_places = $this->Banner_group_model->get_fill_positions($gids, $banner["banner_place_id"], $banner['id']);
     foreach ($groups as $k => $group) {
         $groups[$k]["free_positions"] = $place['places_in_rotation'];
         if (!empty($fill_places[$group["id"]])) {
             $groups[$k]["free_positions"] = $groups[$k]["free_positions"] - $fill_places[$group["id"]];
             if ($groups[$k]["free_positions"] < 0) {
                 $groups[$k]["free_positions"] = 0;
             }
         }
     }
     if ($this->input->post('btn_activate')) {
         $used_position = $this->input->post('used_position', true);
         $validate = array("positions" => array(), "sum" => 0);
         foreach ((array) $used_position as $group_id => $used_position) {
             $used_position = intval($used_position);
             if ($used_position > $groups[$group_id]["free_positions"]) {
                 $used_position = $groups[$group_id]["free_positions"];
             }
             if ($used_position < 0) {
                 $used_position = 0;
             }
             if ($used_position) {
                 $validate["positions"][$group_id] = $used_position;
                 $validate["sum"] += $used_position * $groups[$group_id]["price"];
             }
         }
         if ($validate["sum"] <= 0) {
             $this->system_messages->add_message('error', l('error_empty_activate_banner_sum', 'banners'));
             $info = $validate;
         } else {
             $this->Banners_model->set_user_activate_info($banner_id, $validate);
             $this->session->set_userdata('service_redirect', site_url() . 'users/account/banners');
             $this->load->helper('payments');
             post_location_request(site_url() . "services/form/banner_service", array('price' => $validate["sum"], 'id_banner_payment' => $banner_id));
         }
     }
     foreach ($groups as $k => $group) {
         $groups[$k]["user_positions"] = !empty($info["positions"][$group["id"]]) ? $info["positions"][$group["id"]] : 0;
         if (in_array($group["id"], $banner['banner_groups'])) {
             $groups[$k]['status'] = 1;
         } else {
             $groups[$k]['status'] = 0;
         }
     }
     $this->template_lite->assign('groups', $groups);
     $period = $this->pg_module->get_module_config("banners", "period");
     $this->template_lite->assign('period', $period);
     if ($this->pg_module->is_module_installed('payments')) {
         $this->load->model('payments/models/Payment_currency_model');
         $base_currency = $this->Payment_currency_model->get_currency_default(true);
         $this->template_lite->assign('base_currency', $base_currency);
     }
     $this->system_messages->set_data('back_link', site_url() . "users/account/banners");
     $this->Menu_model->breadcrumbs_set_active(l('header_my_banners', 'banners'), site_url() . 'users/account/banners');
     $this->Menu_model->breadcrumbs_set_active(l('header_my_banner_activate', 'banners'), site_url() . 'banners/activate/' . $banner_id);
     $this->template_lite->view('my_activate');
 }