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; }
/** * 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)); }
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'); }