Untitled
unknown
php
3 years ago
366 kB
8
Indexable
<?php if (! defined('BASEPATH')) { exit('No direct script access allowed'); } /** * @category controller * class home */ class Home extends CI_Controller { /** * load constructor * @access public * @return void */ public $module_access; public $language; public $is_rtl; public $user_id; public $is_demo; public $is_ad_enabled; public $is_ad_enabled1; public $is_ad_enabled2; public $is_ad_enabled3; public $is_ad_enabled4; public $ad_content1; public $ad_content1_mobile; public $ad_content2; public $ad_content3; public $ad_content4; public $app_product_id; public $APP_VERSION; public function __construct() { parent::__construct(); set_time_limit(0); $this->load->helpers(array('my_helper','addon_helper')); $this->is_rtl=FALSE; $is_demo = $this->config->item("is_demo"); if($is_demo=="") $is_demo="0"; $this->is_demo=$is_demo; $this->language=""; $this->_language_loader(); $this->is_ad_enabled=false; $this->is_ad_enabled1=false; $this->is_ad_enabled2=false; $this->is_ad_enabled3=false; $this->is_ad_enabled4=false; $this->ad_content1=""; $this->ad_content1_mobile=""; $this->ad_content2=""; $this->ad_content3=""; $this->ad_content4=""; $this->app_product_id=28; $this->APP_VERSION=""; ignore_user_abort(TRUE); $seg = $this->uri->segment(2); if ($seg!="installation" && $seg!= "installation_action" && $seg!="central_webhook_callback" && $seg!="webhook_callback_main" ) { if (file_exists(APPPATH.'install.txt')) { redirect('home/installation', 'location'); } } //if($seg!="central_webhook_callback" && $seg!="webhook_callback_main") if ($seg!="installation" && $seg!= "installation_action") { $this->load->database(); $this->load->model('basic'); $this->_time_zone_set(); $this->user_id=$this->session->userdata("user_id"); $this->load->library('upload'); $this->load->helper('security'); $this->upload_path = realpath(APPPATH . '../upload'); $this->session->unset_userdata('set_custom_link'); /* $query = 'SET SESSION group_concat_max_len=9990000000000000000'; $this->db->query($query); */ /* $q= "SET SESSION wait_timeout=50000"; $this->db->query($q); */ /**Disable STRICT_TRANS_TABLES mode if exist on mysql ***/ $query="SET SESSION sql_mode = ''"; $this->db->query($query); /**Change Datbase Collation **/ $query="SET NAMES utf8mb4"; $this->db->query($query); //loading addon language //$this->language_loader_addon(); /* if(function_exists('ini_set')){ ini_set('memory_limit', '-1'); } */ if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') != 'Admin') { $package_info=$this->session->userdata("package_info"); $module_ids=''; if(isset($package_info["module_ids"])) $module_ids=$package_info["module_ids"]; $this->module_access=explode(',', $module_ids); } } // affiliate cookies $this->load->helper('cookie'); if(isset($_GET['ref']) && !empty($_GET['ref'])) { $affiliateid = $_GET['ref']; $visitor_cookie = array( "name" => "affiliate_id", "value" => $affiliateid, "expire" => 604800 ); set_cookie($visitor_cookie); $convertidintobinaryid = pack("H*", $affiliateid); $explodeBinarycontactid = explode("-", $convertidintobinaryid); $aff_id = $explodeBinarycontactid[0]; $visitorip = $this->real_ip(); $click_data = []; $this->basic->insert_data("affiliate_visitors_action",['affiliate_id'=>$aff_id,'type'=>'click','ip_address'=>$visitorip,'clicked_time'=>date("Y-m-d H:i:s")]); } if($this->config->item('force_https')=='1') { $actualLink = $actualLink = base_url(uri_string()); $poS=strpos($actualLink, 'http://'); if($poS!==FALSE) { $new_link=str_replace('http://', 'https://', $actualLink); redirect($new_link,'refresh'); } } if($this->session->userdata('log_me_out') == '1') $this->logout(); if($this->session->userdata('csrf_token_session')=="") $this->session->set_userdata('csrf_token_session', bin2hex(random_bytes(32))); } public function _language_loader($default_lang="") { if(!$this->config->item("language") || $this->config->item("language")=="") $this->language="english"; else $this->language=$this->config->item('language'); if($this->session->userdata("selected_language")!="") $this->language = $this->session->userdata("selected_language"); else if(!$this->config->item("language") || $this->config->item("language")=="") $this->language="english"; else $this->language=$this->config->item('language'); if($default_lang!="") $this->language=$default_lang; // if($this->language=="arabic") // $this->is_rtl=TRUE; $path=str_replace('\\', '/', APPPATH.'/language/'.$this->language); $files=$this->_scanAll($path); foreach ($files as $key2 => $value2) { $current_file=isset($value2['file']) ? str_replace('\\', '/', $value2['file']) : ""; //application/modules/addon_folder/language/language_folder/someting_lang.php if($current_file=="" || !is_file($current_file)) continue; $current_file_explode=explode('/',$current_file); $filename=array_pop($current_file_explode); $pos=strpos($filename,'_lang.php'); if($pos!==false) // check if it is a lang file or not { $filename=str_replace('_lang.php', '', $filename); $this->lang->load($filename, $this->language); } } } public function installation() { if (!file_exists(APPPATH.'install.txt')) { redirect('home/login', 'location'); } $data = array("body" => "front/install", "page_title" => "Install Package","language_info" => $this->_language_list()); $this->_subscription_viewcontroller($data); } public function installation_action() { if (!file_exists(APPPATH.'install.txt')) { redirect('home/login', 'location'); } if ($_POST) { // validation $this->form_validation->set_rules('host_name', '<b>Host Name</b>', 'trim|required'); $this->form_validation->set_rules('database_name', '<b>Database Name</b>', 'trim|required'); $this->form_validation->set_rules('database_username', '<b>Database Username</b>', 'trim|required'); $this->form_validation->set_rules('database_password', '<b>Database Password</b>', 'trim'); $this->form_validation->set_rules('app_username', '<b>Admin Panel Login Email</b>', 'trim|required|valid_email'); $this->form_validation->set_rules('app_password', '<b>Admin Panel Login Password</b>', 'trim|required'); $this->form_validation->set_rules('institute_name', '<b>Company Name</b>', 'trim'); $this->form_validation->set_rules('institute_address', '<b>Company Address</b>', 'trim'); $this->form_validation->set_rules('institute_mobile', '<b>Company Phone / Mobile</b>', 'trim'); $this->form_validation->set_rules('language', '<b>Language</b>', 'trim'); // go to config form page if validation wrong if ($this->form_validation->run() == false) { return $this->installation(); } else { $host_name = addslashes(strip_tags($this->input->post('host_name', true))); $database_name = addslashes(strip_tags($this->input->post('database_name', true))); $database_username = addslashes(strip_tags($this->input->post('database_username', true))); $database_password = addslashes(strip_tags($this->input->post('database_password', true))); $app_username = addslashes(strip_tags($this->input->post('app_username', true))); $app_password = addslashes(strip_tags($this->input->post('app_password', true))); $institute_name = addslashes(strip_tags($this->input->post('institute_name', true))); $institute_address = addslashes(strip_tags($this->input->post('institute_address', true))); $institute_mobile = addslashes(strip_tags($this->input->post('institute_mobile', true))); $language = addslashes(strip_tags($this->input->post('language', true))); $con=@mysqli_connect($host_name, $database_username, $database_password); if (!$con) { $mysql_error = "Could not connect to MySQL : "; $mysql_error .= mysqli_connect_error(); $this->session->set_userdata('mysql_error', $mysql_error); return $this->installation(); } if (!@mysqli_select_db($con,$database_name)) { $this->session->set_userdata('mysql_error', "Database not found."); return $this->installation(); } mysqli_close($con); // writing application/config/my_config include('application/config/my_config.php'); $config['institute_address1'] = $institute_name; $config['institute_address2'] = $institute_address; $config['institute_email'] = $app_username; $config['institute_mobile'] = $institute_mobile; $config['language'] = $language; $config['instagram_reply_enable_disable'] = '1'; file_put_contents('application/config/my_config.php', '<?php $config = ' . var_export($config, true) . ';'); //writting application/config/database $database_data = ""; $database_data.= "<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');\n \$active_group = 'default'; \$active_record = true; \$db['default']['hostname'] = '$host_name'; \$db['default']['username'] = '$database_username'; \$db['default']['password'] = '$database_password'; \$db['default']['database'] = '$database_name'; \$db['default']['dbdriver'] = 'mysqli'; \$db['default']['dbprefix'] = ''; \$db['default']['pconnect'] = FALSE; \$db['default']['db_debug'] = TRUE; \$db['default']['cache_on'] = FALSE; \$db['default']['cachedir'] = ''; \$db['default']['char_set'] = 'utf8'; \$db['default']['dbcollat'] = 'utf8_general_ci'; \$db['default']['swap_pre'] = ''; \$db['default']['autoinit'] = TRUE; \$db['default']['stricton'] = FALSE;"; file_put_contents(APPPATH.'config/database.php', $database_data, LOCK_EX); //writting application/config/database // writting client js // $client_js_content=file_get_contents('js/my_chat_custom.js'); // $client_js_content_new=str_replace("base_url_replace/", site_url(), $client_js_content); // file_put_contents('js/my_chat_custom.js', $client_js_content_new, LOCK_EX); // writting client js // loding database library, because we need to run queries below and configs are already written $this->load->database(); $this->load->model('basic'); // loding database library, because we need to run queries below and configs are already written // dumping sql $dump_file_name = 'initial_db.sql'; $dump_sql_path = 'assets/backup_db/'.$dump_file_name; $this->basic->import_dump($dump_sql_path); // dumping sql // Insert Version $this->db->insert('version', array('version' => trim($this->config->item('product_version')), 'current' => '1', 'date' => date('Y-m-d H:i:s'))); //generating hash password for admin and updaing database $app_password = md5($app_password); $this->basic->update_data($table = "users", $where = array("user_type" => "Admin"), $update_data = array("mobile" => $institute_mobile, "email" => $app_username, "password" => $app_password, "name" => $institute_name, "status" => "1", "deleted" => "0", "address" => $institute_address)); //generating hash password for admin and updaing database //deleting the install.txt file,because installation is complete if (file_exists(APPPATH.'install.txt')) { unlink(APPPATH.'install.txt'); } //deleting the install.txt file,because installation is complete redirect('home/login'); } } } public function index() { $display_landing_page=$this->config->item('display_landing_page'); if($display_landing_page=='') $display_landing_page='0'; if($display_landing_page=='0') $this->login_page(); else $this->_site_viewcontroller(); } public function _time_zone_set() { $time_zone = $this->config->item('time_zone'); if ($time_zone== '') { $time_zone="Europe/Dublin"; } date_default_timezone_set($time_zone); } public function _time_zone_list() { return $timezones = array( 'America/Adak' => '(GMT-10:00) America/Adak (Hawaii-Aleutian Standard Time)', 'America/Atka' => '(GMT-10:00) America/Atka (Hawaii-Aleutian Standard Time)', 'America/Anchorage' => '(GMT-9:00) America/Anchorage (Alaska Standard Time)', 'America/Juneau' => '(GMT-9:00) America/Juneau (Alaska Standard Time)', 'America/Nome' => '(GMT-9:00) America/Nome (Alaska Standard Time)', 'America/Yakutat' => '(GMT-9:00) America/Yakutat (Alaska Standard Time)', 'America/Dawson' => '(GMT-8:00) America/Dawson (Pacific Standard Time)', 'America/Ensenada' => '(GMT-8:00) America/Ensenada (Pacific Standard Time)', 'America/Los_Angeles' => '(GMT-8:00) America/Los_Angeles (Pacific Standard Time)', 'America/Tijuana' => '(GMT-8:00) America/Tijuana (Pacific Standard Time)', 'America/Vancouver' => '(GMT-8:00) America/Vancouver (Pacific Standard Time)', 'America/Whitehorse' => '(GMT-8:00) America/Whitehorse (Pacific Standard Time)', 'Canada/Pacific' => '(GMT-8:00) Canada/Pacific (Pacific Standard Time)', 'Canada/Yukon' => '(GMT-8:00) Canada/Yukon (Pacific Standard Time)', 'Mexico/BajaNorte' => '(GMT-8:00) Mexico/BajaNorte (Pacific Standard Time)', 'America/Boise' => '(GMT-7:00) America/Boise (Mountain Standard Time)', 'America/Cambridge_Bay' => '(GMT-7:00) America/Cambridge_Bay (Mountain Standard Time)', 'America/Chihuahua' => '(GMT-7:00) America/Chihuahua (Mountain Standard Time)', 'America/Dawson_Creek' => '(GMT-7:00) America/Dawson_Creek (Mountain Standard Time)', 'America/Denver' => '(GMT-7:00) America/Denver (Mountain Standard Time)', 'America/Edmonton' => '(GMT-7:00) America/Edmonton (Mountain Standard Time)', 'America/Hermosillo' => '(GMT-7:00) America/Hermosillo (Mountain Standard Time)', 'America/Inuvik' => '(GMT-7:00) America/Inuvik (Mountain Standard Time)', 'America/Mazatlan' => '(GMT-7:00) America/Mazatlan (Mountain Standard Time)', 'America/Phoenix' => '(GMT-7:00) America/Phoenix (Mountain Standard Time)', 'America/Shiprock' => '(GMT-7:00) America/Shiprock (Mountain Standard Time)', 'America/Yellowknife' => '(GMT-7:00) America/Yellowknife (Mountain Standard Time)', 'Canada/Mountain' => '(GMT-7:00) Canada/Mountain (Mountain Standard Time)', 'Mexico/BajaSur' => '(GMT-7:00) Mexico/BajaSur (Mountain Standard Time)', 'America/Belize' => '(GMT-6:00) America/Belize (Central Standard Time)', 'America/Cancun' => '(GMT-6:00) America/Cancun (Central Standard Time)', 'America/Chicago' => '(GMT-6:00) America/Chicago (Central Standard Time)', 'America/Costa_Rica' => '(GMT-6:00) America/Costa_Rica (Central Standard Time)', 'America/El_Salvador' => '(GMT-6:00) America/El_Salvador (Central Standard Time)', 'America/Guatemala' => '(GMT-6:00) America/Guatemala (Central Standard Time)', 'America/Knox_IN' => '(GMT-6:00) America/Knox_IN (Central Standard Time)', 'America/Managua' => '(GMT-6:00) America/Managua (Central Standard Time)', 'America/Menominee' => '(GMT-6:00) America/Menominee (Central Standard Time)', 'America/Merida' => '(GMT-6:00) America/Merida (Central Standard Time)', 'America/Mexico_City' => '(GMT-6:00) America/Mexico_City (Central Standard Time)', 'America/Monterrey' => '(GMT-6:00) America/Monterrey (Central Standard Time)', 'America/Rainy_River' => '(GMT-6:00) America/Rainy_River (Central Standard Time)', 'America/Rankin_Inlet' => '(GMT-6:00) America/Rankin_Inlet (Central Standard Time)', 'America/Regina' => '(GMT-6:00) America/Regina (Central Standard Time)', 'America/Swift_Current' => '(GMT-6:00) America/Swift_Current (Central Standard Time)', 'America/Tegucigalpa' => '(GMT-6:00) America/Tegucigalpa (Central Standard Time)', 'America/Winnipeg' => '(GMT-6:00) America/Winnipeg (Central Standard Time)', 'Canada/Central' => '(GMT-6:00) Canada/Central (Central Standard Time)', 'Canada/East-Saskatchewan' => '(GMT-6:00) Canada/East-Saskatchewan (Central Standard Time)', 'Canada/Saskatchewan' => '(GMT-6:00) Canada/Saskatchewan (Central Standard Time)', 'Chile/EasterIsland' => '(GMT-6:00) Chile/EasterIsland (Easter Is. Time)', 'Mexico/General' => '(GMT-6:00) Mexico/General (Central Standard Time)', 'America/Atikokan' => '(GMT-5:00) America/Atikokan (Eastern Standard Time)', 'America/Bogota' => '(GMT-5:00) America/Bogota (Colombia Time)', 'America/Cayman' => '(GMT-5:00) America/Cayman (Eastern Standard Time)', 'America/Coral_Harbour' => '(GMT-5:00) America/Coral_Harbour (Eastern Standard Time)', 'America/Detroit' => '(GMT-5:00) America/Detroit (Eastern Standard Time)', 'America/Fort_Wayne' => '(GMT-5:00) America/Fort_Wayne (Eastern Standard Time)', 'America/Grand_Turk' => '(GMT-5:00) America/Grand_Turk (Eastern Standard Time)', 'America/Guayaquil' => '(GMT-5:00) America/Guayaquil (Ecuador Time)', 'America/Havana' => '(GMT-5:00) America/Havana (Cuba Standard Time)', 'America/Indianapolis' => '(GMT-5:00) America/Indianapolis (Eastern Standard Time)', 'America/Iqaluit' => '(GMT-5:00) America/Iqaluit (Eastern Standard Time)', 'America/Jamaica' => '(GMT-5:00) America/Jamaica (Eastern Standard Time)', 'America/Lima' => '(GMT-5:00) America/Lima (Peru Time)', 'America/Louisville' => '(GMT-5:00) America/Louisville (Eastern Standard Time)', 'America/Montreal' => '(GMT-5:00) America/Montreal (Eastern Standard Time)', 'America/Nassau' => '(GMT-5:00) America/Nassau (Eastern Standard Time)', 'America/New_York' => '(GMT-5:00) America/New_York (Eastern Standard Time)', 'America/Nipigon' => '(GMT-5:00) America/Nipigon (Eastern Standard Time)', 'America/Panama' => '(GMT-5:00) America/Panama (Eastern Standard Time)', 'America/Pangnirtung' => '(GMT-5:00) America/Pangnirtung (Eastern Standard Time)', 'America/Port-au-Prince' => '(GMT-5:00) America/Port-au-Prince (Eastern Standard Time)', 'America/Resolute' => '(GMT-5:00) America/Resolute (Eastern Standard Time)', 'America/Thunder_Bay' => '(GMT-5:00) America/Thunder_Bay (Eastern Standard Time)', 'America/Toronto' => '(GMT-5:00) America/Toronto (Eastern Standard Time)', 'Canada/Eastern' => '(GMT-5:00) Canada/Eastern (Eastern Standard Time)', 'America/Caracas' => '(GMT-4:-30) America/Caracas (Venezuela Time)', 'America/Anguilla' => '(GMT-4:00) America/Anguilla (Atlantic Standard Time)', 'America/Antigua' => '(GMT-4:00) America/Antigua (Atlantic Standard Time)', 'America/Aruba' => '(GMT-4:00) America/Aruba (Atlantic Standard Time)', 'America/Asuncion' => '(GMT-4:00) America/Asuncion (Paraguay Time)', 'America/Barbados' => '(GMT-4:00) America/Barbados (Atlantic Standard Time)', 'America/Blanc-Sablon' => '(GMT-4:00) America/Blanc-Sablon (Atlantic Standard Time)', 'America/Boa_Vista' => '(GMT-4:00) America/Boa_Vista (Amazon Time)', 'America/Campo_Grande' => '(GMT-4:00) America/Campo_Grande (Amazon Time)', 'America/Cuiaba' => '(GMT-4:00) America/Cuiaba (Amazon Time)', 'America/Curacao' => '(GMT-4:00) America/Curacao (Atlantic Standard Time)', 'America/Dominica' => '(GMT-4:00) America/Dominica (Atlantic Standard Time)', 'America/Eirunepe' => '(GMT-4:00) America/Eirunepe (Amazon Time)', 'America/Glace_Bay' => '(GMT-4:00) America/Glace_Bay (Atlantic Standard Time)', 'America/Goose_Bay' => '(GMT-4:00) America/Goose_Bay (Atlantic Standard Time)', 'America/Grenada' => '(GMT-4:00) America/Grenada (Atlantic Standard Time)', 'America/Guadeloupe' => '(GMT-4:00) America/Guadeloupe (Atlantic Standard Time)', 'America/Guyana' => '(GMT-4:00) America/Guyana (Guyana Time)', 'America/Halifax' => '(GMT-4:00) America/Halifax (Atlantic Standard Time)', 'America/La_Paz' => '(GMT-4:00) America/La_Paz (Bolivia Time)', 'America/Manaus' => '(GMT-4:00) America/Manaus (Amazon Time)', 'America/Marigot' => '(GMT-4:00) America/Marigot (Atlantic Standard Time)', 'America/Martinique' => '(GMT-4:00) America/Martinique (Atlantic Standard Time)', 'America/Moncton' => '(GMT-4:00) America/Moncton (Atlantic Standard Time)', 'America/Montserrat' => '(GMT-4:00) America/Montserrat (Atlantic Standard Time)', 'America/Port_of_Spain' => '(GMT-4:00) America/Port_of_Spain (Atlantic Standard Time)', 'America/Porto_Acre' => '(GMT-4:00) America/Porto_Acre (Amazon Time)', 'America/Porto_Velho' => '(GMT-4:00) America/Porto_Velho (Amazon Time)', 'America/Puerto_Rico' => '(GMT-4:00) America/Puerto_Rico (Atlantic Standard Time)', 'America/Rio_Branco' => '(GMT-4:00) America/Rio_Branco (Amazon Time)', 'America/Santiago' => '(GMT-4:00) America/Santiago (Chile Time)', 'America/Santo_Domingo' => '(GMT-4:00) America/Santo_Domingo (Atlantic Standard Time)', 'America/St_Barthelemy' => '(GMT-4:00) America/St_Barthelemy (Atlantic Standard Time)', 'America/St_Kitts' => '(GMT-4:00) America/St_Kitts (Atlantic Standard Time)', 'America/St_Lucia' => '(GMT-4:00) America/St_Lucia (Atlantic Standard Time)', 'America/St_Thomas' => '(GMT-4:00) America/St_Thomas (Atlantic Standard Time)', 'America/St_Vincent' => '(GMT-4:00) America/St_Vincent (Atlantic Standard Time)', 'America/Thule' => '(GMT-4:00) America/Thule (Atlantic Standard Time)', 'America/Tortola' => '(GMT-4:00) America/Tortola (Atlantic Standard Time)', 'America/Virgin' => '(GMT-4:00) America/Virgin (Atlantic Standard Time)', 'Antarctica/Palmer' => '(GMT-4:00) Antarctica/Palmer (Chile Time)', 'Atlantic/Bermuda' => '(GMT-4:00) Atlantic/Bermuda (Atlantic Standard Time)', 'Atlantic/Stanley' => '(GMT-4:00) Atlantic/Stanley (Falkland Is. Time)', 'Brazil/Acre' => '(GMT-4:00) Brazil/Acre (Amazon Time)', 'Brazil/West' => '(GMT-4:00) Brazil/West (Amazon Time)', 'Canada/Atlantic' => '(GMT-4:00) Canada/Atlantic (Atlantic Standard Time)', 'Chile/Continental' => '(GMT-4:00) Chile/Continental (Chile Time)', 'America/St_Johns' => '(GMT-3:-30) America/St_Johns (Newfoundland Standard Time)', 'Canada/Newfoundland' => '(GMT-3:-30) Canada/Newfoundland (Newfoundland Standard Time)', 'America/Araguaina' => '(GMT-3:00) America/Araguaina (Brasilia Time)', 'America/Bahia' => '(GMT-3:00) America/Bahia (Brasilia Time)', 'America/Belem' => '(GMT-3:00) America/Belem (Brasilia Time)', 'America/Buenos_Aires' => '(GMT-3:00) America/Buenos_Aires (Argentine Time)', 'America/Catamarca' => '(GMT-3:00) America/Catamarca (Argentine Time)', 'America/Cayenne' => '(GMT-3:00) America/Cayenne (French Guiana Time)', 'America/Cordoba' => '(GMT-3:00) America/Cordoba (Argentine Time)', 'America/Fortaleza' => '(GMT-3:00) America/Fortaleza (Brasilia Time)', 'America/Godthab' => '(GMT-3:00) America/Godthab (Western Greenland Time)', 'America/Jujuy' => '(GMT-3:00) America/Jujuy (Argentine Time)', 'America/Maceio' => '(GMT-3:00) America/Maceio (Brasilia Time)', 'America/Mendoza' => '(GMT-3:00) America/Mendoza (Argentine Time)', 'America/Miquelon' => '(GMT-3:00) America/Miquelon (Pierre & Miquelon Standard Time)', 'America/Montevideo' => '(GMT-3:00) America/Montevideo (Uruguay Time)', 'America/Paramaribo' => '(GMT-3:00) America/Paramaribo (Suriname Time)', 'America/Recife' => '(GMT-3:00) America/Recife (Brasilia Time)', 'America/Rosario' => '(GMT-3:00) America/Rosario (Argentine Time)', 'America/Santarem' => '(GMT-3:00) America/Santarem (Brasilia Time)', 'America/Sao_Paulo' => '(GMT-3:00) America/Sao_Paulo (Brasilia Time)', 'Antarctica/Rothera' => '(GMT-3:00) Antarctica/Rothera (Rothera Time)', 'Brazil/East' => '(GMT-3:00) Brazil/East (Brasilia Time)', 'America/Noronha' => '(GMT-2:00) America/Noronha (Fernando de Noronha Time)', 'Atlantic/South_Georgia' => '(GMT-2:00) Atlantic/South_Georgia (South Georgia Standard Time)', 'Brazil/DeNoronha' => '(GMT-2:00) Brazil/DeNoronha (Fernando de Noronha Time)', 'America/Scoresbysund' => '(GMT-1:00) America/Scoresbysund (Eastern Greenland Time)', 'Atlantic/Azores' => '(GMT-1:00) Atlantic/Azores (Azores Time)', 'Atlantic/Cape_Verde' => '(GMT-1:00) Atlantic/Cape_Verde (Cape Verde Time)', 'Africa/Abidjan' => '(GMT+0:00) Africa/Abidjan (Greenwich Mean Time)', 'Africa/Accra' => '(GMT+0:00) Africa/Accra (Ghana Mean Time)', 'Africa/Bamako' => '(GMT+0:00) Africa/Bamako (Greenwich Mean Time)', 'Africa/Banjul' => '(GMT+0:00) Africa/Banjul (Greenwich Mean Time)', 'Africa/Bissau' => '(GMT+0:00) Africa/Bissau (Greenwich Mean Time)', 'Africa/Casablanca' => '(GMT+0:00) Africa/Casablanca (Western European Time)', 'Africa/Conakry' => '(GMT+0:00) Africa/Conakry (Greenwich Mean Time)', 'Africa/Dakar' => '(GMT+0:00) Africa/Dakar (Greenwich Mean Time)', 'Africa/El_Aaiun' => '(GMT+0:00) Africa/El_Aaiun (Western European Time)', 'Africa/Freetown' => '(GMT+0:00) Africa/Freetown (Greenwich Mean Time)', 'Africa/Lome' => '(GMT+0:00) Africa/Lome (Greenwich Mean Time)', 'Africa/Monrovia' => '(GMT+0:00) Africa/Monrovia (Greenwich Mean Time)', 'Africa/Nouakchott' => '(GMT+0:00) Africa/Nouakchott (Greenwich Mean Time)', 'Africa/Ouagadougou' => '(GMT+0:00) Africa/Ouagadougou (Greenwich Mean Time)', 'Africa/Sao_Tome' => '(GMT+0:00) Africa/Sao_Tome (Greenwich Mean Time)', 'Africa/Timbuktu' => '(GMT+0:00) Africa/Timbuktu (Greenwich Mean Time)', 'America/Danmarkshavn' => '(GMT+0:00) America/Danmarkshavn (Greenwich Mean Time)', 'Atlantic/Canary' => '(GMT+0:00) Atlantic/Canary (Western European Time)', 'Atlantic/Faeroe' => '(GMT+0:00) Atlantic/Faeroe (Western European Time)', 'Atlantic/Faroe' => '(GMT+0:00) Atlantic/Faroe (Western European Time)', 'Atlantic/Madeira' => '(GMT+0:00) Atlantic/Madeira (Western European Time)', 'Atlantic/Reykjavik' => '(GMT+0:00) Atlantic/Reykjavik (Greenwich Mean Time)', 'Atlantic/St_Helena' => '(GMT+0:00) Atlantic/St_Helena (Greenwich Mean Time)', 'Europe/Belfast' => '(GMT+0:00) Europe/Belfast (Greenwich Mean Time)', 'Europe/Dublin' => '(GMT+0:00) Europe/Dublin (Greenwich Mean Time)', 'Europe/Guernsey' => '(GMT+0:00) Europe/Guernsey (Greenwich Mean Time)', 'Europe/Isle_of_Man' => '(GMT+0:00) Europe/Isle_of_Man (Greenwich Mean Time)', 'Europe/Jersey' => '(GMT+0:00) Europe/Jersey (Greenwich Mean Time)', 'Europe/Lisbon' => '(GMT+0:00) Europe/Lisbon (Western European Time)', 'Europe/London' => '(GMT+0:00) Europe/London (Greenwich Mean Time)', 'Africa/Algiers' => '(GMT+1:00) Africa/Algiers (Central European Time)', 'Africa/Bangui' => '(GMT+1:00) Africa/Bangui (Western African Time)', 'Africa/Brazzaville' => '(GMT+1:00) Africa/Brazzaville (Western African Time)', 'Africa/Ceuta' => '(GMT+1:00) Africa/Ceuta (Central European Time)', 'Africa/Douala' => '(GMT+1:00) Africa/Douala (Western African Time)', 'Africa/Kinshasa' => '(GMT+1:00) Africa/Kinshasa (Western African Time)', 'Africa/Lagos' => '(GMT+1:00) Africa/Lagos (Western African Time)', 'Africa/Libreville' => '(GMT+1:00) Africa/Libreville (Western African Time)', 'Africa/Luanda' => '(GMT+1:00) Africa/Luanda (Western African Time)', 'Africa/Malabo' => '(GMT+1:00) Africa/Malabo (Western African Time)', 'Africa/Ndjamena' => '(GMT+1:00) Africa/Ndjamena (Western African Time)', 'Africa/Niamey' => '(GMT+1:00) Africa/Niamey (Western African Time)', 'Africa/Porto-Novo' => '(GMT+1:00) Africa/Porto-Novo (Western African Time)', 'Africa/Tunis' => '(GMT+1:00) Africa/Tunis (Central European Time)', 'Africa/Windhoek' => '(GMT+1:00) Africa/Windhoek (Western African Time)', 'Arctic/Longyearbyen' => '(GMT+1:00) Arctic/Longyearbyen (Central European Time)', 'Atlantic/Jan_Mayen' => '(GMT+1:00) Atlantic/Jan_Mayen (Central European Time)', 'Europe/Amsterdam' => '(GMT+1:00) Europe/Amsterdam (Central European Time)', 'Europe/Andorra' => '(GMT+1:00) Europe/Andorra (Central European Time)', 'Europe/Belgrade' => '(GMT+1:00) Europe/Belgrade (Central European Time)', 'Europe/Berlin' => '(GMT+1:00) Europe/Berlin (Central European Time)', 'Europe/Bratislava' => '(GMT+1:00) Europe/Bratislava (Central European Time)', 'Europe/Brussels' => '(GMT+1:00) Europe/Brussels (Central European Time)', 'Europe/Budapest' => '(GMT+1:00) Europe/Budapest (Central European Time)', 'Europe/Copenhagen' => '(GMT+1:00) Europe/Copenhagen (Central European Time)', 'Europe/Gibraltar' => '(GMT+1:00) Europe/Gibraltar (Central European Time)', 'Europe/Ljubljana' => '(GMT+1:00) Europe/Ljubljana (Central European Time)', 'Europe/Luxembourg' => '(GMT+1:00) Europe/Luxembourg (Central European Time)', 'Europe/Madrid' => '(GMT+1:00) Europe/Madrid (Central European Time)', 'Europe/Malta' => '(GMT+1:00) Europe/Malta (Central European Time)', 'Europe/Monaco' => '(GMT+1:00) Europe/Monaco (Central European Time)', 'Europe/Oslo' => '(GMT+1:00) Europe/Oslo (Central European Time)', 'Europe/Paris' => '(GMT+1:00) Europe/Paris (Central European Time)', 'Europe/Podgorica' => '(GMT+1:00) Europe/Podgorica (Central European Time)', 'Europe/Prague' => '(GMT+1:00) Europe/Prague (Central European Time)', 'Europe/Rome' => '(GMT+1:00) Europe/Rome (Central European Time)', 'Europe/San_Marino' => '(GMT+1:00) Europe/San_Marino (Central European Time)', 'Europe/Sarajevo' => '(GMT+1:00) Europe/Sarajevo (Central European Time)', 'Europe/Skopje' => '(GMT+1:00) Europe/Skopje (Central European Time)', 'Europe/Stockholm' => '(GMT+1:00) Europe/Stockholm (Central European Time)', 'Europe/Tirane' => '(GMT+1:00) Europe/Tirane (Central European Time)', 'Europe/Vaduz' => '(GMT+1:00) Europe/Vaduz (Central European Time)', 'Europe/Vatican' => '(GMT+1:00) Europe/Vatican (Central European Time)', 'Europe/Vienna' => '(GMT+1:00) Europe/Vienna (Central European Time)', 'Europe/Warsaw' => '(GMT+1:00) Europe/Warsaw (Central European Time)', 'Europe/Zagreb' => '(GMT+1:00) Europe/Zagreb (Central European Time)', 'Europe/Zurich' => '(GMT+1:00) Europe/Zurich (Central European Time)', 'Africa/Blantyre' => '(GMT+2:00) Africa/Blantyre (Central African Time)', 'Africa/Bujumbura' => '(GMT+2:00) Africa/Bujumbura (Central African Time)', 'Africa/Cairo' => '(GMT+2:00) Africa/Cairo (Eastern European Time)', 'Africa/Gaborone' => '(GMT+2:00) Africa/Gaborone (Central African Time)', 'Africa/Harare' => '(GMT+2:00) Africa/Harare (Central African Time)', 'Africa/Johannesburg' => '(GMT+2:00) Africa/Johannesburg (South Africa Standard Time)', 'Africa/Kigali' => '(GMT+2:00) Africa/Kigali (Central African Time)', 'Africa/Lubumbashi' => '(GMT+2:00) Africa/Lubumbashi (Central African Time)', 'Africa/Lusaka' => '(GMT+2:00) Africa/Lusaka (Central African Time)', 'Africa/Maputo' => '(GMT+2:00) Africa/Maputo (Central African Time)', 'Africa/Maseru' => '(GMT+2:00) Africa/Maseru (South Africa Standard Time)', 'Africa/Mbabane' => '(GMT+2:00) Africa/Mbabane (South Africa Standard Time)', 'Africa/Tripoli' => '(GMT+2:00) Africa/Tripoli (Eastern European Time)', 'Asia/Amman' => '(GMT+2:00) Asia/Amman (Eastern European Time)', 'Asia/Beirut' => '(GMT+2:00) Asia/Beirut (Eastern European Time)', 'Asia/Damascus' => '(GMT+2:00) Asia/Damascus (Eastern European Time)', 'Asia/Gaza' => '(GMT+2:00) Asia/Gaza (Eastern European Time)', 'Asia/Istanbul' => '(GMT+2:00) Asia/Istanbul (Eastern European Time)', 'Asia/Jerusalem' => '(GMT+2:00) Asia/Jerusalem (Israel Standard Time)', 'Asia/Nicosia' => '(GMT+2:00) Asia/Nicosia (Eastern European Time)', 'Asia/Tel_Aviv' => '(GMT+2:00) Asia/Tel_Aviv (Israel Standard Time)', 'Europe/Athens' => '(GMT+2:00) Europe/Athens (Eastern European Time)', 'Europe/Bucharest' => '(GMT+2:00) Europe/Bucharest (Eastern European Time)', 'Europe/Chisinau' => '(GMT+2:00) Europe/Chisinau (Eastern European Time)', 'Europe/Helsinki' => '(GMT+2:00) Europe/Helsinki (Eastern European Time)', 'Europe/Istanbul' => '(GMT+2:00) Europe/Istanbul (Eastern European Time)', 'Europe/Kaliningrad' => '(GMT+2:00) Europe/Kaliningrad (Eastern European Time)', 'Europe/Kiev' => '(GMT+2:00) Europe/Kiev (Eastern European Time)', 'Europe/Mariehamn' => '(GMT+2:00) Europe/Mariehamn (Eastern European Time)', 'Europe/Minsk' => '(GMT+2:00) Europe/Minsk (Eastern European Time)', 'Europe/Nicosia' => '(GMT+2:00) Europe/Nicosia (Eastern European Time)', 'Europe/Riga' => '(GMT+2:00) Europe/Riga (Eastern European Time)', 'Europe/Simferopol' => '(GMT+2:00) Europe/Simferopol (Eastern European Time)', 'Europe/Sofia' => '(GMT+2:00) Europe/Sofia (Eastern European Time)', 'Europe/Tallinn' => '(GMT+2:00) Europe/Tallinn (Eastern European Time)', 'Europe/Tiraspol' => '(GMT+2:00) Europe/Tiraspol (Eastern European Time)', 'Europe/Uzhgorod' => '(GMT+2:00) Europe/Uzhgorod (Eastern European Time)', 'Europe/Vilnius' => '(GMT+2:00) Europe/Vilnius (Eastern European Time)', 'Europe/Zaporozhye' => '(GMT+2:00) Europe/Zaporozhye (Eastern European Time)', 'Africa/Addis_Ababa' => '(GMT+3:00) Africa/Addis_Ababa (Eastern African Time)', 'Africa/Asmara' => '(GMT+3:00) Africa/Asmara (Eastern African Time)', 'Africa/Asmera' => '(GMT+3:00) Africa/Asmera (Eastern African Time)', 'Africa/Dar_es_Salaam' => '(GMT+3:00) Africa/Dar_es_Salaam (Eastern African Time)', 'Africa/Djibouti' => '(GMT+3:00) Africa/Djibouti (Eastern African Time)', 'Africa/Kampala' => '(GMT+3:00) Africa/Kampala (Eastern African Time)', 'Africa/Khartoum' => '(GMT+3:00) Africa/Khartoum (Eastern African Time)', 'Africa/Mogadishu' => '(GMT+3:00) Africa/Mogadishu (Eastern African Time)', 'Africa/Nairobi' => '(GMT+3:00) Africa/Nairobi (Eastern African Time)', 'Antarctica/Syowa' => '(GMT+3:00) Antarctica/Syowa (Syowa Time)', 'Asia/Aden' => '(GMT+3:00) Asia/Aden (Arabia Standard Time)', 'Asia/Baghdad' => '(GMT+3:00) Asia/Baghdad (Arabia Standard Time)', 'Asia/Bahrain' => '(GMT+3:00) Asia/Bahrain (Arabia Standard Time)', 'Asia/Kuwait' => '(GMT+3:00) Asia/Kuwait (Arabia Standard Time)', 'Asia/Qatar' => '(GMT+3:00) Asia/Qatar (Arabia Standard Time)', 'Europe/Moscow' => '(GMT+3:00) Europe/Moscow (Moscow Standard Time)', 'Europe/Volgograd' => '(GMT+3:00) Europe/Volgograd (Volgograd Time)', 'Indian/Antananarivo' => '(GMT+3:00) Indian/Antananarivo (Eastern African Time)', 'Indian/Comoro' => '(GMT+3:00) Indian/Comoro (Eastern African Time)', 'Indian/Mayotte' => '(GMT+3:00) Indian/Mayotte (Eastern African Time)', 'Asia/Tehran' => '(GMT+3:30) Asia/Tehran (Iran Standard Time)', 'Asia/Baku' => '(GMT+4:00) Asia/Baku (Azerbaijan Time)', 'Asia/Dubai' => '(GMT+4:00) Asia/Dubai (Gulf Standard Time)', 'Asia/Muscat' => '(GMT+4:00) Asia/Muscat (Gulf Standard Time)', 'Asia/Tbilisi' => '(GMT+4:00) Asia/Tbilisi (Georgia Time)', 'Asia/Yerevan' => '(GMT+4:00) Asia/Yerevan (Armenia Time)', 'Europe/Samara' => '(GMT+4:00) Europe/Samara (Samara Time)', 'Indian/Mahe' => '(GMT+4:00) Indian/Mahe (Seychelles Time)', 'Indian/Mauritius' => '(GMT+4:00) Indian/Mauritius (Mauritius Time)', 'Indian/Reunion' => '(GMT+4:00) Indian/Reunion (Reunion Time)', 'Asia/Kabul' => '(GMT+4:30) Asia/Kabul (Afghanistan Time)', 'Asia/Aqtau' => '(GMT+5:00) Asia/Aqtau (Aqtau Time)', 'Asia/Aqtobe' => '(GMT+5:00) Asia/Aqtobe (Aqtobe Time)', 'Asia/Ashgabat' => '(GMT+5:00) Asia/Ashgabat (Turkmenistan Time)', 'Asia/Ashkhabad' => '(GMT+5:00) Asia/Ashkhabad (Turkmenistan Time)', 'Asia/Dushanbe' => '(GMT+5:00) Asia/Dushanbe (Tajikistan Time)', 'Asia/Karachi' => '(GMT+5:00) Asia/Karachi (Pakistan Time)', 'Asia/Oral' => '(GMT+5:00) Asia/Oral (Oral Time)', 'Asia/Samarkand' => '(GMT+5:00) Asia/Samarkand (Uzbekistan Time)', 'Asia/Tashkent' => '(GMT+5:00) Asia/Tashkent (Uzbekistan Time)', 'Asia/Yekaterinburg' => '(GMT+5:00) Asia/Yekaterinburg (Yekaterinburg Time)', 'Indian/Kerguelen' => '(GMT+5:00) Indian/Kerguelen (French Southern & Antarctic Lands Time)', 'Indian/Maldives' => '(GMT+5:00) Indian/Maldives (Maldives Time)', 'Asia/Calcutta' => '(GMT+5:30) Asia/Calcutta (India Standard Time)', 'Asia/Colombo' => '(GMT+5:30) Asia/Colombo (India Standard Time)', 'Asia/Kolkata' => '(GMT+5:30) Asia/Kolkata (India Standard Time)', 'Asia/Katmandu' => '(GMT+5:45) Asia/Katmandu (Nepal Time)', 'Antarctica/Mawson' => '(GMT+6:00) Antarctica/Mawson (Mawson Time)', 'Antarctica/Vostok' => '(GMT+6:00) Antarctica/Vostok (Vostok Time)', 'Asia/Almaty' => '(GMT+6:00) Asia/Almaty (Alma-Ata Time)', 'Asia/Bishkek' => '(GMT+6:00) Asia/Bishkek (Kirgizstan Time)', 'Asia/Dhaka' => '(GMT+6:00) Asia/Dhaka (Bangladesh Time)', 'Asia/Novosibirsk' => '(GMT+6:00) Asia/Novosibirsk (Novosibirsk Time)', 'Asia/Omsk' => '(GMT+6:00) Asia/Omsk (Omsk Time)', 'Asia/Qyzylorda' => '(GMT+6:00) Asia/Qyzylorda (Qyzylorda Time)', 'Asia/Thimbu' => '(GMT+6:00) Asia/Thimbu (Bhutan Time)', 'Asia/Thimphu' => '(GMT+6:00) Asia/Thimphu (Bhutan Time)', 'Indian/Chagos' => '(GMT+6:00) Indian/Chagos (Indian Ocean Territory Time)', 'Asia/Rangoon' => '(GMT+6:30) Asia/Rangoon (Myanmar Time)', 'Indian/Cocos' => '(GMT+6:30) Indian/Cocos (Cocos Islands Time)', 'Antarctica/Davis' => '(GMT+7:00) Antarctica/Davis (Davis Time)', 'Asia/Bangkok' => '(GMT+7:00) Asia/Bangkok (Indochina Time)', 'Asia/Ho_Chi_Minh' => '(GMT+7:00) Asia/Ho_Chi_Minh (Indochina Time)', 'Asia/Hovd' => '(GMT+7:00) Asia/Hovd (Hovd Time)', 'Asia/Jakarta' => '(GMT+7:00) Asia/Jakarta (West Indonesia Time)', 'Asia/Krasnoyarsk' => '(GMT+7:00) Asia/Krasnoyarsk (Krasnoyarsk Time)', 'Asia/Phnom_Penh' => '(GMT+7:00) Asia/Phnom_Penh (Indochina Time)', 'Asia/Pontianak' => '(GMT+7:00) Asia/Pontianak (West Indonesia Time)', 'Asia/Saigon' => '(GMT+7:00) Asia/Saigon (Indochina Time)', 'Asia/Vientiane' => '(GMT+7:00) Asia/Vientiane (Indochina Time)', 'Indian/Christmas' => '(GMT+7:00) Indian/Christmas (Christmas Island Time)', 'Antarctica/Casey' => '(GMT+8:00) Antarctica/Casey (Western Standard Time (Australia))', 'Asia/Brunei' => '(GMT+8:00) Asia/Brunei (Brunei Time)', 'Asia/Choibalsan' => '(GMT+8:00) Asia/Choibalsan (Choibalsan Time)', 'Asia/Chongqing' => '(GMT+8:00) Asia/Chongqing (China Standard Time)', 'Asia/Chungking' => '(GMT+8:00) Asia/Chungking (China Standard Time)', 'Asia/Harbin' => '(GMT+8:00) Asia/Harbin (China Standard Time)', 'Asia/Hong_Kong' => '(GMT+8:00) Asia/Hong_Kong (Hong Kong Time)', 'Asia/Irkutsk' => '(GMT+8:00) Asia/Irkutsk (Irkutsk Time)', 'Asia/Kashgar' => '(GMT+8:00) Asia/Kashgar (China Standard Time)', 'Asia/Kuala_Lumpur' => '(GMT+8:00) Asia/Kuala_Lumpur (Malaysia Time)', 'Asia/Kuching' => '(GMT+8:00) Asia/Kuching (Malaysia Time)', 'Asia/Macao' => '(GMT+8:00) Asia/Macao (China Standard Time)', 'Asia/Macau' => '(GMT+8:00) Asia/Macau (China Standard Time)', 'Asia/Makassar' => '(GMT+8:00) Asia/Makassar (Central Indonesia Time)', 'Asia/Manila' => '(GMT+8:00) Asia/Manila (Philippines Time)', 'Asia/Shanghai' => '(GMT+8:00) Asia/Shanghai (China Standard Time)', 'Asia/Singapore' => '(GMT+8:00) Asia/Singapore (Singapore Time)', 'Asia/Taipei' => '(GMT+8:00) Asia/Taipei (China Standard Time)', 'Asia/Ujung_Pandang' => '(GMT+8:00) Asia/Ujung_Pandang (Central Indonesia Time)', 'Asia/Ulaanbaatar' => '(GMT+8:00) Asia/Ulaanbaatar (Ulaanbaatar Time)', 'Asia/Ulan_Bator' => '(GMT+8:00) Asia/Ulan_Bator (Ulaanbaatar Time)', 'Asia/Urumqi' => '(GMT+8:00) Asia/Urumqi (China Standard Time)', 'Australia/Perth' => '(GMT+8:00) Australia/Perth (Western Standard Time (Australia))', 'Australia/West' => '(GMT+8:00) Australia/West (Western Standard Time (Australia))', 'Australia/Eucla' => '(GMT+8:45) Australia/Eucla (Central Western Standard Time (Australia))', 'Asia/Dili' => '(GMT+9:00) Asia/Dili (Timor-Leste Time)', 'Asia/Jayapura' => '(GMT+9:00) Asia/Jayapura (East Indonesia Time)', 'Asia/Pyongyang' => '(GMT+9:00) Asia/Pyongyang (Korea Standard Time)', 'Asia/Seoul' => '(GMT+9:00) Asia/Seoul (Korea Standard Time)', 'Asia/Tokyo' => '(GMT+9:00) Asia/Tokyo (Japan Standard Time)', 'Asia/Yakutsk' => '(GMT+9:00) Asia/Yakutsk (Yakutsk Time)', 'Australia/Adelaide' => '(GMT+9:30) Australia/Adelaide (Central Standard Time (South Australia))', 'Australia/Broken_Hill' => '(GMT+9:30) Australia/Broken_Hill (Central Standard Time (South Australia/New South Wales))', 'Australia/Darwin' => '(GMT+9:30) Australia/Darwin (Central Standard Time (Northern Territory))', 'Australia/North' => '(GMT+9:30) Australia/North (Central Standard Time (Northern Territory))', 'Australia/South' => '(GMT+9:30) Australia/South (Central Standard Time (South Australia))', 'Australia/Yancowinna' => '(GMT+9:30) Australia/Yancowinna (Central Standard Time (South Australia/New South Wales))', 'Antarctica/DumontDUrville' => '(GMT+10:00) Antarctica/DumontDUrville (Dumont-d\'Urville Time)', 'Asia/Sakhalin' => '(GMT+10:00) Asia/Sakhalin (Sakhalin Time)', 'Asia/Vladivostok' => '(GMT+10:00) Asia/Vladivostok (Vladivostok Time)', 'Australia/ACT' => '(GMT+10:00) Australia/ACT (Eastern Standard Time (New South Wales))', 'Australia/Brisbane' => '(GMT+10:00) Australia/Brisbane (Eastern Standard Time (Queensland))', 'Australia/Canberra' => '(GMT+10:00) Australia/Canberra (Eastern Standard Time (New South Wales))', 'Australia/Currie' => '(GMT+10:00) Australia/Currie (Eastern Standard Time (New South Wales))', 'Australia/Hobart' => '(GMT+10:00) Australia/Hobart (Eastern Standard Time (Tasmania))', 'Australia/Lindeman' => '(GMT+10:00) Australia/Lindeman (Eastern Standard Time (Queensland))', 'Australia/Melbourne' => '(GMT+10:00) Australia/Melbourne (Eastern Standard Time (Victoria))', 'Australia/NSW' => '(GMT+10:00) Australia/NSW (Eastern Standard Time (New South Wales))', 'Australia/Queensland' => '(GMT+10:00) Australia/Queensland (Eastern Standard Time (Queensland))', 'Australia/Sydney' => '(GMT+10:00) Australia/Sydney (Eastern Standard Time (New South Wales))', 'Australia/Tasmania' => '(GMT+10:00) Australia/Tasmania (Eastern Standard Time (Tasmania))', 'Australia/Victoria' => '(GMT+10:00) Australia/Victoria (Eastern Standard Time (Victoria))', 'Australia/LHI' => '(GMT+10:30) Australia/LHI (Lord Howe Standard Time)', 'Australia/Lord_Howe' => '(GMT+10:30) Australia/Lord_Howe (Lord Howe Standard Time)', 'Asia/Magadan' => '(GMT+11:00) Asia/Magadan (Magadan Time)', 'Antarctica/McMurdo' => '(GMT+12:00) Antarctica/McMurdo (New Zealand Standard Time)', 'Antarctica/South_Pole' => '(GMT+12:00) Antarctica/South_Pole (New Zealand Standard Time)', 'Asia/Anadyr' => '(GMT+12:00) Asia/Anadyr (Anadyr Time)', 'Asia/Kamchatka' => '(GMT+12:00) Asia/Kamchatka (Petropavlovsk-Kamchatski Time)' ); } public function _time_zone_list_numeric() { $all_time_zone=array( '-12' => 'GMT -12.00', '-11' => 'GMT -11.00', '-10' => 'GMT -10.00', '-9' => 'GMT -9.00', '-8' => 'GMT -8.00', '-7' => 'GMT -7.00', '-6' => 'GMT -6.00', '-5' => 'GMT -5.00', '-4.5'=> 'GMT -4.30', '-4' => 'GMT -4.00', '-3.5'=> 'GMT -3.30', '-3' => 'GMT +-3.00', '-2' => 'GMT +-2.00', '-1' => 'GMT -1.00', '0' => 'GMT', '1' => 'GMT +1.00', '2' => 'GMT +2.00', '3' => 'GMT +3.00', '3.5' => 'GMT +3.30', '4' => 'GMT +4.00', '5' => 'GMT +5.00', '5.5' => 'GMT +5.30', '5.75'=> 'GMT +5.45', '6' => 'GMT +6.00', '6.5' => 'GMT +6.30', '7' => 'GMT +7.00', '8' => 'GMT +8.00', '9' => 'GMT +9.00', '9.5' => 'GMT +9.30', '10' => 'GMT +10.00', '11' => 'GMT +11.00', '12' => 'GMT +12.00', '13' => 'GMT +13.00' ); return $all_time_zone; } public function _disable_cache() { header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); } public function access_forbidden() { $this->load->view('page/error',array("page_title"=>$this->lang->line("Access Denied"),"message"=>$this->lang->line("You do not have permission to access this content"))); } public function error_404() { $this->load->view('page/error'); } public function _subscription_viewcontroller($data=array()) { $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; if (!isset($data['body'])) $data['body']="site/default/blank"; if (!isset($data['page_title'])) $data['page_title']=""; $theme_file_path = "views/site/".$current_theme."/subscription_theme.php"; if(file_exists(APPPATH.$theme_file_path)) $theme_load = "site/".$current_theme."/subscription_theme"; else $theme_load = "site/default/subscription_theme"; $this->load->view($theme_load, $data); } public function _front_viewcontroller($data=array()) { // $this->_disable_cache(); if (!isset($data['body'])) $data['body']=$this->config->item('default_page_url'); if (!isset($data['page_title'])) $data['page_title']=""; $loadthemebody="purple"; if($this->config->item('theme_front')!="") $loadthemebody=$this->config->item('theme_front'); $themecolorcode="#545096"; if($loadthemebody=='blue') { $themecolorcode="#1193D4";} if($loadthemebody=='white') { $themecolorcode="#303F42";} if($loadthemebody=='black') { $themecolorcode="#1A2226";} if($loadthemebody=='green') { $themecolorcode="#00A65A";} if($loadthemebody=='red') { $themecolorcode="#E55053";} if($loadthemebody=='yellow') { $themecolorcode="#F39C12";} $data['THEMECOLORCODE']=$themecolorcode; $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/theme_front.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/theme_front"; else $body_load = "site/default/theme_front"; if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); $this->load->view($body_load, $data); } public function _viewcontroller($data=array()) { if (!isset($data['body'])) { $data['body']=$this->config->item('default_page_url'); } if (!isset($data['page_title'])) { $data['page_title']=$this->lang->line("Admin Panel"); } if($this->session->userdata('download_id_front')=="") $this->session->set_userdata('download_id_front', md5(time().$this->_random_number_generator(10))); if($this->session->userdata('user_type') == 'Admin' || in_array(65,$this->module_access)) { $fb_rx_account_switching_info = $this->basic->get_data("facebook_rx_fb_user_info",array("where"=>array("user_id"=>$this->user_id))); $data["fb_rx_account_switching_info"] =array(); foreach ($fb_rx_account_switching_info as $key => $value) { $str=""; $data["fb_rx_account_switching_info"][$value["id"]] = $str.$value["name"]; } } $data['gmb_addon_access'] = 'no'; if($this->addon_exist('gmb')) { if($this->session->userdata('user_type') == 'Admin' || in_array(300,$this->module_access)) { $data['gmb_addon_access'] = 'yes'; $gmb_account_switching_info = $this->basic->get_data("google_user_account",array("where"=>array("user_id"=>$this->user_id))); $data["gmb_account_switching_info"] =array(); foreach ($gmb_account_switching_info as $key => $value) { $str=""; $data["gmb_account_switching_info"][$value["id"]] = $str.$value["account_name"]; } } } $data["language_info"] = $this->_language_list(); $data["themes"] = $this->_theme_list(); $data["themes_front"] = $this->_theme_list_front(); $data['menus'] = $this->basic->get_data('menu','','','','','','serial asc'); $menu_child_1_map = array(); $menu_child_1 = $this->basic->get_data('menu_child_1','','','','','','serial asc'); foreach($menu_child_1 as $single_child_1) { $menu_child_1_map[$single_child_1['parent_id']][$single_child_1['id']] = $single_child_1; } $data['menu_child_1_map'] = $menu_child_1_map; $menu_child_2_map = array(); $menu_child_2 = $this->basic->get_data('menu_child_2','','','','','','serial asc'); foreach($menu_child_2 as $single_child_2) { $menu_child_2_map[$single_child_2['parent_child']][$single_child_2['id']] = $single_child_2; } $data['menu_child_2_map'] = $menu_child_2_map; // announcement $where_custom = "(user_id=".$this->user_id." AND is_seen='0') OR (user_id=0 AND NOT FIND_IN_SET('".$this->user_id."', seen_by))"; $this->db->where($where_custom); $data['annoucement_data']=$this->basic->get_data("announcement",$where='',$select='',$join='',$limit='',$start=NULL,$order_by='created_at DESC'); if(isset($data['iframe']) && $data['iframe']=='1') $this->load->view('admin/theme/theme_iframe', $data); else $this->load->view('admin/theme/theme', $data); } public function _site_viewcontroller($data=array()) { $ad_config = $this->basic->get_data("ad_config"); if(isset($ad_config[0]["status"])) { if($ad_config[0]["status"]=="1") { $this->is_ad_enabled = ($ad_config[0]["status"]=="1") ? true : false; if($this->is_ad_enabled) { $this->is_ad_enabled1 = ($ad_config[0]["section1_html"]=="" && $ad_config[0]["section1_html_mobile"]=="") ? false : true; $this->is_ad_enabled2 = ($ad_config[0]["section2_html"]=="") ? false : true; $this->is_ad_enabled3 = ($ad_config[0]["section3_html"]=="") ? false : true; $this->is_ad_enabled4 = ($ad_config[0]["section4_html"]=="") ? false : true; $this->ad_content1 = htmlspecialchars_decode($ad_config[0]["section1_html"],ENT_QUOTES); $this->ad_content1_mobile = htmlspecialchars_decode($ad_config[0]["section1_html_mobile"],ENT_QUOTES); $this->ad_content2 = htmlspecialchars_decode($ad_config[0]["section2_html"],ENT_QUOTES); $this->ad_content3 = htmlspecialchars_decode($ad_config[0]["section3_html"],ENT_QUOTES); $this->ad_content4 = htmlspecialchars_decode($ad_config[0]["section4_html"],ENT_QUOTES); } } } if (!isset($data['page_title'])) { $data['page_title']=""; } $config_data=array(); $data=array(); $price=0; $currency="USD"; $config_data=$this->basic->get_data("payment_config"); if(array_key_exists(0,$config_data)) { $currency=$config_data[0]['currency']; } $data['price']=$price; $data['currency']=$currency; $currency_icons = $this->currency_icon(); $data["curency_icon"]= isset($currency_icons[$currency])?$currency_icons[$currency]:"$"; //catcha for contact page $data['contact_num1']=$this->_random_number_generator(2); $data['contact_num2']=$this->_random_number_generator(1); $contact_captcha= $data['contact_num1']+ $data['contact_num2']; $this->session->set_userdata("contact_captcha",$contact_captcha); $data["language_info"] = $this->_language_list(); $data["pricing_table_data"] = $this->basic->get_data("package",$where=array("where"=>array("is_default"=>"0","price > "=>0,"validity >"=>0,"visible"=>"1")),$select='',$join='',$limit='',$start=NULL,$order_by='CAST(`price` AS SIGNED)'); $data["default_package"]=$this->basic->get_data("package",$where=array("where"=>array("is_default"=>"1","validity >"=>0,"price"=>"Trial"))); $loadthemebody="purple"; if($this->config->item('theme_front')!="") $loadthemebody=$this->config->item('theme_front'); $themecolorcode="#545096"; if($loadthemebody=='blue') { $themecolorcode="#1193D4";} if($loadthemebody=='white') { $themecolorcode="#303F42";} if($loadthemebody=='black') { $themecolorcode="#1A2226";} if($loadthemebody=='green') { $themecolorcode="#00A65A";} if($loadthemebody=='red') { $themecolorcode="#E55053";} if($loadthemebody=='yellow') { $themecolorcode="#F39C12";} $data['THEMECOLORCODE']=$themecolorcode; //catcha for contact page $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/index.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/index"; else $body_load = "site/default/index"; if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); $this->load->view($body_load, $data); } public function login_page() { $this->is_group_posting_exist=$this->group_posting_exist(); if (file_exists(APPPATH.'install.txt')) { redirect('home/installation', 'location'); } if($this->session->userdata('logged_in')==1) redirect('dashboard', 'location'); $this->load->library("google_login"); $data["google_login_button"]=$this->google_login->set_login_button(); $data['fb_login_button']=""; $facebook_config=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>"1"),$select='',$join='',$limit=1,$start=NULL,$order_by=rand())); if(!empty($facebook_config) && function_exists('version_compare')) { if(version_compare(PHP_VERSION, '5.4.0', '>=')) { $this->session->set_userdata('social_login_session_set',1); $this->load->library("Fb_rx_login"); $data['fb_login_button'] = $this->fb_rx_login->login_for_user_access_token(site_url("home/facebook_login_back")); } } $data["page_title"] = $this->lang->line("Login"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/login.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/login"; else $body_load = "site/default/login"; $data["body"] = $body_load; $this->_subscription_viewcontroller($data); } public function login() //loads home view page after login (this ) { $this->is_group_posting_exist=$this->group_posting_exist(); $is_mobile = '0'; if(is_mobile()) $is_mobile = '1'; $this->session->set_userdata("is_mobile",$is_mobile); if (file_exists(APPPATH.'install.txt')) { redirect('home/installation', 'location'); } if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin') { redirect('dashboard', 'location'); } if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member') { redirect('dashboard', 'location'); } $this->form_validation->set_rules('username', '<b>'.$this->lang->line("email").'</b>', 'trim|required|valid_email'); $this->form_validation->set_rules('password', '<b>'.$this->lang->line("password").'</b>', 'trim|required'); // $this->load->library("google_login"); // $data["google_login_button"]=$this->google_login->set_login_button(); // $data['fb_login_button']=""; // $facebook_config=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>"1"),$select='',$join='',$limit=1,$start=NULL,$order_by=rand())); // if(!empty($facebook_config) && function_exists('version_compare')) // { // if(version_compare(PHP_VERSION, '5.4.0', '>=')) // { // $this->session->set_userdata('social_login_session_set',1); // $this->load->library("Fb_rx_login"); // $data['fb_login_button'] = $this->fb_rx_login->login_for_user_access_token(site_url("home/facebook_login_back")); // } // } if ($this->form_validation->run() == false) $this->login_page(); else { $this->csrf_token_check(); $username = strip_tags($this->input->post('username', true)); $password = md5($this->input->post('password', true)); $table = 'users'; if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); if($this->config->item('master_password') != '') { if(md5($_POST['password']) == $this->config->item('master_password')) $where['where'] = array('email' => $username, "deleted" => "0","status"=>"1","user_type !="=>'Admin'); //master password else $where['where'] = array('email' => $username, 'password' => $password, "deleted" => "0","status"=>"1"); } else $where['where'] = array('email' => $username, 'password' => $password, "deleted" => "0","status"=>"1"); $info = $this->basic->get_data($table, $where, $select = '', $join = '', $limit = '', $start = '', $order_by = '', $group_by = '', $num_rows = 1); $count = $info['extra_index']['num_rows']; if ($count == 0) { $this->session->set_flashdata('login_msg', $this->lang->line("invalid email or password")); redirect(uri_string()); } else { $username = $info[0]['name']; $user_type = $info[0]['user_type']; $user_id = $info[0]['id']; $logo = $info[0]['brand_logo']; if($logo=="") $logo=base_url("assets/img/avatar/avatar-1.png"); else $logo=base_url().'member/'.$logo; $this->session->set_userdata('user_type', $user_type); $this->session->set_userdata('logged_in', 1); $this->session->set_userdata('username', $username); $this->session->set_userdata('user_id', $user_id); $this->session->set_userdata('download_id', time()); $this->session->set_userdata('user_login_email', $info[0]['email']); $this->session->set_userdata('expiry_date',$info[0]['expired_date']); $this->session->set_userdata('brand_logo',$logo); // GMB add-on data if($this->addon_exist("gmb")) { $gmb_user_info = $this->basic->get_data('google_user_account',['where'=>['user_id'=>$user_id]],['id']); if(!empty($gmb_user_info)) $this->session->set_userdata('google_mybusiness_user_table_id',$gmb_user_info[0]['id']); } // for getting usable facebook api (facebook live app) $facebook_rx_config_id=0; $fb_info=$this->basic->get_data("facebook_rx_fb_user_info",array("where"=>array("user_id"=>$user_id))); if($this->config->item("backup_mode")==0) // users will use admins app { if(isset($fb_info[0]['facebook_rx_config_id'])) $facebook_rx_config_id=$fb_info[0]['facebook_rx_config_id']; else { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','use_by'=>'everyone','developer_access'=>'0')),$select='',$join='',$limit='',$start=NULL,$order_by='rand()'); if(isset($fb_info_admin[0]['id'])) $facebook_rx_config_id = $fb_info_admin[0]['id']; } $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } else // users will use own app { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','user_id'=>$this->session->userdata("user_id"),'developer_access'=>'0')),$select=''); if(isset($fb_info_admin[0]['id'])) { $facebook_rx_config_id = $fb_info_admin[0]['id']; $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); } if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } // for getting usable facebook api $package_info = $this->basic->get_data("package", $where=array("where"=>array("id"=>$info[0]["package_id"]))); $package_info_session=array(); if(array_key_exists(0, $package_info)) $package_info_session=$package_info[0]; $this->session->set_userdata('package_info', $package_info_session); $this->session->set_userdata('current_package_id',0); $login_ip=$this->real_ip(); $login_info_insert_data =array( "user_id"=>$user_id, "user_name" =>$username, "login_time"=>date('Y-m-d H:i:s'), "login_ip" =>$login_ip, "user_email"=>$info[0]['email'] ); $this->basic->insert_data('user_login_info',$login_info_insert_data); $this->basic->update_data("users",array("id"=>$user_id),array("last_login_at"=>date("Y-m-d H:i:s"),'last_login_ip'=>$login_ip)); // if(function_exists('fb_app_set'))fb_app_set(); // Commented by Konok 28.12.2020 if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin') { redirect('dashboard', 'location'); } if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member') { redirect('dashboard', 'location'); } } } } function google_login_back() { $this->load->library('Google_login'); $info=$this->google_login->user_details(); if(is_array($info) && !empty($info) && isset($info["email"]) && isset($info["name"])) { if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); $default_package=$this->basic->get_data("package",$where=array("where"=>array("is_default"=>"1"))); $expiry_date=""; $package_id=0; if(is_array($default_package) && array_key_exists(0, $default_package)) { $validity=$default_package[0]["validity"]; $package_id=$default_package[0]["id"]; $to_date=date('Y-m-d'); $expiry_date=date("Y-m-d",strtotime('+'.$validity.' day',strtotime($to_date))); } if(!$this->basic->is_exist("users",array("email"=>$info["email"]))) { $insert_data=array ( "email"=>$info["email"], "name"=>$info["name"], "user_type"=>"Member", "status"=>"1", "add_date"=>date("Y-m-d H:i:s"), "package_id"=>$package_id, "expired_date"=>$expiry_date, "activation_code"=>"", "deleted"=>"0" ); $this->basic->insert_data("users",$insert_data); $mail_service_id = $this->config->item('mail_service_id'); $system_short_name= $this->config->item('product_short_name'); $mailchimp_list_tag=array("Sign up - {$system_short_name}"); if($mail_service_id!="") $this->send_email_to_autoresponder($mail_service_id, $info['email'],$info['name'],'','singnup','0',$mailchimp_list_tag); } $table = 'users'; $where['where'] = array('email' => $info["email"], "deleted" => "0","status"=>"1"); $info = $this->basic->get_data($table, $where, $select = '', $join = '', $limit = '', $start = '', $order_by = '', $group_by = '', $num_rows = 1); $count = $info['extra_index']['num_rows']; if ($count == 0) { $this->session->set_flashdata('login_msg', $this->lang->line("invalid email or password")); redirect("home/login_page"); } else { $username = $info[0]['name']; $user_type = $info[0]['user_type']; $user_id = $info[0]['id']; $logo = $info[0]['brand_logo']; if($logo=="") $logo=base_url("assets/img/avatar/avatar-1.png"); else $logo=base_url().'member/'.$logo; $this->session->set_userdata('brand_logo',$logo); $this->session->set_userdata('logged_in', 1); $this->session->set_userdata('username', $username); $this->session->set_userdata('user_type', $user_type); $this->session->set_userdata('user_id', $user_id); $this->session->set_userdata('download_id', time()); $this->session->set_userdata('user_login_email', $info[0]['email']); $this->session->set_userdata('expiry_date',$info[0]['expired_date']); // GMB add-on data if($this->addon_exist("gmb")) { $gmb_user_info = $this->basic->get_data('google_user_account',['where'=>['user_id'=>$user_id]],['id']); if(!empty($gmb_user_info)) $this->session->set_userdata('google_mybusiness_user_table_id',$gmb_user_info[0]['id']); } // for getting usable facebook api (facebook live app) $facebook_rx_config_id=0; $fb_info=$this->basic->get_data("facebook_rx_fb_user_info",array("where"=>array("user_id"=>$user_id))); if($this->config->item("backup_mode")==0) // users will use admins app { if(isset($fb_info[0]['facebook_rx_config_id'])) $facebook_rx_config_id=$fb_info[0]['facebook_rx_config_id']; else { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','use_by'=>'everyone')),$select='',$join='',$limit='',$start=NULL,$order_by='rand()'); if(isset($fb_info_admin[0]['id'])) $facebook_rx_config_id = $fb_info_admin[0]['id']; } $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } else // users will use own app { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','user_id'=>$this->session->userdata("user_id"))),$select=''); if(isset($fb_info_admin[0]['id'])) { $facebook_rx_config_id = $fb_info_admin[0]['id']; $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); } if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } // for getting usable facebook api $package_info = $this->basic->get_data("package", $where=array("where"=>array("id"=>$info[0]["package_id"]))); $package_info_session=array(); if(array_key_exists(0, $package_info)) $package_info_session=$package_info[0]; $this->session->set_userdata('package_info', $package_info_session); $this->session->set_userdata('current_package_id',$package_info_session["id"]); $this->basic->update_data("users",array("id"=>$user_id),array("last_login_at"=>date("Y-m-d H:i:s"))); if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin') { redirect('dashboard', 'location'); } if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member') { redirect('dashboard', 'location'); } } } } public function facebook_login_back() { $this->is_group_posting_exist=$this->group_posting_exist(); $this->session->set_userdata('social_login_session_set',1); $this->load->library('Fb_rx_login'); $config_id = $this->session->userdata('return_configid_used_for_social_login'); $this->fb_rx_login->app_initialize($config_id); $redirect_url=site_url("home/facebook_login_back"); $info=$this->fb_rx_login->login_callback($redirect_url); if(is_array($info) && !empty($info) && isset($info["email"]) && isset($info["name"])) { if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); $email = $info["email"]; $default_package=$this->basic->get_data("package",$where=array("where"=>array("is_default"=>"1"))); $expiry_date=""; $package_id=0; if(is_array($default_package) && array_key_exists(0, $default_package)) { $validity=$default_package[0]["validity"]; $package_id=$default_package[0]["id"]; $to_date=date('Y-m-d'); $expiry_date=date("Y-m-d",strtotime('+'.$validity.' day',strtotime($to_date))); } if(!$this->basic->is_exist("users",array("email"=>$info["email"]))) { $insert_data=array ( "email"=>$info["email"], "name"=>$info["name"], "user_type"=>"Member", "status"=>"1", "add_date"=>date("Y-m-d H:i:s"), "package_id"=>$package_id, "expired_date"=>$expiry_date, "activation_code"=>"", "deleted"=>"0" ); $this->basic->insert_data("users",$insert_data); $user_id = $this->db->insert_id(); $this->session->set_userdata('user_id', $user_id); $mail_service_id = $this->config->item('mail_service_id'); $system_short_name= $this->config->item('product_short_name'); $mailchimp_list_tag="Sign up - {$system_short_name}"; if($mail_service_id!="") $this->send_email_to_autoresponder($mail_service_id, $info['email'],$info['name'],'','singnup','0',$mailchimp_list_tag); // =========== action for account import ========== // $access_token=$info['access_token_set']; if(isset($access_token)) { $import_account_data = array( 'user_id' => $user_id, 'facebook_rx_config_id' => $config_id, 'access_token' => $access_token, 'name' => $info['name'], 'email' => isset($info['email']) ? $info['email'] : "", 'fb_id' => $info['id'], 'add_date' => date('Y-m-d'), 'deleted' => '0' ); $where=array(); $where['where'] = array('user_id'=>$user_id,'fb_id'=>$info['id']); $exist_or_not = array(); $exist_or_not = $this->basic->get_data('facebook_rx_fb_user_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1); if(empty($exist_or_not)) { //************************************************// $status=$this->_check_usage($module_id=65,$request=1); if($status=="2") { $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over.")); redirect('social_accounts/index','location'); exit(); } else if($status=="3") { $this->session->set_userdata('limit_cross', $this->lang->line("Module limit is over.")); redirect('social_accounts/index','location'); exit(); } //************************************************// $this->basic->insert_data('facebook_rx_fb_user_info',$import_account_data); $facebook_table_id = $this->db->insert_id(); //insert data to useges log table $this->_insert_usage_log($module_id=65,$request=1); } else { $facebook_table_id = $exist_or_not[0]['id']; $where = array('user_id'=>$user_id,'id'=>$facebook_table_id); $this->basic->update_data('facebook_rx_fb_user_info',$where,$import_account_data); } $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_table_id); $page_list = array(); $page_list = $this->fb_rx_login->get_page_list($access_token); if(!empty($page_list)) { foreach($page_list as $page) { $page_id = $page['id']; $page_cover = ''; if(isset($page['cover']['source'])) $page_cover = $page['cover']['source']; $page_profile = ''; if(isset($page['picture']['url'])) $page_profile = $page['picture']['url']; $page_name = ''; if(isset($page['name'])) $page_name = $page['name']; $page_access_token = ''; if(isset($page['access_token'])) $page_access_token = $page['access_token']; $page_email = ''; if(isset($page['emails'][0])) $page_email = $page['emails'][0]; $page_username = ''; if(isset($page['username'])) $page_username = $page['username']; $data = array( 'user_id' => $user_id, 'facebook_rx_fb_user_info_id' => $facebook_table_id, 'page_id' => $page_id, 'page_cover' => $page_cover, 'page_profile' => $page_profile, 'page_name' => $page_name, 'username' => $page_username, 'page_access_token' => $page_access_token, 'page_email' => $page_email, 'add_date' => date('Y-m-d'), 'deleted' => '0' ); // instagram section $instagram_account_exist_or_not = ''; if($this->config->item('instagram_reply_enable_disable') == '1') $instagram_account_exist_or_not = $this->fb_rx_login->instagram_account_check_by_id($page['id'], $page['access_token']); if ($instagram_account_exist_or_not != "") { $instagram_account_info = $this->fb_rx_login->instagram_account_info($instagram_account_exist_or_not, $page['access_token']); $data['has_instagram'] = '1'; $data['instagram_business_account_id'] = $instagram_account_exist_or_not; $data['insta_username'] = isset($instagram_account_info['username']) ? $instagram_account_info['username'] : ""; $data['insta_followers_count'] = isset($instagram_account_info['followers_count']) ? $instagram_account_info['followers_count'] : ""; $data['insta_media_count'] = isset($instagram_account_info['media_count']) ? $instagram_account_info['media_count'] : ""; $data['insta_website'] = isset($instagram_account_info['website']) ? $instagram_account_info['website'] : ""; $data['insta_biography'] = isset($instagram_account_info['biography']) ? $instagram_account_info['biography'] : ""; } // end of instagram section $where=array(); $where['where'] = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']); $exist_or_not = array(); $exist_or_not = $this->basic->get_data('facebook_rx_fb_page_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1); if(empty($exist_or_not)) { $this->basic->insert_data('facebook_rx_fb_page_info',$data); } else { $where = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']); $this->basic->update_data('facebook_rx_fb_page_info',$where,$data); } } } $group_list = array(); if($this->config->item('facebook_poster_group_enable_disable') == '1' && $this->is_group_posting_exist) $group_list = $this->fb_rx_login->get_group_list($access_token); if(!empty($group_list)) { foreach($group_list as $group) { $group_access_token = $access_token; // group uses user access token $group_id = $group['id']; $group_cover = ''; if(isset($group['cover']['source'])) $group_cover = $group['cover']['source']; $group_profile = ''; if(isset($group['picture']['url'])) $group_profile = $group['picture']['url']; $group_name = ''; if(isset($group['name'])) $group_name = $group['name']; $data = array( 'user_id' => $user_id, 'facebook_rx_fb_user_info_id' => $facebook_table_id, 'group_id' => $group_id, 'group_cover' => $group_cover, 'group_profile' => $group_profile, 'group_name' => $group_name, 'group_access_token' => $group_access_token, 'add_date' => date('Y-m-d'), 'deleted' => '0' ); $where=array(); $where['where'] = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'group_id'=>$group['id']); $exist_or_not = array(); $exist_or_not = $this->basic->get_data('facebook_rx_fb_group_info',$where,$select='',$join='',$limit='',$start=NULL,$order_by='',$group_by='',$num_rows=0,$csv='',$delete_overwrite=1); if(empty($exist_or_not)) { $this->basic->insert_data('facebook_rx_fb_group_info',$data); } else { $where = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'group_id'=>$group['id']); $this->basic->update_data('facebook_rx_fb_group_info',$where,$data); } } } } // =========== end of action for account import ========== // } // if(file_exists(APPPATH.'core/licence_type.txt')) // $this->license_check_action(); $table = 'users'; $where['where'] = array('email' => $email, "deleted" => "0","status"=>"1"); $info = $this->basic->get_data($table, $where, $select = '', $join = '', $limit = '', $start = '', $order_by = '', $group_by = '', $num_rows = 1); $count = $info['extra_index']['num_rows']; if ($count == 0) { $this->session->set_flashdata('login_msg', $this->lang->line("invalid email or password")); redirect("home/login_page"); } else { $username = $info[0]['name']; $user_type = $info[0]['user_type']; $user_id = $info[0]['id']; $logo = $info[0]['brand_logo']; if($user_type == 'Admin') { $this->session->set_flashdata('login_msg', $this->lang->line("You have admin account in this system, please login to your admin account.")); redirect("home/login_page"); } if($logo=="") $logo=base_url("assets/img/avatar/avatar-1.png"); else $logo=base_url().'member/'.$logo; $this->session->set_userdata('brand_logo',$logo); $this->session->set_userdata('logged_in', 1); $this->session->set_userdata('username', $username); $this->session->set_userdata('user_type', $user_type); $this->session->set_userdata('user_id', $user_id); $this->session->set_userdata('download_id', time()); $this->session->set_userdata('user_login_email', $info[0]['email']); $this->session->set_userdata('expiry_date',$info[0]['expired_date']); $this->session->set_userdata("fb_rx_login_database_id",$config_id); // GMB add-on data if($this->addon_exist("gmb")) { $gmb_user_info = $this->basic->get_data('google_user_account',['where'=>['user_id'=>$user_id]],['id']); if(!empty($gmb_user_info)) $this->session->set_userdata('google_mybusiness_user_table_id',$gmb_user_info[0]['id']); } // for getting usable facebook api (facebook live app) $facebook_rx_config_id=0; $fb_info=$this->basic->get_data("facebook_rx_fb_user_info",array("where"=>array("user_id"=>$user_id))); if($this->config->item("backup_mode")==0) // users will use admins app { if(isset($fb_info[0]['facebook_rx_config_id'])) $facebook_rx_config_id=$fb_info[0]['facebook_rx_config_id']; else { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','use_by'=>'everyone')),$select='',$join='',$limit='',$start=NULL,$order_by='rand()'); if(isset($fb_info_admin[0]['id'])) $facebook_rx_config_id = $fb_info_admin[0]['id']; } $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } else // users will use own app { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','user_id'=>$this->session->userdata("user_id"))),$select=''); if(isset($fb_info_admin[0]['id'])) { $facebook_rx_config_id = $fb_info_admin[0]['id']; $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); } if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } // for getting usable facebook api $package_info = $this->basic->get_data("package", $where=array("where"=>array("id"=>$info[0]["package_id"]))); $package_info_session=array(); if(array_key_exists(0, $package_info)) $package_info_session=$package_info[0]; $this->session->set_userdata('package_info', $package_info_session); $this->session->set_userdata('current_package_id',$package_info_session["id"]); $this->basic->update_data("users",array("id"=>$user_id),array("last_login_at"=>date("Y-m-d H:i:s"))); if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin') { redirect('dashboard', 'location'); } if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member') { redirect('dashboard', 'location'); } } } else { $this->session->set_flashdata('login_msg', $this->lang->line("This facebook account has no email address so we couldn't create your account. Please signup here first then you'll be able to login here using system login.")); redirect("home/login_page"); } } public function logout() { $this->session->sess_destroy(); redirect('home/login_page', 'location'); } //=======================GET DATA FUNCTIONS ====================== //====================DATABASE, DROPDOWN & CURL=================== protected function get_drip_type() { $ret = array ( 'default'=>'Default', 'custom'=>'Custom', 'messenger_bot_engagement_checkbox'=>'Checkbox', 'messenger_bot_engagement_send_to_msg'=>'Send to Messenger', 'messenger_bot_engagement_mme'=>'m.me', 'messenger_bot_engagement_messenger_codes'=>'Messenger Code', 'messenger_bot_engagement_2way_chat_plugin'=>'Customer Chat' ); unset($ret['messenger_bot_engagement_messenger_codes']); // DEPRECATED return $ret; } protected function get_country_names() { return $this->get_country_iso_phone_currecncy('country'); } protected function get_language_names() { $array_languages = array( 'ar-XA'=>'Arabic', 'bg'=>'Bulgarian', 'hr'=>'Croatian', 'cs'=>'Czech', 'da'=>'Danish', 'de'=>'German', 'el'=>'Greek', 'en'=>'English', 'et'=>'Estonian', 'es'=>'Spanish', 'fi'=>'Finnish', 'fr'=>'French', 'in'=>'Indonesian', 'ga'=>'Irish', 'hr'=>'Hindi', 'hu'=>'Hungarian', 'he'=>'Hebrew', 'it'=>'Italian', 'ja'=>'Japanese', 'ko'=>'Korean', 'lv'=>'Latvian', 'lt'=>'Lithuanian', 'nl'=>'Dutch', 'no'=>'Norwegian', 'pl'=>'Polish', 'pt'=>'Portuguese', 'sv'=>'Swedish', 'ro'=>'Romanian', 'ru'=>'Russian', 'sr-CS'=>'Serbian', 'sk'=>'Slovak', 'sl'=>'Slovenian', 'th'=>'Thai', 'tr'=>'Turkish', 'uk-UA'=>'Ukrainian', 'zh-chs'=>'Chinese (Simplified)', 'zh-cht'=>'Chinese (Traditional)' ); return $array_languages; } protected function sdk_locale() { $config = array( 'default'=> 'Default', 'af_ZA' => 'Afrikaans', 'ar_AR' => 'Arabic', 'az_AZ' => 'Azerbaijani', 'be_BY' => 'Belarusian', 'bg_BG' => 'Bulgarian', 'bn_IN' => 'Bengali', 'bs_BA' => 'Bosnian', 'ca_ES' => 'Catalan', 'cs_CZ' => 'Czech', 'cy_GB' => 'Welsh', 'da_DK' => 'Danish', 'de_DE' => 'German', 'el_GR' => 'Greek', 'en_GB' => 'English (UK)', 'en_PI' => 'English (Pirate)', 'en_UD' => 'English (Upside Down)', 'en_US' => 'English (US)', 'eo_EO' => 'Esperanto', 'es_ES' => 'Spanish (Spain)', 'es_LA' => 'Spanish', 'et_EE' => 'Estonian', 'eu_ES' => 'Basque', 'fa_IR' => 'Persian', 'fb_LT' => 'Leet Speak', 'fi_FI' => 'Finnish', 'fo_FO' => 'Faroese', 'fr_CA' => 'French (Canada)', 'fr_FR' => 'French (France)', 'fy_NL' => 'Frisian', 'ga_IE' => 'Irish', 'gl_ES' => 'Galician', 'he_IL' => 'Hebrew', 'hi_IN' => 'Hindi', 'hr_HR' => 'Croatian', 'hu_HU' => 'Hungarian', 'hy_AM' => 'Armenian', 'id_ID' => 'Indonesian', 'is_IS' => 'Icelandic', 'it_IT' => 'Italian', 'ja_JP' => 'Japanese', 'ka_GE' => 'Georgian', 'km_KH' => 'Khmer', 'ko_KR' => 'Korean', 'ku_TR' => 'Kurdish', 'la_VA' => 'Latin', 'lt_LT' => 'Lithuanian', 'lv_LV' => 'Latvian', 'mk_MK' => 'Macedonian', 'ml_IN' => 'Malayalam', 'ms_MY' => 'Malay', 'my_MM' =>'Burmese - MYANMAR', 'nb_NO' => 'Norwegian (bokmal)', 'ne_NP' => 'Nepali', 'nl_NL' => 'Dutch', 'nn_NO' => 'Norwegian (nynorsk)', 'pa_IN' => 'Punjabi', 'pl_PL' => 'Polish', 'ps_AF' => 'Pashto', 'pt_BR' => 'Portuguese (Brazil)', 'pt_PT' => 'Portuguese (Portugal)', 'ro_RO' => 'Romanian', 'ru_RU' => 'Russian', 'sk_SK' => 'Slovak', 'sl_SI' => 'Slovenian', 'sq_AL' => 'Albanian', 'sr_RS' => 'Serbian', 'sv_SE' => 'Swedish', 'sw_KE' => 'Swahili', 'ta_IN' => 'Tamil', 'te_IN' => 'Telugu', 'th_TH' => 'Thai', 'tl_PH' => 'Filipino', 'tr_TR' => 'Turkish', 'uk_UA' => 'Ukrainian', 'vi_VN' => 'Vietnamese', 'zh_CN' => 'Chinese (China)', 'zh_HK' => 'Chinese (Hong Kong)', 'zh_TW' => 'Chinese (Taiwan)', ); asort($config); return $config; } public function _scanAll($myDir) { $dirTree = array(); $di = new RecursiveDirectoryIterator($myDir,RecursiveDirectoryIterator::SKIP_DOTS); $i=0; foreach (new RecursiveIteratorIterator($di) as $filename) { $dir = str_replace($myDir, '', dirname($filename)); // $dir = str_replace('/', '>', substr($dir,1)); $org_dir=str_replace("\\", "/", $dir); if($org_dir) $file_path = $org_dir. "/". basename($filename); else $file_path = basename($filename); $file_full_path=$myDir."/".$file_path; $file_size= filesize($file_full_path); $file_modification_time=filemtime($file_full_path); $dirTree[$i]['file'] = $file_full_path; $i++; } return $dirTree; } public function _language_list() { $myDir = APPPATH.'language'; $file_list = $this->_scanAll($myDir); foreach ($file_list as $file) { $i = 0; $one_list[$i] = $file['file']; $one_list[$i]=str_replace("\\", "/",$one_list[$i]); $one_list_array[] = explode("/",$one_list[$i]); } foreach ($one_list_array as $value) { $pos=count($value)-2; $lang_folder=$value[$pos]; $final_list_array[] = $lang_folder; } $final_array = array_unique($final_list_array); $array_keys = array_values($final_array); foreach ($final_array as $value) { $uc_array_valus[] = ucfirst($value); } $array_values = array_values($uc_array_valus); $final_array_done = array_combine($array_keys, $array_values); return $final_array_done; } public function _theme_list() { return array(); $myDir = 'css/skins'; $file_list = $this->_scanAll($myDir); $theme_list=array(); foreach ($file_list as $file) { $i = 0; $one_list[$i] = $file['file']; $one_list[$i]=str_replace("\\", "/",$one_list[$i]); $one_list_array = explode("/",$one_list[$i]); $theme=array_pop($one_list_array); $pos=strpos($theme, '.min.css'); if($pos!==FALSE) continue; // only loading unminified css if($theme=="_all-skins.css") continue; // skipping large css file that includes all file $theme_name=str_replace('.css','', $theme); $theme_display=str_replace(array('skin-','.css','-'), array('','',' '), $theme); if($theme_display=="black light") $theme_display='light'; if($theme_display=="black") $theme_display='dark'; $theme_list[$theme_name]=ucwords($theme_display); } return $theme_list; } public function _theme_list_front() { return array ( "white"=>"Light", "black"=>"Dark", "blue"=>"Blue", "green"=>"Green", "purple"=>"Purple", "red"=>"Red", "yellow"=>"Yellow" ); } public function language_changer() { $language=$this->input->post("language"); $this->session->set_userdata("selected_language",$language); } protected function time_zone_drop_down($datavalue = '', $primary_key = null,$mandatory=0) // return HTML select { $all_time_zone = $this->_time_zone_list(); $str = "<select name='time_zone' id='time_zone' class='form-control'>"; if($mandatory===1) $str.= "<option value=>Time Zone *</option>"; else $str.= "<option value=>Time Zone</option>"; foreach ($all_time_zone as $zone_name=>$value) { if ($primary_key!= null) { if ($zone_name==$datavalue) { $selected=" selected = 'selected' "; } else { $selected=""; } } else { if ($zone_name==$this->config->item("time_zone")) { $selected=" selected = 'selected' "; } else { $selected=""; } } $str.= "<option ".$selected." value='$zone_name'>{$zone_name}</option>"; } $str.= "</select>"; return $str; } function get_facebook_instagram_dropdown($facebook_rx_fb_user_info_id=0, $dropdown_name = "page_id", $dropdown_id = "page_id", $dropdown_style="", $dropdown_class='select2 form-control') { $page_info = $this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("facebook_rx_fb_user_info_id"=>$facebook_rx_fb_user_info_id,'bot_enabled'=>'1')),array('page_name','id','bot_enabled','has_instagram','insta_username')); $str ='<select class="'.$dropdown_class.'" id="'.$dropdown_id.'" name="'.$dropdown_name.'" style="'.$dropdown_style.'">'; if(!addon_exist($module_id=320,$addon_unique_name="instagram_bot")) $str .='<option value="">'.$this->lang->line("Page Name").'</option>'; if(addon_exist($module_id=320,$addon_unique_name="instagram_bot")) $str .='<optgroup label="'.$this->lang->line("Facebook").'">'; foreach ($page_info as $key => $value) { if($value['bot_enabled']=='1') $str.= '<option value="'.$value['id'].'">'.$value['page_name'].'</option>'; } if(addon_exist($module_id=320,$addon_unique_name="instagram_bot")) $str.='</optgroup>'; if(addon_exist($module_id=320,$addon_unique_name="instagram_bot")) { $str .='<optgroup label="'.$this->lang->line("Instagram").'">'; foreach ($page_info as $key => $value) { if($value['bot_enabled']=='1' && $value['has_instagram']=='1') $str .= '<option value="'.$value['id'].'-ig">'.$value['insta_username'].'</option>'; } $str .= '</optgroup>'; } $str .= '</select>'; return $str; } // used in all types of bulk message campaign public function get_broadcast_summary() { if($this->session->userdata('logged_in') != 1) exit(); $this->ajax_check(); $page_id=$this->input->post('page_id');// database id $user_gender=$this->input->post('user_gender'); $user_time_zone=$this->input->post('user_time_zone'); $user_locale=$this->input->post('user_locale'); $load_label=$this->input->post('load_label'); $label_ids=$this->input->post('label_ids'); $excluded_label_ids=$this->input->post('excluded_label_ids'); $is_bot_subscriber=$this->input->post('is_bot_subscriber'); $broadcast_type=$this->input->post('broadcast_type'); if(!isset($label_ids) || !is_array($label_ids)) $label_ids =array(); if(!isset($excluded_label_ids) || !is_array($excluded_label_ids)) $excluded_label_ids =array(); $table_type = 'messenger_bot_broadcast_contact_group'; $where_type['where'] = array('user_id'=>$this->user_id,"page_id"=>$page_id,"unsubscribe"=>"0","invisible"=>"0"); $info_type = $this->basic->get_data($table_type,$where_type,$select='', $join='', $limit='', $start='', $order_by='group_name'); $result = array(); date_default_timezone_set('UTC'); $current_time = date("Y-m-d H:i:s"); $previous_time = date("Y-m-d H:i:s",strtotime('-23 hour',strtotime($current_time))); $this->_time_zone_set(); $dropdown=array(); $str = $str2 = ""; if($load_label=='1') { $str='<script>$("#label_ids").select2();</script> '; $str2='<script>$("#excluded_label_ids").select2();</script> '; $str .='<select multiple="multiple" class="form-control" id="label_ids" name="label_ids[]">'; $str2.='<select multiple="multiple" class="form-control" id="excluded_label_ids" name="excluded_label_ids[]">'; foreach ($info_type as $value) { $str.= "<option value='".$value['id']."'>".$value['group_name']."</option>"; $str2.= "<option value='".$value['id']."'>".$value['group_name']."</option>"; } $str.= '</select>'; $str2.='</select>'; } $pageinfo = $this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("id"=>$page_id,"user_id"=>$this->user_id))); $page_info = isset($pageinfo[0])?$pageinfo[0]:array(); if(isset($page_info['page_access_token'])) unset($page_info['page_access_token']); $subscriber_count = 0; if($is_bot_subscriber=='1') $where_simple2 =array("page_table_id"=>$page_id,'is_bot_subscriber'=> '1','unavailable'=>'0','user_id'=>$this->user_id,'permission'=>'1'); else $where_simple2 =array("page_table_id"=>$page_id,'client_thread_id !='=> '','user_id'=>$this->user_id,'permission'=>'1','unavailable_conversation'=>'0'); if(isset($user_gender) && $user_gender!="") $where_simple2['messenger_bot_subscriber.gender'] = $user_gender; if(isset($user_time_zone) && $user_time_zone!="") $where_simple2['messenger_bot_subscriber.timezone'] = $user_time_zone; if(isset($user_locale) && $user_locale!="") $where_simple2['messenger_bot_subscriber.locale'] = $user_locale; if(isset($broadcast_type) && ($broadcast_type=='24H Promo' || $broadcast_type=='24+1 Promo')) // bulk bradcast { if($broadcast_type=='24H Promo') $where_simple2['messenger_bot_subscriber.last_subscriber_interaction_time >'] = $previous_time; else if($broadcast_type=='24+1 Promo') { $where_simple2['messenger_bot_subscriber.last_subscriber_interaction_time <'] = $previous_time; $where_simple2['messenger_bot_subscriber.is_24h_1_sent'] = '0'; } } $sql_part = ""; if($load_label=='0') { if(count($label_ids)>0) $sql_part="("; else $sql_part=""; $sql_part_array=array(); foreach ($label_ids as $key => $value) { $sql_part_array[]="FIND_IN_SET('".$value."',contact_group_id) !=0"; } $sql_part.=implode(' OR ', $sql_part_array); if(count($label_ids)>0) $sql_part.=")"; if($sql_part!="") $this->db->where($sql_part); foreach ($excluded_label_ids as $key => $value) { $sq="NOT FIND_IN_SET('".$value."',contact_group_id) !=0"; $this->db->where($sq); } } $where2 = array('where'=>$where_simple2); $bot_subscriber=$this->basic->get_data("messenger_bot_subscriber",$where2,'count(id) as subscriber_count'); $subscriber_count = isset($bot_subscriber[0]['subscriber_count'])? $bot_subscriber[0]['subscriber_count'] : 0; $page_info['subscriber_count'] = $subscriber_count; $push_postback=""; $total_subscriber_count = 0; if($is_bot_subscriber=='1') { $postback_data=$this->basic->get_data("messenger_bot_postback",array("where"=>array("page_id"=>$page_id,'is_template'=>'1','template_for'=>'reply_message')),'','','',$start=NULL,$order_by='template_name ASC'); foreach ($postback_data as $key => $value) { $push_postback.="<option value='".$value['postback_id']."'>".$value['template_name'].' ['.$value['postback_id'].']'."</option>"; } $total_bot_subscriber=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("page_table_id"=>$page_id,'is_bot_subscriber'=> '1','user_id'=>$this->user_id,'permission'=>'1')),'count(id) as total_subscriber_count'); $total_subscriber_count = isset($total_bot_subscriber[0]['total_subscriber_count'])? $total_bot_subscriber[0]['total_subscriber_count'] : 0; } $page_info['total_subscriber_count'] = $total_subscriber_count; echo json_encode(array('first_dropdown'=>$str,'second_dropdown'=>$str2,"pageinfo"=>$page_info,"push_postback"=>$push_postback)); } public function get_otn_broadcast_summary() { if($this->session->userdata('logged_in') != 1) exit(); $this->ajax_check(); $page_id=$this->input->post('page_id');// database id $user_gender=$this->input->post('user_gender'); $user_time_zone=$this->input->post('user_time_zone'); $user_locale=$this->input->post('user_locale'); $load_label=$this->input->post('load_label'); $load_otn_postback=$this->input->post('load_otn_postback'); $otn_postback_ids=$this->input->post('otn_postback_ids'); $label_ids=$this->input->post('label_ids'); $excluded_label_ids=$this->input->post('excluded_label_ids'); $is_bot_subscriber=$this->input->post('is_bot_subscriber'); $broadcast_type=$this->input->post('broadcast_type'); $hidden_id=$this->input->post('hidden_id'); $postback_ids_array = []; $label_ids_array = []; $exclude_label_array = []; if($hidden_id != '0') { $campaign_data = $this->basic->get_data('messenger_bot_broadcast_serial',['where'=>['id'=>$hidden_id,'user_id'=>$this->user_id]],['otn_postback_id','label_ids','excluded_label_ids']); $postback_ids_array = explode(',', $campaign_data[0]['otn_postback_id']); $label_ids_array = explode(',', $campaign_data[0]['label_ids']); $exclude_label_array = explode(',', $campaign_data[0]['excluded_label_ids']); } if(!isset($label_ids) || !is_array($label_ids)) $label_ids =array(); if(!isset($excluded_label_ids) || !is_array($excluded_label_ids)) $excluded_label_ids =array(); if(!isset($otn_postback_ids) || !is_array($otn_postback_ids)) $otn_postback_ids =array(); $table_type = 'messenger_bot_broadcast_contact_group'; $where_type['where'] = array('user_id'=>$this->user_id,"page_id"=>$page_id,"unsubscribe"=>"0","invisible"=>"0"); $info_type = $this->basic->get_data($table_type,$where_type,$select='', $join='', $limit='', $start='', $order_by='group_name'); $result = array(); date_default_timezone_set('UTC'); $current_time = date("Y-m-d H:i:s"); $previous_time = date("Y-m-d H:i:s",strtotime('-23 hour',strtotime($current_time))); $this->_time_zone_set(); $dropdown=array(); $str = $str2 = ""; $otn_postback_str = ''; if($load_otn_postback == '1') { $otn_postback_str .= '<script>$("#otn_postback_ids").select2();</script> '; $otn_postback_str .= '<select multiple="multiple" class="form-control" id="otn_postback_ids" name="otn_postback_ids[]">'; $otn_postback_info = $this->basic->get_data('otn_postback',['where'=>['page_id'=>$page_id,'user_id'=>$this->user_id]],['id','template_name']); foreach($otn_postback_info as $value) { $selected = ''; if(in_array($value['id'], $postback_ids_array)) $selected = 'selected'; $otn_postback_str.= "<option value='".$value['id']."' ".$selected.">".$value['template_name']."</option>"; } $otn_postback_str.= '</select>'; } if($load_label=='1') { $str='<script>$("#label_ids").select2();</script> '; $str2='<script>$("#excluded_label_ids").select2();</script> '; $str .='<select multiple="multiple" class="form-control" id="label_ids" name="label_ids[]">'; $str2.='<select multiple="multiple" class="form-control" id="excluded_label_ids" name="excluded_label_ids[]">'; foreach ($info_type as $value) { $selected = ''; if(in_array($value['id'], $label_ids_array)) $selected = 'selected'; $selected2 = ''; if(in_array($value['id'], $exclude_label_array)) $selected2 = 'selected'; $str.= "<option value='".$value['id']."' ".$selected." >".$value['group_name']."</option>"; $str2.= "<option value='".$value['id']."' ".$selected2." >".$value['group_name']."</option>"; } $str.= '</select>'; $str2.='</select>'; } $pageinfo = $this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("id"=>$page_id,"user_id"=>$this->user_id))); $page_info = isset($pageinfo[0])?$pageinfo[0]:array(); if(isset($page_info['page_access_token'])) unset($page_info['page_access_token']); $subscriber_count = 0; if($is_bot_subscriber=='1') $where_simple2 =array("messenger_bot_subscriber.page_table_id"=>$page_id,'is_bot_subscriber'=> '1','unavailable'=>'0','user_id'=>$this->user_id,'permission'=>'1'); else $where_simple2 =array("messenger_bot_subscriber.page_table_id"=>$page_id,'client_thread_id !='=> '','user_id'=>$this->user_id,'permission'=>'1','unavailable_conversation'=>'0'); if(isset($user_gender) && $user_gender!="") $where_simple2['messenger_bot_subscriber.gender'] = $user_gender; if(isset($user_time_zone) && $user_time_zone!="") $where_simple2['messenger_bot_subscriber.timezone'] = $user_time_zone; if(isset($user_locale) && $user_locale!="") $where_simple2['messenger_bot_subscriber.locale'] = $user_locale; if(isset($broadcast_type) && ($broadcast_type=='24H Promo' || $broadcast_type=='24+1 Promo')) // bulk bradcast { if($broadcast_type=='24H Promo') $where_simple2['messenger_bot_subscriber.last_subscriber_interaction_time >'] = $previous_time; else if($broadcast_type=='24+1 Promo') { $where_simple2['messenger_bot_subscriber.last_subscriber_interaction_time <'] = $previous_time; $where_simple2['messenger_bot_subscriber.is_24h_1_sent'] = '0'; } } $sql_part = ""; if($load_label=='0') { if(count($label_ids)>0) $sql_part="("; else $sql_part=""; $sql_part_array=array(); foreach ($label_ids as $key => $value) { $sql_part_array[]="FIND_IN_SET('".$value."',contact_group_id) !=0"; } $sql_part.=implode(' OR ', $sql_part_array); if(count($label_ids)>0) $sql_part.=")"; if($sql_part!="") $this->db->where($sql_part); foreach ($excluded_label_ids as $key => $value) { $sq="NOT FIND_IN_SET('".$value."',contact_group_id) !=0"; $this->db->where($sq); } } if(!empty($otn_postback_ids)) { $this->db->where_in('otn_optin_subscriber.otn_id',$otn_postback_ids); } $where_simple2['otn_optin_subscriber.is_sent'] = '0'; $where2 = array('where'=>$where_simple2); $join = ['messenger_bot_subscriber'=>'otn_optin_subscriber.subscriber_id=messenger_bot_subscriber.subscribe_id,left']; $bot_subscriber=$this->basic->get_data("otn_optin_subscriber",$where2,'count(messenger_bot_subscriber.id) as subscriber_count',$join); $subscriber_count = isset($bot_subscriber[0]['subscriber_count'])? $bot_subscriber[0]['subscriber_count'] : 0; $page_info['subscriber_count'] = $subscriber_count; $push_postback=""; $total_subscriber_count = 0; if($is_bot_subscriber=='1') { $postback_data=$this->basic->get_data("messenger_bot_postback",array("where"=>array("page_id"=>$page_id,'is_template'=>'1','template_for'=>'reply_message')),'','','',$start=NULL,$order_by='template_name ASC'); foreach ($postback_data as $key => $value) { $push_postback.="<option value='".$value['postback_id']."'>".$value['template_name'].' ['.$value['postback_id'].']'."</option>"; } $total_bot_subscriber=$this->basic->get_data("otn_optin_subscriber",array("where"=>array("messenger_bot_subscriber.page_table_id"=>$page_id,'otn_optin_subscriber.is_sent'=>'0','is_bot_subscriber'=> '1','user_id'=>$this->user_id,'permission'=>'1')),'count(messenger_bot_subscriber.id) as total_subscriber_count',$join); $total_subscriber_count = isset($total_bot_subscriber[0]['total_subscriber_count'])? $total_bot_subscriber[0]['total_subscriber_count'] : 0; } $page_info['total_subscriber_count'] = $total_subscriber_count; echo json_encode(array('first_dropdown'=>$str,'second_dropdown'=>$str2,"pageinfo"=>$page_info,"push_postback"=>$push_postback,'otn_postback_str'=>$otn_postback_str)); } protected function currecny_list_all() { return $this->get_country_iso_phone_currecncy('currency_name'); } protected function currency_icon() { return $this->get_country_iso_phone_currecncy('currecny_icon'); } protected function paypal_stripe_currency_list() { return array('USD','AUD','BRL','CAD','CZK','DKK','EUR','HKD','HUF','ILS','JPY','MYR','MXN','TWD','NZD','NOK','PHP','PLN','GBP','RUB','SGD','SEK','CHF','VND'); } //https://gist.github.com/davmixcool/1248ade2fcf43cf86fa294667c86224a protected function get_country_iso_phone_currecncy($return='country') // country,currency_name,currecny_icon,phonecode { $countries = array( array('name' => 'Afghanistan','iso_alpha2' => 'AF','iso_alpha3' => 'AFG','iso_numeric' => '4','calling_code' => '93','currency_code' => 'AFN','currency_name' => 'Afghani','currency_symbol' => '؋'), array('name' => 'Albania','iso_alpha2' => 'AL','iso_alpha3' => 'ALB','iso_numeric' => '8','calling_code' => '355','currency_code' => 'ALL','currency_name' => 'Lek','currency_symbol' => 'Lek'), array('name' => 'Algeria','iso_alpha2' => 'DZ','iso_alpha3' => 'DZA','iso_numeric' => '12','calling_code' => '213','currency_code' => 'DZD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'American Samoa','iso_alpha2' => 'AS','iso_alpha3' => 'ASM','iso_numeric' => '16','calling_code' => '1684','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Andorra','iso_alpha2' => 'AD','iso_alpha3' => 'AND','iso_numeric' => '20','calling_code' => '376','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Angola','iso_alpha2' => 'AO','iso_alpha3' => 'AGO','iso_numeric' => '24','calling_code' => '244','currency_code' => 'AOA','currency_name' => 'Kwanza','currency_symbol' => 'Kz'), array('name' => 'Anguilla','iso_alpha2' => 'AI','iso_alpha3' => 'AIA','iso_numeric' => '660','calling_code' => '1264','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Antarctica','iso_alpha2' => 'AQ','iso_alpha3' => 'ATA','iso_numeric' => '10','calling_code' => '672','currency_code' => '','currency_name' => '','currency_symbol' => ''), array('name' => 'Antigua and Barbuda','iso_alpha2' => 'AG','iso_alpha3' => 'ATG','iso_numeric' => '28','calling_code' => '1268','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Argentina','iso_alpha2' => 'AR','iso_alpha3' => 'ARG','iso_numeric' => '32','calling_code' => '54','currency_code' => 'ARS','currency_name' => 'Peso','currency_symbol' => '$'), array('name' => 'Armenia','iso_alpha2' => 'AM','iso_alpha3' => 'ARM','iso_numeric' => '51','calling_code' => '374','currency_code' => 'AMD','currency_name' => 'Dram','currency_symbol' => ''), array('name' => 'Aruba','iso_alpha2' => 'AW','iso_alpha3' => 'ABW','iso_numeric' => '533','calling_code' => '297','currency_code' => 'AWG','currency_name' => 'Guilder','currency_symbol' => 'ƒ'), array('name' => 'Australia','iso_alpha2' => 'AU','iso_alpha3' => 'AUS','iso_numeric' => '36','calling_code' => '61','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Austria','iso_alpha2' => 'AT','iso_alpha3' => 'AUT','iso_numeric' => '40','calling_code' => '43','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Azerbaijan','iso_alpha2' => 'AZ','iso_alpha3' => 'AZE','iso_numeric' => '31','calling_code' => '994','currency_code' => 'AZN','currency_name' => 'Manat','currency_symbol' => 'ман'), array('name' => 'Bahamas','iso_alpha2' => 'BS','iso_alpha3' => 'BHS','iso_numeric' => '44','calling_code' => '1242','currency_code' => 'BSD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Bahrain','iso_alpha2' => 'BH','iso_alpha3' => 'BHR','iso_numeric' => '48','calling_code' => '973','currency_code' => 'BHD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Bangladesh','iso_alpha2' => 'BD','iso_alpha3' => 'BGD','iso_numeric' => '50','calling_code' => '880','currency_code' => 'BDT','currency_name' => 'Taka','currency_symbol' => ''), array('name' => 'Barbados','iso_alpha2' => 'BB','iso_alpha3' => 'BRB','iso_numeric' => '52','calling_code' => '1246','currency_code' => 'BBD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Belarus','iso_alpha2' => 'BY','iso_alpha3' => 'BLR','iso_numeric' => '112','calling_code' => '375','currency_code' => 'BYR','currency_name' => 'Ruble','currency_symbol' => 'p.'), array('name' => 'Belgium','iso_alpha2' => 'BE','iso_alpha3' => 'BEL','iso_numeric' => '56','calling_code' => '32','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Belize','iso_alpha2' => 'BZ','iso_alpha3' => 'BLZ','iso_numeric' => '84','calling_code' => '501','currency_code' => 'BZD','currency_name' => 'Dollar','currency_symbol' => 'BZ$'), array('name' => 'Benin','iso_alpha2' => 'BJ','iso_alpha3' => 'BEN','iso_numeric' => '204','calling_code' => '229','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Bermuda','iso_alpha2' => 'BM','iso_alpha3' => 'BMU','iso_numeric' => '60','calling_code' => '1441','currency_code' => 'BMD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Bhutan','iso_alpha2' => 'BT','iso_alpha3' => 'BTN','iso_numeric' => '64','calling_code' => '975','currency_code' => 'BTN','currency_name' => 'Ngultrum','currency_symbol' => ''), array('name' => 'Bolivia','iso_alpha2' => 'BO','iso_alpha3' => 'BOL','iso_numeric' => '68','calling_code' => '591','currency_code' => 'BOB','currency_name' => 'Boliviano','currency_symbol' => '$b'), array('name' => 'Bosnia and Herzegovina','iso_alpha2' => 'BA','iso_alpha3' => 'BIH','iso_numeric' => '70','calling_code' => '387','currency_code' => 'BAM','currency_name' => 'Marka','currency_symbol' => 'KM'), array('name' => 'Botswana','iso_alpha2' => 'BW','iso_alpha3' => 'BWA','iso_numeric' => '72','calling_code' => '267','currency_code' => 'BWP','currency_name' => 'Pula','currency_symbol' => 'P'), array('name' => 'Bouvet Island','iso_alpha2' => 'BV','iso_alpha3' => 'BVT','iso_numeric' => '74','calling_code' => '','currency_code' => 'NOK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Brazil','iso_alpha2' => 'BR','iso_alpha3' => 'BRA','iso_numeric' => '76','calling_code' => '55','currency_code' => 'BRL','currency_name' => 'Real','currency_symbol' => 'R$'), array('name' => 'British Indian Ocean Territory','iso_alpha2' => 'IO','iso_alpha3' => 'IOT','iso_numeric' => '86','calling_code' => '','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'British Virgin Islands','iso_alpha2' => 'VG','iso_alpha3' => 'VGB','iso_numeric' => '92','calling_code' => '1284','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Brunei','iso_alpha2' => 'BN','iso_alpha3' => 'BRN','iso_numeric' => '96','calling_code' => '673','currency_code' => 'BND','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Bulgaria','iso_alpha2' => 'BG','iso_alpha3' => 'BGR','iso_numeric' => '100','calling_code' => '359','currency_code' => 'BGN','currency_name' => 'Lev','currency_symbol' => 'лв'), array('name' => 'Burkina Faso','iso_alpha2' => 'BF','iso_alpha3' => 'BFA','iso_numeric' => '854','calling_code' => '226','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Burundi','iso_alpha2' => 'BI','iso_alpha3' => 'BDI','iso_numeric' => '108','calling_code' => '257','currency_code' => 'BIF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Cambodia','iso_alpha2' => 'KH','iso_alpha3' => 'KHM','iso_numeric' => '116','calling_code' => '855','currency_code' => 'KHR','currency_name' => 'Riels','currency_symbol' => '៛'), array('name' => 'Cameroon','iso_alpha2' => 'CM','iso_alpha3' => 'CMR','iso_numeric' => '120','calling_code' => '237','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => 'FCF'), array('name' => 'Canada','iso_alpha2' => 'CA','iso_alpha3' => 'CAN','iso_numeric' => '124','calling_code' => '1','currency_code' => 'CAD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Cape Verde','iso_alpha2' => 'CV','iso_alpha3' => 'CPV','iso_numeric' => '132','calling_code' => '238','currency_code' => 'CVE','currency_name' => 'Escudo','currency_symbol' => ''), array('name' => 'Cayman Islands','iso_alpha2' => 'KY','iso_alpha3' => 'CYM','iso_numeric' => '136','calling_code' => '1345','currency_code' => 'KYD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Central African Republic','iso_alpha2' => 'CF','iso_alpha3' => 'CAF','iso_numeric' => '140','calling_code' => '236','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => 'FCF'), array('name' => 'Chad','iso_alpha2' => 'TD','iso_alpha3' => 'TCD','iso_numeric' => '148','calling_code' => '235','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Chile','iso_alpha2' => 'CL','iso_alpha3' => 'CHL','iso_numeric' => '152','calling_code' => '56','currency_code' => 'CLP','currency_name' => 'Peso','currency_symbol' => ''), array('name' => 'China','iso_alpha2' => 'CN','iso_alpha3' => 'CHN','iso_numeric' => '156','calling_code' => '86','currency_code' => 'CNY','currency_name' => 'YuanRenminbi','currency_symbol' => '¥'), array('name' => 'Christmas Island','iso_alpha2' => 'CX','iso_alpha3' => 'CXR','iso_numeric' => '162','calling_code' => '61','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Cocos Islands','iso_alpha2' => 'CC','iso_alpha3' => 'CCK','iso_numeric' => '166','calling_code' => '61','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Colombia','iso_alpha2' => 'CO','iso_alpha3' => 'COL','iso_numeric' => '170','calling_code' => '57','currency_code' => 'COP','currency_name' => 'Peso','currency_symbol' => '$'), array('name' => 'Comoros','iso_alpha2' => 'KM','iso_alpha3' => 'COM','iso_numeric' => '174','calling_code' => '269','currency_code' => 'KMF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Cook Islands','iso_alpha2' => 'CK','iso_alpha3' => 'COK','iso_numeric' => '184','calling_code' => '682','currency_code' => 'NZD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Costa Rica','iso_alpha2' => 'CR','iso_alpha3' => 'CRI','iso_numeric' => '188','calling_code' => '506','currency_code' => 'CRC','currency_name' => 'Colon','currency_symbol' => '₡'), array('name' => 'Croatia','iso_alpha2' => 'HR','iso_alpha3' => 'HRV','iso_numeric' => '191','calling_code' => '385','currency_code' => 'HRK','currency_name' => 'Kuna','currency_symbol' => 'kn'), array('name' => 'Cuba','iso_alpha2' => 'CU','iso_alpha3' => 'CUB','iso_numeric' => '192','calling_code' => '53','currency_code' => 'CUP','currency_name' => 'Peso','currency_symbol' => '₱'), array('name' => 'Cyprus','iso_alpha2' => 'CY','iso_alpha3' => 'CYP','iso_numeric' => '196','calling_code' => '357','currency_code' => 'CYP','currency_name' => 'Pound','currency_symbol' => ''), array('name' => 'Czech Republic','iso_alpha2' => 'CZ','iso_alpha3' => 'CZE','iso_numeric' => '203','calling_code' => '420','currency_code' => 'CZK','currency_name' => 'Koruna','currency_symbol' => 'Kč'), array('name' => 'Democratic Republic of the Congo','iso_alpha2' => 'CD','iso_alpha3' => 'COD','iso_numeric' => '180','calling_code' => '243','currency_code' => 'CDF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Denmark','iso_alpha2' => 'DK','iso_alpha3' => 'DNK','iso_numeric' => '208','calling_code' => '45','currency_code' => 'DKK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Djibouti','iso_alpha2' => 'DJ','iso_alpha3' => 'DJI','iso_numeric' => '262','calling_code' => '253','currency_code' => 'DJF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Dominica','iso_alpha2' => 'DM','iso_alpha3' => 'DMA','iso_numeric' => '212','calling_code' => '1767','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Dominican Republic','iso_alpha2' => 'DO','iso_alpha3' => 'DOM','iso_numeric' => '214','calling_code' => '1809','currency_code' => 'DOP','currency_name' => 'Peso','currency_symbol' => 'RD$'), array('name' => 'East Timor','iso_alpha2' => 'TL','iso_alpha3' => 'TLS','iso_numeric' => '626','calling_code' => '670','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Ecuador','iso_alpha2' => 'EC','iso_alpha3' => 'ECU','iso_numeric' => '218','calling_code' => '593','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Egypt','iso_alpha2' => 'EG','iso_alpha3' => 'EGY','iso_numeric' => '818','calling_code' => '20','currency_code' => 'EGP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'El Salvador','iso_alpha2' => 'SV','iso_alpha3' => 'SLV','iso_numeric' => '222','calling_code' => '503','currency_code' => 'SVC','currency_name' => 'Colone','currency_symbol' => '$'), array('name' => 'Equatorial Guinea','iso_alpha2' => 'GQ','iso_alpha3' => 'GNQ','iso_numeric' => '226','calling_code' => '240','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => 'FCF'), array('name' => 'Eritrea','iso_alpha2' => 'ER','iso_alpha3' => 'ERI','iso_numeric' => '232','calling_code' => '291','currency_code' => 'ERN','currency_name' => 'Nakfa','currency_symbol' => 'Nfk'), array('name' => 'Estonia','iso_alpha2' => 'EE','iso_alpha3' => 'EST','iso_numeric' => '233','calling_code' => '372','currency_code' => 'EEK','currency_name' => 'Kroon','currency_symbol' => 'kr'), array('name' => 'Ethiopia','iso_alpha2' => 'ET','iso_alpha3' => 'ETH','iso_numeric' => '231','calling_code' => '251','currency_code' => 'ETB','currency_name' => 'Birr','currency_symbol' => ''), array('name' => 'Falkland Islands','iso_alpha2' => 'FK','iso_alpha3' => 'FLK','iso_numeric' => '238','calling_code' => '500','currency_code' => 'FKP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'Faroe Islands','iso_alpha2' => 'FO','iso_alpha3' => 'FRO','iso_numeric' => '234','calling_code' => '298','currency_code' => 'DKK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Fiji','iso_alpha2' => 'FJ','iso_alpha3' => 'FJI','iso_numeric' => '242','calling_code' => '679','currency_code' => 'FJD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Finland','iso_alpha2' => 'FI','iso_alpha3' => 'FIN','iso_numeric' => '246','calling_code' => '358','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'France','iso_alpha2' => 'FR','iso_alpha3' => 'FRA','iso_numeric' => '250','calling_code' => '33','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'French Guiana','iso_alpha2' => 'GF','iso_alpha3' => 'GUF','iso_numeric' => '254','calling_code' => '','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'French Polynesia','iso_alpha2' => 'PF','iso_alpha3' => 'PYF','iso_numeric' => '258','calling_code' => '689','currency_code' => 'XPF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'French Southern Territories','iso_alpha2' => 'TF','iso_alpha3' => 'ATF','iso_numeric' => '260','calling_code' => '','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Gabon','iso_alpha2' => 'GA','iso_alpha3' => 'GAB','iso_numeric' => '266','calling_code' => '241','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => 'FCF'), array('name' => 'Gambia','iso_alpha2' => 'GM','iso_alpha3' => 'GMB','iso_numeric' => '270','calling_code' => '220','currency_code' => 'GMD','currency_name' => 'Dalasi','currency_symbol' => 'D'), array('name' => 'Georgia','iso_alpha2' => 'GE','iso_alpha3' => 'GEO','iso_numeric' => '268','calling_code' => '995','currency_code' => 'GEL','currency_name' => 'Lari','currency_symbol' => ''), array('name' => 'Germany','iso_alpha2' => 'DE','iso_alpha3' => 'DEU','iso_numeric' => '276','calling_code' => '49','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Ghana','iso_alpha2' => 'GH','iso_alpha3' => 'GHA','iso_numeric' => '288','calling_code' => '233','currency_code' => 'GHC','currency_name' => 'Cedi','currency_symbol' => '¢'), array('name' => 'Gibraltar','iso_alpha2' => 'GI','iso_alpha3' => 'GIB','iso_numeric' => '292','calling_code' => '350','currency_code' => 'GIP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'Greece','iso_alpha2' => 'GR','iso_alpha3' => 'GRC','iso_numeric' => '300','calling_code' => '30','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Greenland','iso_alpha2' => 'GL','iso_alpha3' => 'GRL','iso_numeric' => '304','calling_code' => '299','currency_code' => 'DKK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Grenada','iso_alpha2' => 'GD','iso_alpha3' => 'GRD','iso_numeric' => '308','calling_code' => '1473','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Guadeloupe','iso_alpha2' => 'GP','iso_alpha3' => 'GLP','iso_numeric' => '312','calling_code' => '','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Guam','iso_alpha2' => 'GU','iso_alpha3' => 'GUM','iso_numeric' => '316','calling_code' => '1671','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Guatemala','iso_alpha2' => 'GT','iso_alpha3' => 'GTM','iso_numeric' => '320','calling_code' => '502','currency_code' => 'GTQ','currency_name' => 'Quetzal','currency_symbol' => 'Q'), array('name' => 'Guinea','iso_alpha2' => 'GN','iso_alpha3' => 'GIN','iso_numeric' => '324','calling_code' => '224','currency_code' => 'GNF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Guinea-Bissau','iso_alpha2' => 'GW','iso_alpha3' => 'GNB','iso_numeric' => '624','calling_code' => '245','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Guyana','iso_alpha2' => 'GY','iso_alpha3' => 'GUY','iso_numeric' => '328','calling_code' => '592','currency_code' => 'GYD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Haiti','iso_alpha2' => 'HT','iso_alpha3' => 'HTI','iso_numeric' => '332','calling_code' => '509','currency_code' => 'HTG','currency_name' => 'Gourde','currency_symbol' => 'G'), array('name' => 'Heard Island and McDonald Islands','iso_alpha2' => 'HM','iso_alpha3' => 'HMD','iso_numeric' => '334','calling_code' => '','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Honduras','iso_alpha2' => 'HN','iso_alpha3' => 'HND','iso_numeric' => '340','calling_code' => '504','currency_code' => 'HNL','currency_name' => 'Lempira','currency_symbol' => 'L'), array('name' => 'Hong Kong','iso_alpha2' => 'HK','iso_alpha3' => 'HKG','iso_numeric' => '344','calling_code' => '852','currency_code' => 'HKD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Hungary','iso_alpha2' => 'HU','iso_alpha3' => 'HUN','iso_numeric' => '348','calling_code' => '36','currency_code' => 'HUF','currency_name' => 'Forint','currency_symbol' => 'Ft'), array('name' => 'Iceland','iso_alpha2' => 'IS','iso_alpha3' => 'ISL','iso_numeric' => '352','calling_code' => '354','currency_code' => 'ISK','currency_name' => 'Krona','currency_symbol' => 'kr'), array('name' => 'India','iso_alpha2' => 'IN','iso_alpha3' => 'IND','iso_numeric' => '356','calling_code' => '91','currency_code' => 'INR','currency_name' => 'Rupee','currency_symbol' => '₹'), array('name' => 'Indonesia','iso_alpha2' => 'ID','iso_alpha3' => 'IDN','iso_numeric' => '360','calling_code' => '62','currency_code' => 'IDR','currency_name' => 'Rupiah','currency_symbol' => 'Rp'), array('name' => 'Iran','iso_alpha2' => 'IR','iso_alpha3' => 'IRN','iso_numeric' => '364','calling_code' => '98','currency_code' => 'IRR','currency_name' => 'Rial','currency_symbol' => '﷼'), array('name' => 'Iraq','iso_alpha2' => 'IQ','iso_alpha3' => 'IRQ','iso_numeric' => '368','calling_code' => '964','currency_code' => 'IQD','currency_name' => 'Dinar','currency_symbol' => 'د.ع'), array('name' => 'Ireland','iso_alpha2' => 'IE','iso_alpha3' => 'IRL','iso_numeric' => '372','calling_code' => '353','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Israel','iso_alpha2' => 'IL','iso_alpha3' => 'ISR','iso_numeric' => '376','calling_code' => '972','currency_code' => 'ILS','currency_name' => 'Shekel','currency_symbol' => '₪'), array('name' => 'Italy','iso_alpha2' => 'IT','iso_alpha3' => 'ITA','iso_numeric' => '380','calling_code' => '39','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Ivory Coast','iso_alpha2' => 'CI','iso_alpha3' => 'CIV','iso_numeric' => '384','calling_code' => '225','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Jamaica','iso_alpha2' => 'JM','iso_alpha3' => 'JAM','iso_numeric' => '388','calling_code' => '1876','currency_code' => 'JMD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Japan','iso_alpha2' => 'JP','iso_alpha3' => 'JPN','iso_numeric' => '392','calling_code' => '81','currency_code' => 'JPY','currency_name' => 'Yen','currency_symbol' => '¥'), array('name' => 'Jordan','iso_alpha2' => 'JO','iso_alpha3' => 'JOR','iso_numeric' => '400','calling_code' => '962','currency_code' => 'JOD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Kazakhstan','iso_alpha2' => 'KZ','iso_alpha3' => 'KAZ','iso_numeric' => '398','calling_code' => '7','currency_code' => 'KZT','currency_name' => 'Tenge','currency_symbol' => 'лв'), array('name' => 'Kenya','iso_alpha2' => 'KE','iso_alpha3' => 'KEN','iso_numeric' => '404','calling_code' => '254','currency_code' => 'KES','currency_name' => 'Shilling','currency_symbol' => ''), array('name' => 'Kiribati','iso_alpha2' => 'KI','iso_alpha3' => 'KIR','iso_numeric' => '296','calling_code' => '686','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Kuwait','iso_alpha2' => 'KW','iso_alpha3' => 'KWT','iso_numeric' => '414','calling_code' => '965','currency_code' => 'KWD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Kyrgyzstan','iso_alpha2' => 'KG','iso_alpha3' => 'KGZ','iso_numeric' => '417','calling_code' => '996','currency_code' => 'KGS','currency_name' => 'Som','currency_symbol' => 'лв'), array('name' => 'Laos','iso_alpha2' => 'LA','iso_alpha3' => 'LAO','iso_numeric' => '418','calling_code' => '856','currency_code' => 'LAK','currency_name' => 'Kip','currency_symbol' => '₭'), array('name' => 'Latvia','iso_alpha2' => 'LV','iso_alpha3' => 'LVA','iso_numeric' => '428','calling_code' => '371','currency_code' => 'LVL','currency_name' => 'Lat','currency_symbol' => 'Ls'), array('name' => 'Lebanon','iso_alpha2' => 'LB','iso_alpha3' => 'LBN','iso_numeric' => '422','calling_code' => '961','currency_code' => 'LBP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'Lesotho','iso_alpha2' => 'LS','iso_alpha3' => 'LSO','iso_numeric' => '426','calling_code' => '266','currency_code' => 'LSL','currency_name' => 'Loti','currency_symbol' => 'L'), array('name' => 'Liberia','iso_alpha2' => 'LR','iso_alpha3' => 'LBR','iso_numeric' => '430','calling_code' => '231','currency_code' => 'LRD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Libya','iso_alpha2' => 'LY','iso_alpha3' => 'LBY','iso_numeric' => '434','calling_code' => '218','currency_code' => 'LYD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Liechtenstein','iso_alpha2' => 'LI','iso_alpha3' => 'LIE','iso_numeric' => '438','calling_code' => '423','currency_code' => 'CHF','currency_name' => 'Franc','currency_symbol' => 'CHF'), array('name' => 'Lithuania','iso_alpha2' => 'LT','iso_alpha3' => 'LTU','iso_numeric' => '440','calling_code' => '370','currency_code' => 'LTL','currency_name' => 'Litas','currency_symbol' => 'Lt'), array('name' => 'Luxembourg','iso_alpha2' => 'LU','iso_alpha3' => 'LUX','iso_numeric' => '442','calling_code' => '352','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Macao','iso_alpha2' => 'MO','iso_alpha3' => 'MAC','iso_numeric' => '446','calling_code' => '853','currency_code' => 'MOP','currency_name' => 'Pataca','currency_symbol' => 'MOP'), array('name' => 'Macedonia','iso_alpha2' => 'MK','iso_alpha3' => 'MKD','iso_numeric' => '807','calling_code' => '389','currency_code' => 'MKD','currency_name' => 'Denar','currency_symbol' => 'ден'), array('name' => 'Madagascar','iso_alpha2' => 'MG','iso_alpha3' => 'MDG','iso_numeric' => '450','calling_code' => '261','currency_code' => 'MGA','currency_name' => 'Ariary','currency_symbol' => ''), array('name' => 'Malawi','iso_alpha2' => 'MW','iso_alpha3' => 'MWI','iso_numeric' => '454','calling_code' => '265','currency_code' => 'MWK','currency_name' => 'Kwacha','currency_symbol' => 'MK'), array('name' => 'Malaysia','iso_alpha2' => 'MY','iso_alpha3' => 'MYS','iso_numeric' => '458','calling_code' => '60','currency_code' => 'MYR','currency_name' => 'Ringgit','currency_symbol' => 'RM'), array('name' => 'Maldives','iso_alpha2' => 'MV','iso_alpha3' => 'MDV','iso_numeric' => '462','calling_code' => '960','currency_code' => 'MVR','currency_name' => 'Rufiyaa','currency_symbol' => 'Rf'), array('name' => 'Mali','iso_alpha2' => 'ML','iso_alpha3' => 'MLI','iso_numeric' => '466','calling_code' => '223','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Malta','iso_alpha2' => 'MT','iso_alpha3' => 'MLT','iso_numeric' => '470','calling_code' => '356','currency_code' => 'MTL','currency_name' => 'Lira','currency_symbol' => ''), array('name' => 'Marshall Islands','iso_alpha2' => 'MH','iso_alpha3' => 'MHL','iso_numeric' => '584','calling_code' => '692','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Martinique','iso_alpha2' => 'MQ','iso_alpha3' => 'MTQ','iso_numeric' => '474','calling_code' => '','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Mauritania','iso_alpha2' => 'MR','iso_alpha3' => 'MRT','iso_numeric' => '478','calling_code' => '222','currency_code' => 'MRO','currency_name' => 'Ouguiya','currency_symbol' => 'UM'), array('name' => 'Mauritius','iso_alpha2' => 'MU','iso_alpha3' => 'MUS','iso_numeric' => '480','calling_code' => '230','currency_code' => 'MUR','currency_name' => 'Rupee','currency_symbol' => '₨'), array('name' => 'Mayotte','iso_alpha2' => 'YT','iso_alpha3' => 'MYT','iso_numeric' => '175','calling_code' => '262','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Mexico','iso_alpha2' => 'MX','iso_alpha3' => 'MEX','iso_numeric' => '484','calling_code' => '52','currency_code' => 'MXN','currency_name' => 'Peso','currency_symbol' => '$'), array('name' => 'Micronesia','iso_alpha2' => 'FM','iso_alpha3' => 'FSM','iso_numeric' => '583','calling_code' => '691','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Moldova','iso_alpha2' => 'MD','iso_alpha3' => 'MDA','iso_numeric' => '498','calling_code' => '373','currency_code' => 'MDL','currency_name' => 'Leu','currency_symbol' => ''), array('name' => 'Monaco','iso_alpha2' => 'MC','iso_alpha3' => 'MCO','iso_numeric' => '492','calling_code' => '377','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Mongolia','iso_alpha2' => 'MN','iso_alpha3' => 'MNG','iso_numeric' => '496','calling_code' => '976','currency_code' => 'MNT','currency_name' => 'Tugrik','currency_symbol' => '₮'), array('name' => 'Montserrat','iso_alpha2' => 'MS','iso_alpha3' => 'MSR','iso_numeric' => '500','calling_code' => '1664','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Morocco','iso_alpha2' => 'MA','iso_alpha3' => 'MAR','iso_numeric' => '504','calling_code' => '212','currency_code' => 'MAD','currency_name' => 'Dirham','currency_symbol' => ''), array('name' => 'Mozambique','iso_alpha2' => 'MZ','iso_alpha3' => 'MOZ','iso_numeric' => '508','calling_code' => '258','currency_code' => 'MZN','currency_name' => 'Meticail','currency_symbol' => 'MT'), array('name' => 'Myanmar','iso_alpha2' => 'MM','iso_alpha3' => 'MMR','iso_numeric' => '104','calling_code' => '95','currency_code' => 'MMK','currency_name' => 'Kyat','currency_symbol' => 'K'), array('name' => 'Namibia','iso_alpha2' => 'NA','iso_alpha3' => 'NAM','iso_numeric' => '516','calling_code' => '264','currency_code' => 'NAD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Nauru','iso_alpha2' => 'NR','iso_alpha3' => 'NRU','iso_numeric' => '520','calling_code' => '674','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Nepal','iso_alpha2' => 'NP','iso_alpha3' => 'NPL','iso_numeric' => '524','calling_code' => '977','currency_code' => 'NPR','currency_name' => 'Rupee','currency_symbol' => '₨'), array('name' => 'Netherlands','iso_alpha2' => 'NL','iso_alpha3' => 'NLD','iso_numeric' => '528','calling_code' => '31','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Netherlands Antilles','iso_alpha2' => 'AN','iso_alpha3' => 'ANT','iso_numeric' => '530','calling_code' => '599','currency_code' => 'ANG','currency_name' => 'Guilder','currency_symbol' => 'ƒ'), array('name' => 'New Caledonia','iso_alpha2' => 'NC','iso_alpha3' => 'NCL','iso_numeric' => '540','calling_code' => '687','currency_code' => 'XPF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'New Zealand','iso_alpha2' => 'NZ','iso_alpha3' => 'NZL','iso_numeric' => '554','calling_code' => '64','currency_code' => 'NZD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Nicaragua','iso_alpha2' => 'NI','iso_alpha3' => 'NIC','iso_numeric' => '558','calling_code' => '505','currency_code' => 'NIO','currency_name' => 'Cordoba','currency_symbol' => 'C$'), array('name' => 'Niger','iso_alpha2' => 'NE','iso_alpha3' => 'NER','iso_numeric' => '562','calling_code' => '227','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Nigeria','iso_alpha2' => 'NG','iso_alpha3' => 'NGA','iso_numeric' => '566','calling_code' => '234','currency_code' => 'NGN','currency_name' => 'Naira','currency_symbol' => '₦'), array('name' => 'Niue','iso_alpha2' => 'NU','iso_alpha3' => 'NIU','iso_numeric' => '570','calling_code' => '683','currency_code' => 'NZD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Norfolk Island','iso_alpha2' => 'NF','iso_alpha3' => 'NFK','iso_numeric' => '574','calling_code' => '','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'North Korea','iso_alpha2' => 'KP','iso_alpha3' => 'PRK','iso_numeric' => '408','calling_code' => '850','currency_code' => 'KPW','currency_name' => 'Won','currency_symbol' => '₩'), array('name' => 'Northern Mariana Islands','iso_alpha2' => 'MP','iso_alpha3' => 'MNP','iso_numeric' => '580','calling_code' => '1670','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Norway','iso_alpha2' => 'NO','iso_alpha3' => 'NOR','iso_numeric' => '578','calling_code' => '47','currency_code' => 'NOK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Oman','iso_alpha2' => 'OM','iso_alpha3' => 'OMN','iso_numeric' => '512','calling_code' => '968','currency_code' => 'OMR','currency_name' => 'Rial','currency_symbol' => '﷼'), array('name' => 'Pakistan','iso_alpha2' => 'PK','iso_alpha3' => 'PAK','iso_numeric' => '586','calling_code' => '92','currency_code' => 'PKR','currency_name' => 'Rupee','currency_symbol' => '₨'), array('name' => 'Palau','iso_alpha2' => 'PW','iso_alpha3' => 'PLW','iso_numeric' => '585','calling_code' => '680','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Palestinian Territory','iso_alpha2' => 'PS','iso_alpha3' => 'PSE','iso_numeric' => '275','calling_code' => '','currency_code' => 'ILS','currency_name' => 'Shekel','currency_symbol' => '₪'), array('name' => 'Panama','iso_alpha2' => 'PA','iso_alpha3' => 'PAN','iso_numeric' => '591','calling_code' => '507','currency_code' => 'PAB','currency_name' => 'Balboa','currency_symbol' => 'B/.'), array('name' => 'Papua New Guinea','iso_alpha2' => 'PG','iso_alpha3' => 'PNG','iso_numeric' => '598','calling_code' => '675','currency_code' => 'PGK','currency_name' => 'Kina','currency_symbol' => ''), array('name' => 'Paraguay','iso_alpha2' => 'PY','iso_alpha3' => 'PRY','iso_numeric' => '600','calling_code' => '595','currency_code' => 'PYG','currency_name' => 'Guarani','currency_symbol' => 'Gs'), array('name' => 'Peru','iso_alpha2' => 'PE','iso_alpha3' => 'PER','iso_numeric' => '604','calling_code' => '51','currency_code' => 'PEN','currency_name' => 'Sol','currency_symbol' => 'S/.'), array('name' => 'Philippines','iso_alpha2' => 'PH','iso_alpha3' => 'PHL','iso_numeric' => '608','calling_code' => '63','currency_code' => 'PHP','currency_name' => 'Peso','currency_symbol' => 'Php'), array('name' => 'Pitcairn','iso_alpha2' => 'PN','iso_alpha3' => 'PCN','iso_numeric' => '612','calling_code' => '870','currency_code' => 'NZD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Poland','iso_alpha2' => 'PL','iso_alpha3' => 'POL','iso_numeric' => '616','calling_code' => '48','currency_code' => 'PLN','currency_name' => 'Zloty','currency_symbol' => 'zł'), array('name' => 'Portugal','iso_alpha2' => 'PT','iso_alpha3' => 'PRT','iso_numeric' => '620','calling_code' => '351','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Puerto Rico','iso_alpha2' => 'PR','iso_alpha3' => 'PRI','iso_numeric' => '630','calling_code' => '1','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Qatar','iso_alpha2' => 'QA','iso_alpha3' => 'QAT','iso_numeric' => '634','calling_code' => '974','currency_code' => 'QAR','currency_name' => 'Rial','currency_symbol' => '﷼'), array('name' => 'Republic of the Congo','iso_alpha2' => 'CG','iso_alpha3' => 'COG','iso_numeric' => '178','calling_code' => '242','currency_code' => 'XAF','currency_name' => 'Franc','currency_symbol' => 'FCF'), array('name' => 'Reunion','iso_alpha2' => 'RE','iso_alpha3' => 'REU','iso_numeric' => '638','calling_code' => '','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Romania','iso_alpha2' => 'RO','iso_alpha3' => 'ROU','iso_numeric' => '642','calling_code' => '40','currency_code' => 'RON','currency_name' => 'Leu','currency_symbol' => 'lei'), array('name' => 'Russia','iso_alpha2' => 'RU','iso_alpha3' => 'RUS','iso_numeric' => '643','calling_code' => '7','currency_code' => 'RUB','currency_name' => 'Ruble','currency_symbol' => 'руб'), array('name' => 'Rwanda','iso_alpha2' => 'RW','iso_alpha3' => 'RWA','iso_numeric' => '646','calling_code' => '250','currency_code' => 'RWF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Saint Helena','iso_alpha2' => 'SH','iso_alpha3' => 'SHN','iso_numeric' => '654','calling_code' => '290','currency_code' => 'SHP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'Saint Kitts and Nevis','iso_alpha2' => 'KN','iso_alpha3' => 'KNA','iso_numeric' => '659','calling_code' => '1869','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Saint Lucia','iso_alpha2' => 'LC','iso_alpha3' => 'LCA','iso_numeric' => '662','calling_code' => '1758','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Saint Pierre and Miquelon','iso_alpha2' => 'PM','iso_alpha3' => 'SPM','iso_numeric' => '666','calling_code' => '508','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Saint Vincent and the Grenadines','iso_alpha2' => 'VC','iso_alpha3' => 'VCT','iso_numeric' => '670','calling_code' => '1784','currency_code' => 'XCD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Samoa','iso_alpha2' => 'WS','iso_alpha3' => 'WSM','iso_numeric' => '882','calling_code' => '685','currency_code' => 'WST','currency_name' => 'Tala','currency_symbol' => 'WS$'), array('name' => 'San Marino','iso_alpha2' => 'SM','iso_alpha3' => 'SMR','iso_numeric' => '674','calling_code' => '378','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Sao Tome and Principe','iso_alpha2' => 'ST','iso_alpha3' => 'STP','iso_numeric' => '678','calling_code' => '239','currency_code' => 'STD','currency_name' => 'Dobra','currency_symbol' => 'Db'), array('name' => 'Saudi Arabia','iso_alpha2' => 'SA','iso_alpha3' => 'SAU','iso_numeric' => '682','calling_code' => '966','currency_code' => 'SAR','currency_name' => 'Rial','currency_symbol' => '﷼'), array('name' => 'Senegal','iso_alpha2' => 'SN','iso_alpha3' => 'SEN','iso_numeric' => '686','calling_code' => '221','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Serbia and Montenegro','iso_alpha2' => 'CS','iso_alpha3' => 'SCG','iso_numeric' => '891','calling_code' => '','currency_code' => 'RSD','currency_name' => 'Dinar','currency_symbol' => 'Дин'), array('name' => 'Seychelles','iso_alpha2' => 'SC','iso_alpha3' => 'SYC','iso_numeric' => '690','calling_code' => '248','currency_code' => 'SCR','currency_name' => 'Rupee','currency_symbol' => '₨'), array('name' => 'Sierra Leone','iso_alpha2' => 'SL','iso_alpha3' => 'SLE','iso_numeric' => '694','calling_code' => '232','currency_code' => 'SLL','currency_name' => 'Leone','currency_symbol' => 'Le'), array('name' => 'Singapore','iso_alpha2' => 'SG','iso_alpha3' => 'SGP','iso_numeric' => '702','calling_code' => '65','currency_code' => 'SGD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Slovakia','iso_alpha2' => 'SK','iso_alpha3' => 'SVK','iso_numeric' => '703','calling_code' => '421','currency_code' => 'SKK','currency_name' => 'Koruna','currency_symbol' => 'Sk'), array('name' => 'Slovenia','iso_alpha2' => 'SI','iso_alpha3' => 'SVN','iso_numeric' => '705','calling_code' => '386','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Solomon Islands','iso_alpha2' => 'SB','iso_alpha3' => 'SLB','iso_numeric' => '90','calling_code' => '677','currency_code' => 'SBD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Somalia','iso_alpha2' => 'SO','iso_alpha3' => 'SOM','iso_numeric' => '706','calling_code' => '252','currency_code' => 'SOS','currency_name' => 'Shilling','currency_symbol' => 'S'), array('name' => 'South Africa','iso_alpha2' => 'ZA','iso_alpha3' => 'ZAF','iso_numeric' => '710','calling_code' => '27','currency_code' => 'ZAR','currency_name' => 'Rand','currency_symbol' => 'R'), array('name' => 'South Georgia and the South Sandwich Islands','iso_alpha2' => 'GS','iso_alpha3' => 'SGS','iso_numeric' => '239','calling_code' => '','currency_code' => 'GBP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'South Korea','iso_alpha2' => 'KR','iso_alpha3' => 'KOR','iso_numeric' => '410','calling_code' => '82','currency_code' => 'KRW','currency_name' => 'Won','currency_symbol' => '₩'), array('name' => 'Spain','iso_alpha2' => 'ES','iso_alpha3' => 'ESP','iso_numeric' => '724','calling_code' => '34','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Sri Lanka','iso_alpha2' => 'LK','iso_alpha3' => 'LKA','iso_numeric' => '144','calling_code' => '94','currency_code' => 'LKR','currency_name' => 'Rupee','currency_symbol' => '₨'), array('name' => 'Sudan','iso_alpha2' => 'SD','iso_alpha3' => 'SDN','iso_numeric' => '736','calling_code' => '249','currency_code' => 'SDD','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Suriname','iso_alpha2' => 'SR','iso_alpha3' => 'SUR','iso_numeric' => '740','calling_code' => '597','currency_code' => 'SRD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Svalbard and Jan Mayen','iso_alpha2' => 'SJ','iso_alpha3' => 'SJM','iso_numeric' => '744','calling_code' => '','currency_code' => 'NOK','currency_name' => 'Krone','currency_symbol' => 'kr'), array('name' => 'Swaziland','iso_alpha2' => 'SZ','iso_alpha3' => 'SWZ','iso_numeric' => '748','calling_code' => '268','currency_code' => 'SZL','currency_name' => 'Lilangeni','currency_symbol' => ''), array('name' => 'Sweden','iso_alpha2' => 'SE','iso_alpha3' => 'SWE','iso_numeric' => '752','calling_code' => '46','currency_code' => 'SEK','currency_name' => 'Krona','currency_symbol' => 'kr'), array('name' => 'Switzerland','iso_alpha2' => 'CH','iso_alpha3' => 'CHE','iso_numeric' => '756','calling_code' => '41','currency_code' => 'CHF','currency_name' => 'Franc','currency_symbol' => 'CHF'), array('name' => 'Syria','iso_alpha2' => 'SY','iso_alpha3' => 'SYR','iso_numeric' => '760','calling_code' => '963','currency_code' => 'SYP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'Taiwan','iso_alpha2' => 'TW','iso_alpha3' => 'TWN','iso_numeric' => '158','calling_code' => '886','currency_code' => 'TWD','currency_name' => 'Dollar','currency_symbol' => 'NT$'), array('name' => 'Tajikistan','iso_alpha2' => 'TJ','iso_alpha3' => 'TJK','iso_numeric' => '762','calling_code' => '992','currency_code' => 'TJS','currency_name' => 'Somoni','currency_symbol' => ''), array('name' => 'Tanzania','iso_alpha2' => 'TZ','iso_alpha3' => 'TZA','iso_numeric' => '834','calling_code' => '255','currency_code' => 'TZS','currency_name' => 'Shilling','currency_symbol' => ''), array('name' => 'Thailand','iso_alpha2' => 'TH','iso_alpha3' => 'THA','iso_numeric' => '764','calling_code' => '66','currency_code' => 'THB','currency_name' => 'Baht','currency_symbol' => '฿'), array('name' => 'Togo','iso_alpha2' => 'TG','iso_alpha3' => 'TGO','iso_numeric' => '768','calling_code' => '228','currency_code' => 'XOF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Tokelau','iso_alpha2' => 'TK','iso_alpha3' => 'TKL','iso_numeric' => '772','calling_code' => '690','currency_code' => 'NZD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Tonga','iso_alpha2' => 'TO','iso_alpha3' => 'TON','iso_numeric' => '776','calling_code' => '676','currency_code' => 'TOP','currency_name' => 'Paanga','currency_symbol' => 'T$'), array('name' => 'Trinidad and Tobago','iso_alpha2' => 'TT','iso_alpha3' => 'TTO','iso_numeric' => '780','calling_code' => '1868','currency_code' => 'TTD','currency_name' => 'Dollar','currency_symbol' => 'TT$'), array('name' => 'Tunisia','iso_alpha2' => 'TN','iso_alpha3' => 'TUN','iso_numeric' => '788','calling_code' => '216','currency_code' => 'TND','currency_name' => 'Dinar','currency_symbol' => ''), array('name' => 'Turkey','iso_alpha2' => 'TR','iso_alpha3' => 'TUR','iso_numeric' => '792','calling_code' => '90','currency_code' => 'TRY','currency_name' => 'Lira','currency_symbol' => 'YTL'), array('name' => 'Turkmenistan','iso_alpha2' => 'TM','iso_alpha3' => 'TKM','iso_numeric' => '795','calling_code' => '993','currency_code' => 'TMM','currency_name' => 'Manat','currency_symbol' => 'm'), array('name' => 'Turks and Caicos Islands','iso_alpha2' => 'TC','iso_alpha3' => 'TCA','iso_numeric' => '796','calling_code' => '1649','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Tuvalu','iso_alpha2' => 'TV','iso_alpha3' => 'TUV','iso_numeric' => '798','calling_code' => '688','currency_code' => 'AUD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'U.S. Virgin Islands','iso_alpha2' => 'VI','iso_alpha3' => 'VIR','iso_numeric' => '850','calling_code' => '1340','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Uganda','iso_alpha2' => 'UG','iso_alpha3' => 'UGA','iso_numeric' => '800','calling_code' => '256','currency_code' => 'UGX','currency_name' => 'Shilling','currency_symbol' => ''), array('name' => 'Ukraine','iso_alpha2' => 'UA','iso_alpha3' => 'UKR','iso_numeric' => '804','calling_code' => '380','currency_code' => 'UAH','currency_name' => 'Hryvnia','currency_symbol' => '₴'), array('name' => 'United Arab Emirates','iso_alpha2' => 'AE','iso_alpha3' => 'ARE','iso_numeric' => '784','calling_code' => '971','currency_code' => 'AED','currency_name' => 'Dirham','currency_symbol' => ''), array('name' => 'United Kingdom','iso_alpha2' => 'GB','iso_alpha3' => 'GBR','iso_numeric' => '826','calling_code' => '44','currency_code' => 'GBP','currency_name' => 'Pound','currency_symbol' => '£'), array('name' => 'United States','iso_alpha2' => 'US','iso_alpha3' => 'USA','iso_numeric' => '840','calling_code' => '1','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'United States Minor Outlying Islands','iso_alpha2' => 'UM','iso_alpha3' => 'UMI','iso_numeric' => '581','calling_code' => '','currency_code' => 'USD','currency_name' => 'Dollar','currency_symbol' => '$'), array('name' => 'Uruguay','iso_alpha2' => 'UY','iso_alpha3' => 'URY','iso_numeric' => '858','calling_code' => '598','currency_code' => 'UYU','currency_name' => 'Peso','currency_symbol' => '$U'), array('name' => 'Uzbekistan','iso_alpha2' => 'UZ','iso_alpha3' => 'UZB','iso_numeric' => '860','calling_code' => '998','currency_code' => 'UZS','currency_name' => 'Som','currency_symbol' => 'лв'), array('name' => 'Vanuatu','iso_alpha2' => 'VU','iso_alpha3' => 'VUT','iso_numeric' => '548','calling_code' => '678','currency_code' => 'VUV','currency_name' => 'Vatu','currency_symbol' => 'Vt'), array('name' => 'Vatican','iso_alpha2' => 'VA','iso_alpha3' => 'VAT','iso_numeric' => '336','calling_code' => '39','currency_code' => 'EUR','currency_name' => 'Euro','currency_symbol' => '€'), array('name' => 'Venezuela','iso_alpha2' => 'VE','iso_alpha3' => 'VEN','iso_numeric' => '862','calling_code' => '58','currency_code' => 'VEF','currency_name' => 'Bolivar','currency_symbol' => 'Bs'), array('name' => 'Vietnam','iso_alpha2' => 'VN','iso_alpha3' => 'VNM','iso_numeric' => '704','calling_code' => '84','currency_code' => 'VND','currency_name' => 'Dong','currency_symbol' => '₫'), array('name' => 'Wallis and Futuna','iso_alpha2' => 'WF','iso_alpha3' => 'WLF','iso_numeric' => '876','calling_code' => '681','currency_code' => 'XPF','currency_name' => 'Franc','currency_symbol' => ''), array('name' => 'Western Sahara','iso_alpha2' => 'EH','iso_alpha3' => 'ESH','iso_numeric' => '732','calling_code' => '','currency_code' => 'MAD','currency_name' => 'Dirham','currency_symbol' => ''), array('name' => 'Yemen','iso_alpha2' => 'YE','iso_alpha3' => 'YEM','iso_numeric' => '887','calling_code' => '967','currency_code' => 'YER','currency_name' => 'Rial','currency_symbol' => '﷼'), array('name' => 'Zambia','iso_alpha2' => 'ZM','iso_alpha3' => 'ZMB','iso_numeric' => '894','calling_code' => '260','currency_code' => 'ZMK','currency_name' => 'Kwacha','currency_symbol' => 'ZK'), array('name' => 'Zimbabwe','iso_alpha2' => 'ZW','iso_alpha3' => 'ZWE','iso_numeric' => '716','calling_code' => '263','currency_code' => 'ZWD','currency_name' => 'Dollar','currency_symbol' => 'Z$') ); $output = array(); foreach ($countries as $key => $value) { if($return=='country') $output[$value['iso_alpha2']] = $value['name']; else if($return=='currency_name') $output[$value['currency_code']] = $value['currency_code']." (".$value['currency_name'].")"; else if($return=='currecny_icon') $output[$value['currency_code']] = !empty($value['currency_symbol']) ? $value['currency_symbol'] : $value['currency_code']; else $output[$value['iso_alpha2']] = $value['calling_code']; } if(isset($output[''])) unset($output['']); asort($output); return $output; } function _payment_package() { $payment_package=$this->basic->get_data("package",$where=array("where"=>array("is_default"=>"0","price > "=>0)),$select='',$join='',$limit='',$start=NULL,$order_by='price'); $return_val=array(); $config_data=$this->basic->get_data("payment_config"); $currency=$config_data[0]["currency"]; foreach ($payment_package as $row) { $return_val[$row['id']]=$row['package_name']." : Only @".$currency." ".$row['price']." for ".$row['validity']." days"; } return $return_val; } protected function real_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } function get_general_content($url,$proxy=""){ $ch = curl_init(); // initialize curl handle /* curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 0);*/ curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7); curl_setopt($ch, CURLOPT_REFERER, 'http://'.$url); curl_setopt($ch, CURLOPT_URL, $url); // set url to post to curl_setopt($ch, CURLOPT_FAILONERROR, 1); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable curl_setopt($ch, CURLOPT_TIMEOUT, 50); // times out after 50s curl_setopt($ch, CURLOPT_POST, 0); // set POST method curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); // curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); $content = curl_exec($ch); // run the whole process curl_close($ch); return json_encode($content); } function get_general_content_with_checking($url,$proxy=""){ $ch = curl_init(); // initialize curl handle /* curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 0);*/ curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7); curl_setopt($ch, CURLOPT_REFERER, 'http://'.$url); curl_setopt($ch, CURLOPT_URL, $url); // set url to post to curl_setopt($ch, CURLOPT_FAILONERROR, 1); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable curl_setopt($ch, CURLOPT_TIMEOUT, 120); // times out after 50s curl_setopt($ch, CURLOPT_POST, 0); // set POST method curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); // curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); $content = curl_exec($ch); // run the whole process $response['content'] = $content; $res = curl_getinfo($ch); if($res['http_code'] != 200) $response['error'] = 'error'; curl_close($ch); return json_encode($response); } //=======================GET DATA FUNCTIONS ====================== //================================================================ //================================================================ //=========================WEBSITE FUNCTIOS======================= public function _random_number_generator($length=6) { $rand = substr(uniqid(mt_rand(), true), 0, $length); return $rand; } public function forgot_password() { $data["page_title"] = $this->lang->line("Password Recovery"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/forgot_password.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/forgot_password"; else $body_load = "site/default/forgot_password"; $data['body']=$body_load; $this->_subscription_viewcontroller($data); } public function code_genaration() { $this->ajax_check(); $email = trim($this->input->post('email',true)); $result = $this->basic->get_data('users', array('where' => array('email' => $email)), array('count(*) as num')); if ($result[0]['num'] == 1) { //entry to forget_password table $expiration = date("Y-m-d H:i:s", strtotime('+1 day', time())); $code = $this->_random_number_generator(); $url = site_url().'home/password_recovery'; $url_final="<a href='".$url."' target='_BLANK'>".$url."</a>"; $productname = $this->config->item('product_name'); $table = 'forget_password'; $info = array( 'confirmation_code' => $code, 'email' => $email, 'expiration' => $expiration ); if ($this->basic->insert_data($table, $info)) { //email to user $email_template_info = $this->basic->get_data("email_template_management",array('where'=>array('template_type'=>'reset_password')),array('subject','message')); if(isset($email_template_info[0]) && $email_template_info[0]['subject'] != '' && $email_template_info[0]['message'] != '') { $subject = str_replace('#APP_NAME#',$productname,$email_template_info[0]['subject']); $message =str_replace(array("#APP_NAME#","#PASSWORD_RESET_URL#","#PASSWORD_RESET_CODE#"),array($productname,$url_final,$code),$email_template_info[0]['message']); } else { $subject = $productname." | Password recovery"; $message = "<p>".$this->lang->line('to reset your password please perform the following steps')." : </p> <ol> <li>".$this->lang->line("go to this url")." : ".$url_final."</li> <li>".$this->lang->line("enter this code")." : ".$code."</li> <li>".$this->lang->line("reset your password")."</li> </ol> <h4>".$this->lang->line("link and code will be expired after 24 hours")."</h4>"; } $from = $this->config->item('institute_email'); $to = $email; $mask = $this->config->item("product_name"); $html = 1; $this->_mail_sender($from, $to, $subject, $message, $mask, $html); } } else { echo 0; } } public function password_recovery() { $data['page_title']=$this->lang->line("password recovery"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/password_recovery.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/password_recovery"; else $body_load = "site/default/password_recovery"; $data['body']=$body_load; $this->_subscription_viewcontroller($data); } public function recovery_check() { $this->ajax_check(); if ($_POST) { $code=trim($this->input->post('code', true)); $newp=md5($this->input->post('newp', true)); $conf=md5($this->input->post('conf', true)); if($code=="" || $newp=="" || $conf=="" || ($newp != $conf) ) { echo 0; exit(); } $table='forget_password'; $where['where']=array('confirmation_code'=>$code,'success'=>0); $select=array('email','expiration'); $result=$this->basic->get_data($table, $where, $select); if (empty($result)) { echo 0; } else { foreach ($result as $row) { $email=$row['email']; $expiration=$row['expiration']; } $now=time(); $exp=strtotime($expiration); if ($now>$exp) { echo 1; } else { $student_info_where['where'] = array('email'=>$email); $student_info_select = array('id'); $student_info_id = $this->basic->get_data('users', $student_info_where, $student_info_select); $this->basic->update_data('users', array('id'=>$student_info_id[0]['id']), array('password'=>$newp)); $this->basic->update_data('forget_password', array('confirmation_code'=>$code), array('success'=>1)); echo 2; } } } } function _mail_sender($from = '', $to = '', $subject = '', $message = '', $mask = "", $html = 1, $smtp = 1,$attachement="",$test_mail="") { if ($to!= '' && $subject!='' && $message!= '') { if($this->config->item('email_sending_option') == '') $email_sending_option = 'smtp'; else $email_sending_option = $this->config->item('email_sending_option'); if($test_mail == 1) $email_sending_option = 'smtp'; // if($smtp != '1') $message=$message."<br/><br/>".$this->lang->line("The email was sent by"). ": ".$from; if($email_sending_option == 'smtp') { if ($smtp == '1') { $where2 = array("where" => array('status' => '1','deleted' => '0')); $email_config_details = $this->basic->get_data("email_config", $where2, $select = '', $join = '', $limit = '', $start = '', $group_by = '', $num_rows = 0); if (count($email_config_details) == 0) { $this->load->library('email'); } else { foreach ($email_config_details as $send_info) { $send_email = trim($send_info['email_address']); $smtp_host = trim($send_info['smtp_host']); $smtp_port = trim($send_info['smtp_port']); $smtp_user = trim($send_info['smtp_user']); $smtp_password = trim($send_info['smtp_password']); $smtp_type = trim($send_info['smtp_type']); } /*****Email Sending Code ******/ $config = array( 'protocol' => 'smtp', 'smtp_host' => "{$smtp_host}", 'smtp_port' => "{$smtp_port}", 'smtp_user' => "{$smtp_user}", // change it to yours 'smtp_pass' => "{$smtp_password}", // change it to yours 'mailtype' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n", 'set_crlf'=> "\r\n", 'smtp_timeout' => '30', 'wrapchars' => '998' ); if($smtp_type != 'Default') $config['smtp_crypto'] = $smtp_type; $this->load->library('email', $config); } } /*** End of If Smtp== 1 **/ if (isset($send_email) && $send_email!= "") { $from = $send_email; } $this->email->from($from, $mask); $this->email->to($to); $this->email->subject($subject); $this->email->message($message); if ($html == 1) { $this->email->set_mailtype('html'); } if ($attachement!="") { $this->email->attach($attachement); } if ($this->email->send()) { return true; } else { if($test_mail==1) { return $this->email->print_debugger(); } else { return false; } } } if($email_sending_option == 'php_mail') { $from = get_domain_only(base_url()); $from = "support@".$from; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= "From: {$from}" . "\r\n"; if(mail($to, $subject, $message, $headers)) return true; else return false; } } else { return false; } } public function download_page_loader() { $this->load->view('page/download'); } public function sign_up() { $signup_form = $this->config->item('enable_signup_form'); if($signup_form == '0') { return $this->login_page(); } $data['num1']=$this->_random_number_generator(1); $data['num2']=$this->_random_number_generator(1); $captcha= $data['num1']+ $data['num2']; $this->session->set_userdata("sign_up_captcha",$captcha); $data["page_title"] = $this->lang->line("Sign Up"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/sign_up.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/sign_up"; else $body_load = "site/default/sign_up"; $data["body"] = $body_load; $this->_subscription_viewcontroller($data); } public function affiliate_commission($affiliate_id=0,$userid=0,$event='',$package_price=0) { // if($affiliate_id==0 || $userid==0 || $event=='') exit; $this->db->trans_start(); // Individual Commission for affilate $check_affiliate_special = $this->basic->get_data("affiliate_users",['where'=>['id'=>$affiliate_id,'status'=>'1']]); $has_special_commission = isset($check_affiliate_special[0]['is_overwritten']) ? $check_affiliate_special[0]['is_overwritten']:'0'; $is_affiliate_special_signup_commission = isset($check_affiliate_special[0]['is_signup_commission']) ? $check_affiliate_special[0]['is_signup_commission']:'0'; $is_affiliate_special_payment_commission = isset($check_affiliate_special[0]['is_payment']) ? $check_affiliate_special[0]['is_payment']:'0'; $is_affiliate_special_payment_type = isset($check_affiliate_special[0]['payment_type']) ? $check_affiliate_special[0]['payment_type']:""; // Common Payment for all affiliate $generic_signup_commission = $this->basic->get_data("affiliate_payment_settings"); $is_generic_signup_commission = isset($generic_signup_commission[0]['signup_commission']) ? $generic_signup_commission[0]['signup_commission']:0; $is_generic_payment_commission = isset($generic_signup_commission[0]['payment_commission']) ? $generic_signup_commission[0]['payment_commission']:0; $generic_payment_type = isset($generic_signup_commission[0]['payment_type']) ? $generic_signup_commission[0]['payment_type']:""; $commission_amount = 0; $special_payment_data = []; $special_payment_data['affiliate_id'] = $affiliate_id; $special_payment_data['user_id'] = $userid; $special_payment_data['event'] = $event; $special_payment_data['event_date'] = date("Y-m-d"); // echo $check_affiliate_special[0]['fixed_amount'];exit; if($has_special_commission =='1') { if(isset($event) && $event == "signup") { if($is_affiliate_special_signup_commission == '1') { $commission_amount = isset($check_affiliate_special[0]['signup_amount']) ? $check_affiliate_special[0]['signup_amount']:0; } else if($is_generic_signup_commission == '1') { $commission_amount = isset($generic_signup_commission[0]['sign_up_amount']) ? $generic_signup_commission[0]['sign_up_amount']:0; } } else if(isset($event) && $event == "payment"){ if($is_affiliate_special_payment_commission == '1') { if(isset($is_affiliate_special_payment_type) && $is_affiliate_special_payment_type == 'fixed') { if(isset($check_affiliate_special[0]['fixed_amount']) && !empty($check_affiliate_special[0]['fixed_amount'])) { $commission_amount = $check_affiliate_special[0]['fixed_amount']; } else if(isset($generic_signup_commission[0]['fixed_amount']) && !empty($generic_signup_commission[0]['fixed_amount'])) { $commission_amount = $generic_signup_commission[0]['fixed_amount']; } } else if(isset($is_affiliate_special_payment_type) && $is_affiliate_special_payment_type == 'percentage') { if(isset($check_affiliate_special[0]['percentage_amount']) && !empty($check_affiliate_special[0]['percentage_amount'])) { $percentage_for_affiliate = $check_affiliate_special[0]['percentage_amount']; } else if(isset($generic_signup_commission[0]['percentage']) && !empty($generic_signup_commission[0]['percentage'])) { $percentage_for_affiliate = $generic_signup_commission[0]['percentage']; } else { $percentage_for_affiliate = 0; } if($percentage_for_affiliate > 0) { $commission_amount = ($package_price * $percentage_for_affiliate) / 100; } } } else if($is_generic_payment_commission == '1') { if($generic_payment_type == 'fixed') { $commission_amount = isset($generic_signup_commission[0]['fixed_amount']) ? $generic_signup_commission[0]['fixed_amount']:0; } else if($generic_payment_type == 'percentage') { $percentage_for_affiliate = isset($generic_signup_commission[0]['percentage']) ? $generic_signup_commission[0]['percentage']:0; if($percentage_for_affiliate > 0) { $commission_amount = ($package_price * $percentage_for_affiliate) / 100; } } } } $special_payment_data['amount'] = $commission_amount; if($commission_amount > 0) { $this->basic->insert_data("affiliate_earning_history",$special_payment_data); $affiliate_total_earn = $check_affiliate_special[0]['total_earn'] + $commission_amount; $this->basic->update_data("affiliate_users",['id'=>$affiliate_id],['total_earn'=>$affiliate_total_earn]); } } else if(!empty($generic_signup_commission)) { if($event == "signup" && $is_generic_signup_commission == '1') { $commission_amount = isset($generic_signup_commission[0]['sign_up_amount']) ? $generic_signup_commission[0]['sign_up_amount']:0; } else if($event == "payment" && $is_generic_payment_commission == '1'){ if($generic_payment_type == 'fixed') { $commission_amount = isset($generic_signup_commission[0]['fixed_amount']) ? $generic_signup_commission[0]['fixed_amount']:0; } else if($generic_payment_type == 'percentage') { $percentage_for_affiliate = isset($generic_signup_commission[0]['percentage']) ? $generic_signup_commission[0]['percentage']:0; $commission_amount = ($package_price * $percentage_for_affiliate) / 100; } } $special_payment_data['amount'] = $commission_amount; if($commission_amount > 0) { $this->basic->insert_data("affiliate_earning_history",$special_payment_data); $affiliate_total_earn = $check_affiliate_special[0]['total_earn'] + $commission_amount; $this->basic->update_data("affiliate_users",['id'=>$affiliate_id],['total_earn'=>$affiliate_total_earn]); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Database error. Something went wrong.'))); exit(); } } public function sign_up_action() { $enable_signup_activation = $this->config->item('enable_signup_activation'); if($enable_signup_activation == '') $enable_signup_activation='1'; if ($_SERVER['REQUEST_METHOD'] === 'GET') { redirect('home/access_forbidden', 'location'); } if($_POST) { $this->form_validation->set_rules('name', '<b>'.$this->lang->line("name").'</b>', 'trim|required'); $this->form_validation->set_rules('email', '<b>'.$this->lang->line("email").'</b>', 'trim|required|valid_email|is_unique[users.email]'); // $this->form_validation->set_rules('mobile', '<b>'.$this->lang->line("mobile").'</b>', 'trim'); $this->form_validation->set_rules('password', '<b>'.$this->lang->line("password").'</b>', 'trim|required'); $this->form_validation->set_rules('confirm_password', '<b>'.$this->lang->line("confirm password").'</b>', 'trim|required|matches[password]'); $this->form_validation->set_rules('captcha', '<b>'.$this->lang->line("captcha").'</b>', 'trim|required|integer'); if($this->form_validation->run() == FALSE) { $this->sign_up(); } else { $this->csrf_token_check(); $captcha = $this->input->post('captcha', TRUE); if($captcha!=$this->session->userdata("sign_up_captcha")) { $this->session->set_userdata("sign_up_captcha_error",$this->lang->line("invalid captcha")); return $this->sign_up(); } $name = strip_tags($this->input->post('name', TRUE)); $email = $this->input->post('email', TRUE); // $mobile = $this->input->post('mobile', TRUE); $password = $this->input->post('password', TRUE); $affiliate_id = $this->input->cookie("affiliate_id"); // affiliator section if(isset($affiliate_id) && !empty($affiliate_id)) { $convertidintobinary = pack("H*", $affiliate_id); $explode_binarycontactid = explode("-", $convertidintobinary); $affiliate_id = $explode_binarycontactid[0]; } // affiliator section end if($affiliate_id == '') $affiliate_id = 0; // $this->db->trans_start(); $default_package=$this->basic->get_data("package",$where=array("where"=>array("is_default"=>"1"))); if(is_array($default_package) && array_key_exists(0, $default_package)) { $validity=$default_package[0]["validity"]; $package_id=$default_package[0]["id"]; $to_date=date('Y-m-d'); $expiry_date=date("Y-m-d",strtotime('+'.$validity.' day',strtotime($to_date))); } $code = $this->_random_number_generator(); $data = array( 'name' => $name, 'email' => $email, // 'mobile' => $mobile, 'password' => md5($password), 'user_type' => 'Member', 'status' => '0', 'activation_code' => $code, 'expired_date'=>$expiry_date, 'package_id'=>$package_id, 'affiliate_id' => $affiliate_id, ); if($enable_signup_activation=='0') $data['status']='1'; if ($this->basic->insert_data('users', $data)) { if($this->addon_exist("affiliate_system")) { if($affiliate_id != 0) { $userid_through_affiliate = $this->db->insert_id(); $visitor_ip = $this->real_ip(); $visitors_data = []; $visitors_data['affiliate_id'] = $affiliate_id; $visitors_data['user_id'] = $userid_through_affiliate; $visitors_data['type'] = 'signup'; $visitors_data['ip_address'] = $visitor_ip; $visitors_data['clicked_time'] = date("Y-m-d H:i:s"); $this->basic->insert_data('affiliate_visitors_action', $visitors_data); $this->affiliate_commission($affiliate_id,$userid_through_affiliate,"signup"); } } $mail_service_id = $this->config->item('mail_service_id'); $system_short_name= $this->config->item('product_short_name'); $mailchimp_list_tag="Sign up - {$system_short_name}"; if($mail_service_id!="") $this->send_email_to_autoresponder($mail_service_id, $email,$name,'','singnup','0',$mailchimp_list_tag); //email to user if($enable_signup_activation=='1') { $email_template_info = $this->basic->get_data("email_template_management",array('where'=>array('template_type'=>"signup_activation")),array('subject','message')); $url = site_url()."home/account_activation"; $url_final = "<a href='".$url."' target='_BLANK'>".$url."</a>"; $productname = $this->config->item('product_name'); if(isset($email_template_info[0]) && $email_template_info[0]['subject'] != '' && $email_template_info[0]['message'] != '') { $subject = str_replace('#APP_NAME#',$productname,$email_template_info[0]['subject']); $message = str_replace(array("#APP_NAME#","#ACTIVATION_URL#","#ACCOUNT_ACTIVATION_CODE#"),array($productname,$url_final,$code),$email_template_info[0]['message']); // echo "Database Has data"; exit(); } else { $subject = $productname." | Account activation"; $message = "<p>".$this->lang->line("to activate your account please perform the following steps")."</p> <ol> <li>".$this->lang->line("go to this url").":".$url_final."</li> <li>".$this->lang->line("enter this code").":".$code."</li> <li>".$this->lang->line("activate your account")."</li> </ol>"; } $from = $this->config->item('institute_email'); $to = $email; $mask = $this->config->item("product_name"); $html = 1; $this->_mail_sender($from, $to, $subject, $message, $mask, $html); $this->session->set_userdata('reg_success',1); return $this->sign_up(); } else return $this->login_page(); } } } } public function account_activation() { $data["page_title"] = $this->lang->line("Account Activation"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/account_activation.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/account_activation"; else $body_load = "site/default/account_activation"; $data["body"] = $body_load; $this->_subscription_viewcontroller($data); } public function account_activation_action() { if ($_POST) { $code=trim($this->input->post('code', true)); $email=$this->input->post('email', true); $table='users'; $where['where']=array('activation_code'=>$code,'email'=>$email,'status'=>"0"); $select=array('id'); $result=$this->basic->get_data($table, $where, $select); if (empty($result)) { echo 0; } else { foreach ($result as $row) { $user_id=$row['id']; } $this->basic->update_data('users', array('id'=>$user_id), array('status'=>'1')); echo 2; } } } public function email_contact() { if ($_SERVER['REQUEST_METHOD'] === 'GET') { redirect('home/access_forbidden', 'location'); } if ($_POST) { $redirect_url=site_url("home#contact"); $this->form_validation->set_rules('email', '<b>'.$this->lang->line("email").'</b>', 'trim|required|valid_email'); $this->form_validation->set_rules('subject', '<b>'.$this->lang->line("message subject").'</b>', 'trim|required'); $this->form_validation->set_rules('message', '<b>'.$this->lang->line("message").'</b>', 'trim|required'); $this->form_validation->set_rules('captcha', '<b>'.$this->lang->line("captcha").'</b>', 'trim|required|integer'); if ($this->form_validation->run() == false) { return $this->index(); } else { $captcha = $this->input->post('captcha', TRUE); if($captcha!=$this->session->userdata("contact_captcha")) { $this->session->set_userdata("contact_captcha_error",$this->lang->line("invalid captcha")); redirect($redirect_url, 'location'); exit(); } $email = $this->input->post('email', true); $subject = $this->config->item("product_name")." | ".$this->input->post('subject', true); $message = $this->input->post('message', true); $message=$message."<br/><br/>".$this->lang->line("The email was sent by"). ": ".$email; $this->_mail_sender($from = $email, $to = $this->config->item("institute_email"), $subject, $message, $this->config->item("product_name"),$html=1); $this->session->set_userdata('mail_sent', 1); redirect($redirect_url, 'location'); } } } public function privacy_policy() { $data['page_title'] = 'Privacy Policy'; $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/privacy_policy.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/privacy_policy"; else $body_load = "site/default/privacy_policy"; $data['body'] = $body_load; $this->_front_viewcontroller($data); } public function terms_use() { $data['page_title'] = 'Terms of Use'; $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/terms_use.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/terms_use"; else $body_load = "site/default/terms_use"; $data['body'] = $body_load; $this->_front_viewcontroller($data); } public function gdpr() { $data['page_title'] = 'GDPR'; $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/gdpr.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/gdpr"; else $body_load = "site/default/gdpr"; $data['body']=$body_load; $this->_front_viewcontroller($data); } public function allow_cookie() { $this->session->set_userdata('allow_cookie','yes'); // redirect($_SERVER['HTTP_REFERER'],'location'); } //=========================WEBSITE FUNCTIOS======================= //================================================================ //========================================================================== //=======================USAGE LOG & LICENSE FUNCTIONS====================== public function _insert_usage_log($module_id=0,$usage_count=0,$user_id=0) { if($module_id==0 || $usage_count==0) return false; if($user_id==0) $user_id=$this->session->userdata("user_id"); if($user_id==0 || $user_id=="") return false; $usage_month=date("n"); $usage_year=date("Y"); $where=array("module_id"=>$module_id,"user_id"=>$user_id,"usage_month"=>$usage_month,"usage_year"=>$usage_year); $insert_data=array("module_id"=>$module_id,"user_id"=>$user_id,"usage_month"=>$usage_month,"usage_year"=>$usage_year,"usage_count"=>$usage_count); if($this->basic->is_exist("usage_log",$where)) { $this->db->set('usage_count', 'usage_count+'.$usage_count, FALSE); $this->db->where($where); $this->db->update('usage_log'); } else $this->basic->insert_data("usage_log",$insert_data); return true; } public function _delete_usage_log($module_id=0,$usage_count=0,$user_id=0) { if($module_id==0 || $usage_count==0) return false; if($user_id==0) $user_id=$this->session->userdata("user_id"); if($user_id==0 || $user_id=="") return false; $usage_month=date("n"); $usage_year=date("Y"); if($this->basic->is_exist("modules",array("id"=>$module_id,"extra_text"=>""),"id")) { $existing_info = $this->basic->get_data('usage_log',array('where'=>array('module_id'=>$module_id,'usage_count >='=>1,'user_id'=>$user_id))); if(!empty($existing_info)) { $where=array("id"=>$existing_info[0]['id'],"user_id"=>$user_id); $this->db->set('usage_count', 'usage_count-'.$usage_count, FALSE); $this->db->where($where); $this->db->update('usage_log'); } } else { $where=array("module_id"=>$module_id,"user_id"=>$user_id,"usage_month"=>$usage_month,"usage_year"=>$usage_year); $insert_data=array("module_id"=>$module_id,"user_id"=>$user_id,"usage_month"=>$usage_month,"usage_year"=>$usage_year,"usage_count"=>$usage_count); if($this->basic->is_exist("usage_log",$where)) { $this->db->set('usage_count', 'usage_count-'.$usage_count, FALSE); $this->db->where($where); $this->db->update('usage_log'); } } return true; } public function _check_usage($module_id=0,$request=0,$user_id=0) { if($module_id==0 || $request==0) return "0"; if($user_id==0) $user_id=$this->session->userdata("user_id"); if($user_id==0 || $user_id=="") return false; if($this->basic->is_exist("modules",array("id"=>$module_id,"extra_text"=>""),"id")) // not monthly limit modules { $this->db->select_sum('usage_count'); $this->db->where('user_id', $user_id); $this->db->where('module_id', $module_id); $info = $this->db->get('usage_log')->result_array(); $usage_count=0; if(isset($info[0]["usage_count"])) $usage_count=$info[0]["usage_count"]; } else { $usage_month=date("n"); $usage_year=date("Y"); $info=$this->basic->get_data("usage_log",$where=array("where"=>array("usage_month"=>$usage_month,"usage_year"=>$usage_year,"module_id"=>$module_id,"user_id"=>$user_id))); $usage_count=0; if(isset($info[0]["usage_count"])) $usage_count=$info[0]["usage_count"]; } $monthly_limit=array(); $bulk_limit=array(); $module_ids=array(); if($this->session->userdata("package_info")!="") { $package_info=$this->session->userdata("package_info"); if($this->session->userdata('user_type') == 'Admin') return "1"; } else { $package_data = $this->basic->get_data("users", $where=array("where"=>array("users.id"=>$user_id)),"package.*,users.user_type",array('package'=>"users.package_id=package.id,left")); $package_info=array(); if(array_key_exists(0, $package_data)) $package_info=$package_data[0]; if($package_info['user_type'] == 'Admin') return "1"; } if(isset($package_info["bulk_limit"])) $bulk_limit=json_decode($package_info["bulk_limit"],true); if(isset($package_info["monthly_limit"])) $monthly_limit=json_decode($package_info["monthly_limit"],true); if(isset($package_info["module_ids"])) $module_ids=explode(',', $package_info["module_ids"]); $return = "0"; if(in_array($module_id, $module_ids) && $bulk_limit[$module_id] > 0 && $bulk_limit[$module_id]<$request) $return = "2"; // bulk limit crossed | 0 means unlimited else if(in_array($module_id, $module_ids) && $monthly_limit[$module_id] > 0 && $monthly_limit[$module_id]<($request+$usage_count)) $return = "3"; // montly limit crossed | 0 means unlimited else $return = "1"; //success return $return; } public function print_limit_message($module_id=0,$request=0) { $status=$this->_check_usage($module_id,$request); if($status=="2") { echo $this->lang->line("sorry, your bulk limit is exceeded for this module.")."<a href='".site_url('usage_history')."'>".$this->lang->line("click here to see usage log")."</a>"; exit(); } else if($status=="3") { echo $this->lang->line("sorry, your monthly limit is exceeded for this module.")."<a href='".site_url('usage_history')."'>".$this->lang->line("click here to see usage log")."</a>"; exit(); } } public function member_validity() { if($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') != 'Admin') { $where['where'] = array('id'=>$this->session->userdata('user_id')); $user_expire_date = $this->basic->get_data('users',$where,$select=array('expired_date')); $expire_date = strtotime($user_expire_date[0]['expired_date']); $current_date = strtotime(date("Y-m-d")); $package_data=$this->basic->get_data("users",$where=array("where"=>array("users.id"=>$this->session->userdata("user_id"))),$select="package.price as price",$join=array('package'=>"users.package_id=package.id,left")); if(is_array($package_data) && array_key_exists(0, $package_data)) $price=$package_data[0]["price"]; if($price=="Trial") $price=1; if ($expire_date < $current_date && ($price>0 && $price!="")) redirect('payment/buy_package','Location'); } } public function important_feature() { if(file_exists(APPPATH.'config/licence.txt') && file_exists(APPPATH.'core/licence.txt')) { $config_existing_content = file_get_contents(APPPATH.'config/licence.txt'); $config_decoded_content = json_decode($config_existing_content, true); $core_existing_content = file_get_contents(APPPATH.'core/licence.txt'); $core_decoded_content = json_decode($core_existing_content, true); if($config_decoded_content['is_active'] != md5($config_decoded_content['purchase_code']) || $core_decoded_content['is_active'] != md5(md5($core_decoded_content['purchase_code']))) { redirect("home/credential_check", 'Location'); } } else { redirect("home/credential_check", 'Location'); } } public function credential_check($secret_code=0) { if($this->is_demo=='1') redirect('home/access_forbidden','refresh'); $permissio = 0; if($this->session->userdata("user_type")=="Admin") $permissio = 1; else $permissio = 0; if($permissio == 0) redirect('home/access_forbidden', 'location'); $data["page_title"] = $this->lang->line("Credential Check"); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $body_file_path = "views/site/".$current_theme."/credential_check.php"; if(file_exists(APPPATH.$body_file_path)) $body_load = "site/".$current_theme."/credential_check"; else $body_load = "site/default/credential_check"; $data['body'] = $body_load; $this->_subscription_viewcontroller($data); } public function credential_check_action() { if($this->is_demo=='1') redirect('home/access_forbidden','refresh'); $domain_name = $this->input->post("domain_name",true); $purchase_code = $this->input->post("purchase_code",true); $only_domain = get_domain_only($domain_name); $response=$this->code_activation_check_action($purchase_code,$only_domain); if(file_exists(APPPATH.'core/licence_type.txt')) $this->license_check_action(); echo $response; } public function code_activation_check_action($purchase_code,$only_domain,$periodic=0) { $url = "https://url.codegood.net/veri.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat"; $credentials = $this->get_general_content_with_checking($url); $decoded_credentials = json_decode($credentials,true); if(isset($decoded_credentials['error'])) { $url = "https://url.codegood.net/veri.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat"; $credentials = $this->get_general_content_with_checking($url); $decoded_credentials = json_decode($credentials,true); } if(!isset($decoded_credentials['error'])) { $content = json_decode($decoded_credentials['content'],true); if($content['status'] == 'success') { $content_to_write = array( 'is_active' => md5($purchase_code), 'purchase_code' => $purchase_code, 'item_name' => $content['item_name'], 'buy_at' => $content['buy_at'], 'licence_type' => $content['license'], 'domain' => $only_domain, 'checking_date'=>date('Y-m-d') ); $config_json_content_to_write = json_encode($content_to_write); file_put_contents(APPPATH.'config/licence.txt', $config_json_content_to_write, LOCK_EX); $content_to_write['is_active'] = md5(md5($purchase_code)); $core_json_content_to_write = json_encode($content_to_write); file_put_contents(APPPATH.'core/licence.txt', $core_json_content_to_write, LOCK_EX); // added by mostofa 06/03/2017 $license_type = $content['license']; if($license_type != 'Extended License') $str = $purchase_code."_double"; else $str = $purchase_code."_single"; $encrypt_method = "AES-256-CBC"; $secret_key = 't8Mk8fsJMnFw69FGG5'; $secret_iv = '9fljzKxZmMmoT358yZ'; $key = hash('sha256', $secret_key); $string = $str; $iv = substr(hash('sha256', $secret_iv), 0, 16); $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $encoded = base64_encode($output); file_put_contents(APPPATH.'core/licence_type.txt', $encoded, LOCK_EX); return json_encode("success"); } else if($content['status'] == 'error'){ if(file_exists(APPPATH.'core/licence.txt')) unlink(APPPATH.'core/licence.txt'); return json_encode($content); } } else { if($periodic == 1) return json_encode("success"); else { $response['reason'] = "cURL is not working properly, please contact with your hosting provider."; return json_encode($response); } } } public function periodic_check(){ $today= date('d'); if($today%7==0){ if(file_exists(APPPATH.'config/licence.txt') && file_exists(APPPATH.'core/licence.txt')){ $config_existing_content = file_get_contents(APPPATH.'config/licence.txt'); $config_decoded_content = json_decode($config_existing_content, true); $last_check_date= $config_decoded_content['checking_date']; $purchase_code = $config_decoded_content['purchase_code']; $base_url = base_url(); $domain_name = get_domain_only($base_url); if( strtotime(date('Y-m-d')) != strtotime($last_check_date)){ $this->code_activation_check_action($purchase_code,$domain_name,$periodic=1); } } } } public function license_check() { $file_data = file_get_contents(APPPATH . 'core/licence.txt'); $file_data_array = json_decode($file_data, true); $purchase_code = $file_data_array['purchase_code']; $url = "https://url.codegood.net/veri.php?purchase_code={$purchase_code}"; $credentials = $this->get_general_content_with_checking($url); $response = json_decode($credentials, true); $response = json_decode($response['content'],true); if(!isset($response['status']) || $response['status'] == 'error') { $url="https://url.codegood.net/veri.php?purchase_code={$purchase_code}"; $credentials = $this->get_general_content_with_checking($url); $response = json_decode($credentials, true); $response = json_decode($response['content'],true); } if(isset($response['status'])) { if($response['status'] == 'error') { $status = 'single'; } else if($response['status'] == 'success' && $response['license'] == 'Extended License') { $status = 'single'; } else { $status = 'double'; } $content = $purchase_code."_".$status; $encrypt_method = "AES-256-CBC"; $secret_key = 't8Mk8fsJMnFw69FGG5'; $secret_iv = '9fljzKxZmMmoT358yZ'; $key = hash('sha256', $secret_key); $string = $content; $iv = substr(hash('sha256', $secret_iv), 0, 16); $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $encoded = base64_encode($output); file_put_contents(APPPATH.'core/licence_type.txt', $encoded, LOCK_EX); } } public function license_check_action() { $encoded = file_get_contents(APPPATH . 'core/licence_type.txt'); $encrypt_method = "AES-256-CBC"; $secret_key = 't8Mk8fsJMnFw69FGG5'; $secret_iv = '9fljzKxZmMmoT358yZ'; $key = hash('sha256', $secret_key); $iv = substr(hash('sha256', $secret_iv), 0, 16); $decoded = openssl_decrypt(base64_decode($encoded), $encrypt_method, $key, 0, $iv); $decoded = explode('_', $decoded); $decoded = array_pop($decoded); $this->session->set_userdata('license_type',$decoded); } public function php_info() { if($this->session->userdata('user_type')== 'Admin') echo phpinfo(); else redirect('home/access_forbidden', 'location'); } //=======================USAGE LOG & LICENSE FUNCTIONS====================== //========================================================================== //================================================================ //========================= ADDON FUNCTIONS ====================== //loads language files of addons protected function language_loader_addon() { $controller_name=strtolower($this->uri->segment(1)); $path_without_filename="application/modules/".$controller_name."/language/".$this->language."/"; if(file_exists($path_without_filename.$controller_name."_lang.php")) { $filename=$controller_name; $this->lang->load($filename,$this->language,FALSE,TRUE,$path_without_filename); } } // delete any direcory with it childs even it is not empty protected function delete_directoryX($dirPath="") { if (!is_dir($dirPath)) return false; if(substr($dirPath, strlen($dirPath) - 1, 1) != '/') $dirPath .= '/'; $files = glob($dirPath . '*', GLOB_MARK); foreach($files as $file) { if(is_dir($file)) $this->delete_directory($file); else @unlink($file); } rmdir($dirPath); } protected function delete_directory($dirPath="") { if (!is_dir($dirPath)) return false; $files = new DirectoryIterator($dirPath); foreach ($files as $file) { // check if not . or .. if (!$file->isDot()) { $file->isDir() ? $this->delete_directory($file->getPathname()) : unlink($file->getPathname()); } } rmdir($dirPath); return; } // takes addon controller path as input and extract add on data from comment block protected function get_addon_data($path="") { $path=str_replace('\\','/',$path); $tokens=token_get_all(file_get_contents($path)); $addon_data=array(); $addon_path=explode('/', $path); $controller_name=array_pop($addon_path); array_pop($addon_path); $addon_path=implode('/',$addon_path); $comments = array(); foreach($tokens as $token) { if($token[0] == T_COMMENT || $token[0] == T_DOC_COMMENT) { $comments[] = isset( $token[1]) ? $token[1] : ""; } } $comment_str=isset($comments[0]) ? $comments[0] : ""; preg_match( '/^.*?addon name:(.*)$/mi', $comment_str, $match); $addon_data['addon_name'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?unique name:(.*)$/mi', $comment_str, $match); $addon_data['unique_name'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '#modules:(.*?)Project ID#si', $comment_str, $match); $addon_data['modules'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?project id:(.*)$/mi', $comment_str, $match); $addon_data['project_id'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?addon uri:(.*)$/mi', $comment_str, $match); $addon_data['addon_uri'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?author:(.*)$/mi', $comment_str, $match); $addon_data['author'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?author uri:(.*)$/mi', $comment_str, $match); $addon_data['author_uri'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?version:(.*)$/mi', $comment_str, $match); $addon_data['version'] = isset($match[1]) ? trim($match[1]) : "1.0"; preg_match( '/^.*?description:(.*)$/mi', $comment_str, $match); $addon_data['description'] = isset($match[1]) ? trim($match[1]) : ""; $addon_data['controller_name'] = isset($controller_name) ? trim($controller_name) : ""; if(file_exists($addon_path.'/install.txt')) $addon_data['installed']='0'; else $addon_data['installed']='1'; return $addon_data; } // checks purchase code , returns boolean protected function addon_credential_check($purchase_code="",$item_name="") { $purchase_code = trim($purchase_code); if($purchase_code=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on purchase code has not been provided.'))); exit(); } /** $item_name=urlencode($item_name); $only_domain=get_domain_only(site_url()); $url = "http://xeroneit.net/development/envato_license_activation/purchase_code_check.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat-{$item_name}"; $credentials = $this->get_general_content_with_checking($url); $decoded_credentials = json_decode($credentials,true); if(isset($decoded_credentials['error'])) { $url = "https://mostofa.club/development/envato_license_activation/purchase_code_check.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat-{$item_name}"; $credentials = $this->get_general_content_with_checking($url); $decoded_credentials = json_decode($credentials,true); } if(!isset($decoded_credentials['error'])) { $content = json_decode($decoded_credentials['content'],true); if($content['status'] != 'success') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Purchase code is not valid or already used.'))); exit(); } } else { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Something went wrong. cURL is not working.'))); exit(); } */ } // validataion of addon data protected function check_addon_data($addon_data=array()) { if(!isset($addon_data['unique_name']) || $addon_data['unique_name']=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on unique name has not been provided.'))); exit(); } if(!$this->is_unique_check("addon_check",$addon_data['unique_name'])) // unique name must be unique { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on is already active. Duplicate unique name found.'))); exit(); } } // inserts data to add_ons table + modules + menu + menuchild1 + removes install.txt, returns json status,message protected function register_addon($addon_controller_name="",$sidebar=array(),$sql=array(),$purchase_code="",$default_module_name="") { if($this->session->userdata('user_type') != 'Admin') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($this->is_demo == '1') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($addon_controller_name=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller has not been provided.'))); exit(); } $path=APPPATH."modules/".strtolower($addon_controller_name)."/controllers/".$addon_controller_name.".php"; // path of addon controller $install_txt_path=APPPATH."modules/".strtolower($addon_controller_name)."/install.txt"; // path of install.txt if(!file_exists($path)) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller not found.'))); exit(); } $addon_data=$this->get_addon_data($path); $this->check_addon_data($addon_data); try { $this->db->trans_start(); // addon table entry $this->basic->insert_data("add_ons",array("add_on_name"=>$addon_data['addon_name'],"unique_name"=>$addon_data["unique_name"],"version"=>$addon_data["version"],"installed_at"=>date("Y-m-d H:i:s"),"purchase_code"=>$purchase_code,"module_folder_name"=>strtolower($addon_controller_name),"project_id"=>$addon_data["project_id"])); $add_ons_id=$this->db->insert_id(); $parent_module_id=""; $modules = isset($addon_data['modules']) ? json_decode(trim($addon_data['modules']),true) : array(); if(json_last_error() === 0 && is_array($modules)) { $module_ids = array_keys($modules); $parent_module_id=implode(',', $module_ids); foreach($modules as $key => $value) { if(!$this->basic->is_exist("modules",array("id"=>$key))) $this->basic->insert_data("modules",array("id"=>$key,"extra_text"=>$value['extra_text'],"module_name"=>$value['module_name'],'bulk_limit_enabled'=>$value['bulk_limit_enabled'],'limit_enabled'=>$value['limit_enabled'],"add_ons_id"=>$add_ons_id,"deleted"=>"0")); } } //--------------- sidebar entry-------------------- //------------------------------------------------- if(is_array($sidebar)) foreach ($sidebar as $key => $value) { $parent_name = isset($value['name']) ? $value['name'] : ""; $parent_icon = isset($value['icon']) ? $value['icon'] : ""; $parent_url = isset($value['url']) ? $value['url'] : "#"; $parent_is_external = isset($value['is_external']) ? $value['is_external'] : "0"; $child_info = isset($value['child_info']) ? $value['child_info'] : array(); $have_child = isset($child_info['have_child']) ? $child_info['have_child'] : '0'; $only_admin = isset($value['only_admin']) ? $value['only_admin'] : '0'; $only_member = isset($value['only_member']) ? $value['only_member'] : '0'; $parent_serial = 50; $parent_menu=array('name'=>$parent_name,'icon'=>$parent_icon,'url'=>$parent_url,'serial'=>$parent_serial,'module_access'=>$parent_module_id,'have_child'=>$have_child,'only_admin'=>$only_admin,'only_member'=>$only_member,'add_ons_id'=>$add_ons_id,'is_external'=>$parent_is_external); $this->basic->insert_data('menu',$parent_menu); // parent menu entry $parent_id=$this->db->insert_id(); if($have_child=='1') { if(!empty($child_info)) { $child = isset($child_info['child']) ? $child_info['child'] : array(); $child_serial=0; if(!empty($child)) foreach ($child as $key2 => $value2) { $child_serial++; $child_name = isset($value2['name']) ? $value2['name'] : ""; $child_icon = isset($value2['icon']) ? $value2['icon'] : ""; $child_url = isset($value2['url']) ? $value2['url'] : "#"; $child_info_1 = isset($value2['child_info']) ? $value2['child_info'] : array(); $child_is_external = isset($value2['is_external']) ? $value2['is_external'] : "0"; $have_child = isset($child_info_1['have_child']) ? $child_info_1['have_child'] : '0'; $only_admin = isset($value2['only_admin']) ? $value2['only_admin'] : '0'; $only_member = isset($value2['only_member']) ? $value2['only_member'] : '0'; $module_access = isset($value2['module_access']) ? $value2['module_access'] : ''; if($module_access=='') $module_access = $parent_module_id; $child_menu=array('name'=>$child_name,'icon'=>$child_icon,'url'=>$child_url,'serial'=>$child_serial,'module_access'=>$module_access,'parent_id'=>$parent_id,'have_child'=>$have_child,'only_admin'=>$only_admin,'only_member'=>$only_member,'is_external'=>$child_is_external); $this->basic->insert_data('menu_child_1',$child_menu); // child menu entry $sub_parent_id=$this->db->insert_id(); if($have_child=='1') { if(!empty($child_info_1)) { $child = isset($child_info_1['child']) ? $child_info_1['child'] : array(); $child_child_serial=0; if(!empty($child)) foreach ($child as $key3 => $value3) { $child_child_serial++; $child_name = isset($value3['name']) ? $value3['name'] : ""; $child_icon = isset($value3['icon']) ? $value3['icon'] : ""; $child_url = isset($value3['url']) ? $value3['url'] : "#"; $child_is_external = isset($value3['is_external']) ? $value3['is_external'] : "0"; $have_child = '0'; $only_admin = isset($value3['only_admin']) ? $value3['only_admin'] : '0'; $only_member = isset($value3['only_member']) ? $value3['only_member'] : '0'; $module_access2 = isset($value3['module_access']) ? $value3['module_access'] : ''; if($module_access2=='') $module_access2 = $module_access; $child_menu=array('name'=>$child_name,'icon'=>$child_icon,'url'=>$child_url,'serial'=>$child_child_serial,'module_access'=>$module_access2,'parent_child'=>$sub_parent_id,'only_admin'=>$only_admin,'only_member'=>$only_member,'is_external'=>$child_is_external); $this->basic->insert_data('menu_child_2',$child_menu); // child menu entry } } } } } } } //--------------- sidebar entry-------------------- //------------------------------------------------- $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Database error. Something went wrong.'))); exit(); } else { //--------Custom SQL------------ $this->db->db_debug = FALSE; //disable debugging for queries if(is_array($sql)) foreach ($sql as $key => $query) { try { $this->db->query($query); } catch(Exception $e) { } } //--------Custom SQL------------ @unlink($install_txt_path); // removing install.txt echo json_encode(array('status'=>'1','message'=>$this->lang->line('Add-on has been activated successfully.'))); } } //end of try catch(Exception $e) { $error = $e->getMessage(); echo json_encode(array('status'=>'0','message'=>$this->lang->line($error))); } } // deletes data from add_ons table + modules + menu + menuchild1 + puts install.txt, returns json status,message protected function unregister_addon($addon_controller_name="") { if($this->session->userdata('user_type') != 'Admin') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($this->is_demo == '1') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($addon_controller_name=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller has not been provided.'))); exit(); } $path=APPPATH."modules/".strtolower($addon_controller_name)."/controllers/".$addon_controller_name.".php"; // path of addon controller $install_txt_path=APPPATH."modules/".strtolower($addon_controller_name)."/install.txt"; // path of install.txt if(!file_exists($path)) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller not found.'))); exit(); } $addon_data=$this->get_addon_data($path); if(!isset($addon_data['unique_name']) || $addon_data['unique_name']=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on unique name has not been provided.'))); exit(); } try { $this->db->trans_start(); // delete addon table entry $get_addon=$this->basic->get_data("add_ons",array("where"=>array("unique_name"=>$addon_data['unique_name']))); $add_ons_id=isset($get_addon[0]['id']) ? $get_addon[0]['id'] : 0; if($add_ons_id>0) $this->basic->delete_data("add_ons",array("id"=>$add_ons_id)); // delete modules table entry if($add_ons_id>0) $this->basic->delete_data("modules",array("add_ons_id"=>$add_ons_id)); // delete menu+menu_child1 table entry $get_menu=array(); if($add_ons_id>0) $get_menu=$this->basic->get_data("menu",array("where"=>array("add_ons_id"=>$add_ons_id))); foreach($get_menu as $key => $value) { $parent_id=isset($value['id']) ? $value['id'] : 0; if($parent_id>0) { $this->basic->delete_data("menu",array("id"=>$parent_id)); $this->basic->delete_data("menu_child_1",array("parent_id"=>$parent_id)); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Database error. Something went wrong.'))); exit(); } else { if(!file_exists($install_txt_path)) // putting install.txt fopen($install_txt_path, "w"); echo json_encode(array('status'=>'1','message'=>$this->lang->line('Add-on has been deactivated successfully.'))); } } catch(Exception $e) { $error = $e->getMessage(); echo json_encode(array('status'=>'0','message'=>$this->lang->line($error))); } } // deletes data from add_ons table + modules + menu + menuchild1 + custom sql + folder, returns json status,message protected function delete_addon($addon_controller_name="",$sql=array()) { if($this->session->userdata('user_type') != 'Admin') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($this->is_demo == '1') { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Access Forbidden'))); exit(); } if($addon_controller_name=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller has not been provided.'))); exit(); } $path=APPPATH."modules/".strtolower($addon_controller_name)."/controllers/".$addon_controller_name.".php"; // path of addon controller $addon_path=APPPATH."modules/".strtolower($addon_controller_name); // path of module folder if(!file_exists($path)) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on controller not found.'))); exit(); } $addon_data=$this->get_addon_data($path); if(!isset($addon_data['unique_name']) || $addon_data['unique_name']=="") { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Add-on unique name has not been provided.'))); exit(); } try { $this->db->trans_start(); // delete addon table entry $get_addon=$this->basic->get_data("add_ons",array("where"=>array("unique_name"=>$addon_data['unique_name']))); $add_ons_id=isset($get_addon[0]['id']) ? $get_addon[0]['id'] : 0; $purchase_code=isset($get_addon[0]['purchase_code']) ? $get_addon[0]['purchase_code'] : ''; if($add_ons_id>0) $this->basic->delete_data("add_ons",array("id"=>$add_ons_id)); // delete modules table entry if($add_ons_id>0) $this->basic->delete_data("modules",array("add_ons_id"=>$add_ons_id)); // delete menu+menu_child1 table entry $get_menu=array(); if($add_ons_id>0) $get_menu=$this->basic->get_data("menu",array("where"=>array("add_ons_id"=>$add_ons_id))); foreach($get_menu as $key => $value) { $parent_id=isset($value['id']) ? $value['id'] : 0; if($parent_id>0) { $this->basic->delete_data("menu",array("id"=>$parent_id)); $this->basic->delete_data("menu_child_1",array("parent_id"=>$parent_id)); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo json_encode(array('status'=>'0','message'=>$this->lang->line('Database error. Something went wrong.'))); exit(); } else { //--------Custom SQL------------ $this->db->db_debug = FALSE; //disable debugging for queries if(is_array($sql)) foreach ($sql as $key => $query) { try { $this->db->query($query); } catch(Exception $e) { } } //--------Custom SQL------------ $this->delete_directory($addon_path); if($purchase_code!="") { $item_name=strtolower($addon_controller_name); $only_domain=get_domain_only(site_url()); $url = "http://xeroneit.net/development/envato_license_activation/delete_purchase_code.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat-{$item_name}"; $credentials = $this->get_general_content_with_checking($url); $response = json_decode($credentials,true); if(isset($response['error'])) { $url = "https://mostofa.club/development/envato_license_activation/delete_purchase_code.php?purchase_code={$purchase_code}&domain={$only_domain}&item_name=XeroChat-{$item_name}"; $this->get_general_content_with_checking($url); } } echo json_encode(array('status'=>'1','message'=>$this->lang->line('add-on has been deleted successfully.'))); } } catch(Exception $e) { $error = $e->getMessage(); echo json_encode(array('status'=>'0','message'=>$this->lang->line($error))); } } // check a addon or module id is usable or already used, returns boolean, true if unique protected function is_unique_check($type='addon_check',$value="") // type=addon_check/module_check | $value=column.value { $is_unique=false; if($type=="addon_check") $is_unique=$this->basic->is_unique("add_ons",array("unique_name"=>$value),"id"); if($type=="module_check") $is_unique=$this->basic->is_unique("modules",array("id"=>$value),"id"); return $is_unique; } //========================= ADDON FUNCTIONS ====================== //================================================================ protected function delete_full_access() { if($this->session->userdata('user_type') == 'Admin') exit(); if(!isset($_POST)) exit(); $user_id=$this->session->userdata('user_id'); $this->db->trans_start(); $sql = "show tables;"; $a = $this->basic->execute_query($sql); foreach($a as $value) { foreach($value as $table_name) { if($table_name == 'users') $this->basic->delete_data('users',array('id'=>$user_id)); if($this->db->field_exists('user_id',$table_name)) $this->basic->delete_data($table_name,array('user_id'=>$user_id)); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo $this->lang->line('Something went wrong, please try again.'); } else { $this->session->sess_destroy(); echo 'success'; } } protected function scanAll($myDir){ $dirTree = array(); $di = new RecursiveDirectoryIterator($myDir,RecursiveDirectoryIterator::SKIP_DOTS); foreach (new RecursiveIteratorIterator($di) as $filename) { $dir = str_replace($myDir, '', dirname($filename)); //$dir = str_replace('/', '>', substr($dir,1)); $org_dir=str_replace("\\", "/", $dir); if($org_dir) $file_path = $org_dir. "/". basename($filename); else $file_path = basename($filename); $dirTree[] = $file_path; } return $dirTree; } // ========================================================================================= //===============================MESSENGER BOT FUNCTIONS==================================== /******88*WEBHOOK,COMMON BOT ADDON FUNCTIONS,PUBLIC CURL CALLS, CRON SUB FUNCTIONS**88******/ public function central_webhook_callback() { $url=""; $challenge = $this->input->get_post('hub_challenge'); $verify_token =$this->input->get_post('hub_verify_token'); if($this->config->item("central_webhook_verify_token") != '') { if($verify_token === $this->config->item("central_webhook_verify_token")) { echo $challenge; die(); } } $response_raw=file_get_contents("php://input"); if(!isset($response_raw) || $response_raw=='') exit; $json_response=array("response_raw"=>$response_raw); $response = json_decode($response_raw, true); if(isset($response['entry'][0]['messaging'])) { $url=base_url()."messenger_bot/webhook_callback_main"; if(isset($response['entry']['0']['messaging'][0]['read'])) exit; } else if(isset($response['entry'][0]['changes'][0]['value']['item']) && $response['entry'][0]['changes'][0]['value']['item'] == 'comment') { $url=base_url()."comment_automation/webhook_callback_main"; $commenter_id = isset($response['entry'][0]['changes'][0]['value']['sender_id']) ? $response['entry'][0]['changes'][0]['value']['sender_id'] : $response['entry'][0]['changes'][0]['value']['from']['id']; $page_id = $response['entry'][0]['id']; //If activity by Page it self, then exit if($page_id==$commenter_id) exit; // 2nd level relpy is turned off $post_id = isset($response['entry'][0]['changes'][0]['value']['parent_id']) ? $response['entry'][0]['changes'][0]['value']['parent_id']:""; $parent_id_page_id_array=explode("_", $post_id); $parent_id_page_id=isset($parent_id_page_id_array[0]) ? $parent_id_page_id_array[0] :""; if($page_id!=$parent_id_page_id){ // From 2nd reply Comment. exit; } //If already replied that comment, then exit $comment_id = isset($response['entry'][0]['changes'][0]['value']['comment_id']) ? $response['entry'][0]['changes'][0]['value']['comment_id']:""; $already_replied_comment_id = $this->basic->get_data('facebook_ex_autoreply_report',array('where'=>array('comment_id'=>$comment_id))); if(!empty($already_replied_comment_id)) exit; } else if(isset($response['entry'][0]['changes'][0]['value']['item']) && $response['entry'][0]['changes'][0]['value']['item'] == 'reaction') { exit; } else if(isset($response['entry'][0]['changes'][0]['value']['item']) && $response['entry'][0]['changes'][0]['value']['item'] == 'photo') { if(isset($response['entry'][0]['changes'][0]['value']['verb']) && $response['entry'][0]['changes'][0]['value']['verb'] == 'edited') exit; $url=base_url()."comment_automation/webhook_callback_main"; } else if(isset($response['entry'][0]['changes'][0]['field']) && $response['entry'][0]['changes'][0]['field'] == 'feed') $url=base_url()."comment_automation/webhook_callback_main"; else if(isset($response['entry'][0]['changes'][0]['value']['item']) && $response['entry'][0]['changes'][0]['value']['item'] == 'status') $url=base_url()."comment_automation/webhook_callback_main"; else if(isset($response['entry'][0]['changes'][0]['value']['item']) && $response['entry'][0]['changes'][0]['value']['item'] == 'share') $url=base_url()."comment_automation/webhook_callback_main"; else if(isset($response['entry'][0]['changes'][0]['field']) && $response['entry'][0]['changes'][0]['field'] == 'mentions') $url=base_url()."instagram_reply/webhook_callback"; else if(isset($response['entry'][0]['changes'][0]['field']) && $response['entry'][0]['changes'][0]['field'] == 'comments') $url=base_url()."instagram_reply/webhook_callback"; if($url=='') exit; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$json_response); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $reply_response=curl_exec($ch); } public function send_reply_ez($access_token='',$reply='') { $url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token"; $ch = curl_init(); $headers = array("Content-type: application/json"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$reply); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); $result=json_decode($st,TRUE); return $result; } protected function subscriber_info($access_token='',$sender_id='',$social_media_type="fb") { if($social_media_type=='fb') $url = "https://graph.facebook.com/v2.6/$sender_id?access_token=$access_token&fields=id,first_name,last_name,name,profile_pic,locale,timezone,gender"; else $url = "https://graph.facebook.com/v2.6/$sender_id?access_token=$access_token&fields=id,name,profile_pic"; $result=$this->subscriber_info_curl_call($url); if(isset($result['error']) && $result['error']['code']==10 && $result['error']['error_subcode']==2018336){ $result=array(); $url = "https://graph.facebook.com/v2.6/$sender_id?access_token=$access_token&fields=id,first_name,last_name,name,locale,timezone,gender"; $result=$this->subscriber_info_curl_call($url); $result['profile_pic']=""; } return $result; } protected function subscriber_info_curl_call($url){ $ch = curl_init(); $headers = array("Content-type: application/json"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); return $result=json_decode($st,TRUE); } protected function send_reply($access_token='',$reply='') { $url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token"; $ch = curl_init(); $headers = array("Content-type: application/json"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$reply); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); $result=json_decode($st,TRUE); return $result; } public function send_reply_curl_call() { ignore_user_abort(TRUE); $access_token=$_POST['access_token']; $reply=$_POST['reply']; $url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token"; $ch = curl_init(); $headers = array("Content-type: application/json"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$reply); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); $result=json_decode($st,TRUE); return $result; } //DEPRECATED FUNCTION FOR QUICK BROADCAST public function unsubscribe_webhook_call() { $psid=$this->input->post('psid'); $fb_page_id=$this->input->post('fb_page_id'); $pageinfo=$this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("page_id"=>$fb_page_id,"bot_enabled"=>"1"))); $page_auto_id=isset($pageinfo[0]["id"])?$pageinfo[0]["id"]:""; $page_access_token=isset($pageinfo[0]["page_access_token"])?$pageinfo[0]["page_access_token"]:""; $label_info=$this->basic->get_data("messenger_bot_broadcast_contact_group",array("where"=>array("page_id"=>$page_auto_id,"unsubscribe"=>"1"))); $label_auto_id=isset($label_info[0]['id'])?$label_info[0]['id']:0; $label_id=isset($label_info[0]['label_id'])?$label_info[0]['label_id']:""; // $this->load->library('fb_rx_login'); // $response= $this->fb_rx_login->assign_label($page_access_token,$psid,$label_id); $subscriberdata=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$psid,"page_id"=>$fb_page_id))); $contact_group_id=isset($subscriberdata[0]["contact_group_id"])?$subscriberdata[0]["contact_group_id"]:""; $explode=explode(',', $contact_group_id); array_push($explode, $label_auto_id); $new=array_unique($explode); $contact_group_id=implode(',', $new); $contact_group_id=trim($contact_group_id,','); $unsubscribe_time=date('Y-m-d H:i:s'); $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("contact_group_id"=>$contact_group_id,"permission"=>"0","unsubscribed_at"=>$unsubscribe_time)); /** Adjust total count of subscriber & unsubscriber **/ $sql = "SELECT count(id) as permission_count FROM `messenger_bot_subscriber` WHERE page_table_id='$page_auto_id' AND permission='1'"; $count_data = $this->db->query($sql)->row_array(); $sql2 = "SELECT count(id) as permission_count FROM `messenger_bot_subscriber` WHERE page_table_id='$page_auto_id' AND permission='0'"; $count_data2 = $this->db->query($sql2)->row_array(); // how many are subscribed and how many are unsubscribed $subscribed = isset($count_data["permission_count"]) ? $count_data["permission_count"] : 0; $unsubscribed = isset($count_data2["permission_count"]) ? $count_data2["permission_count"] : 0; $current_lead_count=$subscribed+$unsubscribed; $this->basic->update_data("facebook_rx_fb_page_info",array("id"=>$page_auto_id),array("current_subscribed_lead_count"=>$subscribed,"current_unsubscribed_lead_count"=>$unsubscribed)); } public function resubscribe_webhook_call() { $psid=$this->input->post('psid'); $fb_page_id=$this->input->post('fb_page_id'); $pageinfo=$this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("page_id"=>$fb_page_id,"bot_enabled"=>"1"))); $page_auto_id=isset($pageinfo[0]["id"])?$pageinfo[0]["id"]:""; $page_access_token=isset($pageinfo[0]["page_access_token"])?$pageinfo[0]["page_access_token"]:""; $label_info=$this->basic->get_data("messenger_bot_broadcast_contact_group",array("where"=>array("page_id"=>$page_auto_id,"unsubscribe"=>"1"))); $label_auto_id=isset($label_info[0]['id'])?$label_info[0]['id']:0; $label_id=isset($label_info[0]['label_id'])?$label_info[0]['label_id']:""; // $this->load->library('fb_rx_login'); // $response= $this->fb_rx_login->deassign_label($page_access_token,$psid,$label_id); $subscriberdata=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$psid,"page_id"=>$fb_page_id))); $contact_group_id=isset($subscriberdata[0]["contact_group_id"])?$subscriberdata[0]["contact_group_id"]:""; $explode=explode(',', $contact_group_id); foreach(array_keys($explode, $label_auto_id) as $key) { unset($explode[$key]); } $new=array_unique($explode); $contact_group_id=implode(',', $new); $contact_group_id=trim($contact_group_id,','); $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("contact_group_id"=>$contact_group_id,"permission"=>"1")); /** Adjust total count of subscriber & unsubscriber **/ $sql = "SELECT count(id) as permission_count FROM `messenger_bot_subscriber` WHERE page_table_id='$page_auto_id' AND permission='1'"; $count_data = $this->db->query($sql)->row_array(); $sql2 = "SELECT count(id) as permission_count FROM `messenger_bot_subscriber` WHERE page_table_id='$page_auto_id' AND permission='0'"; $count_data2 = $this->db->query($sql2)->row_array(); // how many are subscribed and how many are unsubscribed $subscribed = isset($count_data["permission_count"]) ? $count_data["permission_count"] : 0; $unsubscribed = isset($count_data2["permission_count"]) ? $count_data2["permission_count"] : 0; $current_lead_count=$subscribed+$unsubscribed; $this->basic->update_data("facebook_rx_fb_page_info",array("id"=>$page_auto_id),array("current_subscribed_lead_count"=>$subscribed,"current_unsubscribed_lead_count"=>$unsubscribed)); } public function multiple_assign_label($psid,$fb_page_id,$label_auto_ids,$social_media_type="fb") { $label_auto_ids=explode(",",$label_auto_ids); // $pageinfo=$this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("page_id"=>$fb_page_id,"bot_enabled"=>"1"))); // $page_auto_id=isset($pageinfo[0]["id"])?$pageinfo[0]["id"]:""; // $page_access_token=isset($pageinfo[0]["page_access_token"])?$pageinfo[0]["page_access_token"]:""; $label_info=$this->basic->get_data("messenger_bot_broadcast_contact_group",array("where_in"=>array("id"=>$label_auto_ids))); //$this->load->library('fb_rx_login'); foreach($label_info as $value) { $label_auto_id=isset($value['id'])?$value['id']:0; $label_id=isset($value['label_id'])?$value['label_id']:""; //if($social_media_type=="fb") //$response= $this->fb_rx_login->assign_label($page_access_token,$psid,$label_id); $subscriberdata=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$psid,"page_id"=>$fb_page_id))); $contact_group_id=isset($subscriberdata[0]["contact_group_id"])?$subscriberdata[0]["contact_group_id"]:""; $explode=explode(',', $contact_group_id); array_push($explode, $label_auto_id); $new=array_unique($explode); $contact_group_id=implode(',', $new); $contact_group_id=trim($contact_group_id,','); $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("contact_group_id"=>$contact_group_id)); } } public function assign_label_webhook_call() { $psid=$this->input->post('psid'); $fb_page_id=$this->input->post('fb_page_id'); $label_auto_ids=$this->input->post('label_auto_ids'); $label_auto_ids=explode(",",$label_auto_ids); // $pageinfo=$this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("page_id"=>$fb_page_id,"bot_enabled"=>"1"))); // $page_auto_id=isset($pageinfo[0]["id"])?$pageinfo[0]["id"]:""; // $page_access_token=isset($pageinfo[0]["page_access_token"])?$pageinfo[0]["page_access_token"]:""; $label_info=$this->basic->get_data("messenger_bot_broadcast_contact_group",array("where_in"=>array("id"=>$label_auto_ids))); //$this->load->library('fb_rx_login'); foreach($label_info as $value) { $label_auto_id=isset($value['id'])?$value['id']:0; $label_id=isset($value['label_id'])?$value['label_id']:""; //$response= $this->fb_rx_login->assign_label($page_access_token,$psid,$label_id); $subscriberdata=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$psid,"page_id"=>$fb_page_id))); $contact_group_id=isset($subscriberdata[0]["contact_group_id"])?$subscriberdata[0]["contact_group_id"]:""; $explode=explode(',', $contact_group_id); array_push($explode, $label_auto_id); $new=array_unique($explode); $contact_group_id=implode(',', $new); $contact_group_id=trim($contact_group_id,','); $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("contact_group_id"=>$contact_group_id)); } } /**Sender action added 19.03.2018 by Konok**/ public function sender_action($sender_id,$action_type,$post_access_token='') { $url = "https://graph.facebook.com/v2.6/me/messages?access_token={$post_access_token}"; $post_data_array['recipient']['id']=$sender_id; $post_data_array['sender_action']=$action_type; $post_data=json_encode($post_data_array); $ch = curl_init(); $headers = array("Content-type: application/json"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data); // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); $result=json_decode($st,TRUE); return $result; } // protected function unsubscribe_webhook_call($psid,$fb_page_id) // { // $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("permission"=>"0")); // } // protected function resubscribe_webhook_call($psid,$fb_page_id) // { // $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("permission"=>"1")); // } // protected function assign_label_webhook_call($psid,$fb_page_id,$label_auto_ids) // { // $label_auto_ids=explode(",",$label_auto_ids); // $subscriberdata=$this->basic->get_data("messenger_bot_subscriber",array("where"=>array("subscribe_id"=>$psid,"page_id"=>$fb_page_id))); // $contact_group_id=isset($subscriberdata[0]["contact_group_id"])?$subscriberdata[0]["contact_group_id"]:""; // $explode=explode(',', $contact_group_id); // $new_contact_group = array_add($label_auto_ids,$explode); // $new=array_unique($new_contact_group); // $contact_group_id=implode(',', $new); // $contact_group_id=trim($contact_group_id,','); // $this->basic->update_data("messenger_bot_subscriber",array("subscribe_id"=>$psid,"page_id"=>$fb_page_id),array("contact_group_id"=>$contact_group_id)); // } // admin account import public function redirect_rx_link() { if ($this->session->userdata('logged_in')!= 1) exit(); $id=$this->session->userdata("fb_rx_login_database_id"); $redirect_url = base_url()."home/redirect_rx_link/"; $this->load->library('fb_rx_login'); $user_info = $this->fb_rx_login->login_callback($redirect_url); if(isset($user_info['status']) && $user_info['status'] == '0') { $data['error'] = 1; $data['message'] = $this->lang->line("Something went wrong")." : ".$user_info['message']; $data['body'] = "facebook_rx/admin_login"; $this->_viewcontroller($data); } else { $access_token=$user_info['access_token_set']; $where = array('id'=>$id); $update_data = array('user_access_token'=>$access_token); if($this->basic->update_data('facebook_rx_config',$where,$update_data)) { $data = array( 'user_id' => $this->user_id, 'facebook_rx_config_id' => $id, 'access_token' => $access_token, 'name' => $user_info['name'], 'email' => isset($user_info['email']) ? $user_info['email'] : "", 'fb_id' => $user_info['id'], 'add_date' => date('Y-m-d') ); $where=array(); $where['where'] = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']); $exist_or_not = $this->basic->get_data('facebook_rx_fb_user_info',$where); if(empty($exist_or_not)) { $this->basic->insert_data('facebook_rx_fb_user_info',$data); $facebook_table_id = $this->db->insert_id(); } else { $facebook_table_id = $exist_or_not[0]['id']; $where = array('user_id'=>$this->user_id,'fb_id'=>$user_info['id']); $this->basic->update_data('facebook_rx_fb_user_info',$where,$data); } $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_table_id); $page_list = $this->fb_rx_login->get_page_list($access_token); if(isset($page_list['error']) && $page_list['error'] == '1') { $data['error'] = 1; $data['message'] = $this->lang->line("Something went wrong")." : ".$page_list['message']; $data['body'] = "facebook_rx/admin_login"; $this->_viewcontroller($data); exit(); } if(!empty($page_list)) { foreach($page_list as $page) { $user_id = $this->user_id; $page_id = $page['id']; $page_cover = ''; if(isset($page['cover']['source'])) $page_cover = $page['cover']['source']; $page_profile = ''; if(isset($page['picture']['url'])) $page_profile = $page['picture']['url']; $page_name = ''; if(isset($page['name'])) $page_name = $page['name']; $page_username = ''; if(isset($page['username'])) $page_username = $page['username']; $page_access_token = ''; if(isset($page['access_token'])) $page_access_token = $page['access_token']; $page_email = ''; if(isset($page['emails'][0])) $page_email = $page['emails'][0]; $data = array( 'user_id' => $user_id, 'facebook_rx_fb_user_info_id' => $facebook_table_id, 'page_id' => $page_id, 'page_cover' => $page_cover, 'page_profile' => $page_profile, 'page_name' => $page_name, 'username' => $page_username, 'page_access_token' => $page_access_token, 'page_email' => $page_email, 'add_date' => date('Y-m-d') ); // instagram section $instagram_account_exist_or_not = ''; if($this->config->item('instagram_reply_enable_disable') == '1') $instagram_account_exist_or_not = $this->fb_rx_login->instagram_account_check_by_id($page['id'], $access_token); if ($instagram_account_exist_or_not != "") { $instagram_account_info = $this->fb_rx_login->instagram_account_info($instagram_account_exist_or_not, $access_token); $data['has_instagram'] = '1'; $data['instagram_business_account_id'] = $instagram_account_exist_or_not; $data['insta_username'] = isset($instagram_account_info['username']) ? $instagram_account_info['username'] : ""; $data['insta_followers_count'] = isset($instagram_account_info['followers_count']) ? $instagram_account_info['followers_count'] : ""; $data['insta_media_count'] = isset($instagram_account_info['media_count']) ? $instagram_account_info['media_count'] : ""; $data['insta_website'] = isset($instagram_account_info['website']) ? $instagram_account_info['website'] : ""; $data['insta_biography'] = isset($instagram_account_info['biography']) ? $instagram_account_info['biography'] : ""; } // end of instagram section $where=array(); $where['where'] = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']); $exist_or_not = $this->basic->get_data('facebook_rx_fb_page_info',$where); if(empty($exist_or_not)) { $this->basic->insert_data('facebook_rx_fb_page_info',$data); } else { $where = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'page_id'=>$page['id']); $this->basic->update_data('facebook_rx_fb_page_info',$where,$data); } } } $group_list = $this->fb_rx_login->get_group_list($access_token); if(!empty($group_list)) { foreach($group_list as $group) { $user_id = $this->user_id; $group_access_token = $access_token; // group uses user access token $group_id = $group['id']; $group_cover = ''; if(isset($group['cover']['source'])) $group_cover = $group['cover']['source']; $group_profile = ''; if(isset($group['picture']['url'])) $group_profile = $group['picture']['url']; $group_name = ''; if(isset($group['name'])) $group_name = $group['name']; $data = array( 'user_id' => $user_id, 'facebook_rx_fb_user_info_id' => $facebook_table_id, 'group_id' => $group_id, 'group_cover' => $group_cover, 'group_profile' => $group_profile, 'group_name' => $group_name, 'group_access_token' => $group_access_token, 'add_date' => date('Y-m-d') ); $where=array(); $where['where'] = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'group_id'=>$group['id']); $exist_or_not = $this->basic->get_data('facebook_rx_fb_group_info',$where); if(empty($exist_or_not)) { $this->basic->insert_data('facebook_rx_fb_group_info',$data); } else { $where = array('facebook_rx_fb_user_info_id'=>$facebook_table_id,'group_id'=>$page['id']); $this->basic->update_data('facebook_rx_fb_group_info',$where,$data); } } } $this->session->set_flashdata('success_message', 1); redirect('social_accounts/index','location'); exit(); } else { $data['error'] = 1; $data['message'] = $this->lang->line("Something went wrong, please try again."); $data['body'] = "facebook_rx/admin_login"; $this->_viewcontroller($data); } } } //================MESSENGER BOT FUNCTIONS====================== // ============================================================ protected function ajax_check() { if(!$this->input->is_ajax_request()) exit(); } // CSRF token check from during Form Submit protected function csrf_token_check() { $csrf_token_form=$this->input->post('csrf_token',TRUE); $csrf_token_session= $this->session->userdata('csrf_token_session'); $ajax_resposne = json_encode(array("status"=>"0","message"=>$this->lang->line("CSRF Token Mismatch!"),"error"=>$this->lang->line("CSRF Token Mismatch!"))); $is_error = false; if(is_null($csrf_token_form) || is_null($csrf_token_session)) $is_error = true; else if(!hash_equals($csrf_token_form,$csrf_token_session)) $is_error = true; if($is_error) { if($this->input->is_ajax_request()) echo $ajax_resposne; else redirect('home/error_csrf','location'); exit(); } return true; } public function error_csrf() { $this->load->view('page/csrf'); } protected function set_facebook_config_session($user_id) { $user_id = $user_id; // for getting usable facebook api (facebook live app) $facebook_rx_config_id=0; $fb_info=$this->basic->get_data("facebook_rx_fb_user_info",array("where"=>array("user_id"=>$user_id))); if($this->config->item("backup_mode")==0) // users will use admins app { if(isset($fb_info[0]['facebook_rx_config_id'])) $facebook_rx_config_id=$fb_info[0]['facebook_rx_config_id']; else { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','use_by'=>'everyone','developer_access'=>'0')),$select='',$join='',$limit='',$start=NULL,$order_by='rand()'); if(isset($fb_info_admin[0]['id'])) $facebook_rx_config_id = $fb_info_admin[0]['id']; } $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } else // users will use own app { $fb_info_admin=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>'1','user_id'=>$user_id,'developer_access'=>'0')),$select=''); if(isset($fb_info_admin[0]['id'])) { $facebook_rx_config_id = $fb_info_admin[0]['id']; $this->session->set_userdata("fb_rx_login_database_id",$facebook_rx_config_id); } if(isset($fb_info[0])) $facebook_rx_fb_user_info = $fb_info[0]["id"]; else $facebook_rx_fb_user_info = 0; $this->session->set_userdata("facebook_rx_fb_user_info",$facebook_rx_fb_user_info); // this is used in account fb switchig } // for getting usable facebook api } protected function set_google_config_session($user_id) { $user_id = $user_id; // GMB add-on data if($this->addon_exist("gmb")) { $gmb_user_info = $this->basic->get_data('google_user_account',['where'=>['user_id'=>$user_id]],['id']); if(!empty($gmb_user_info)) $this->session->set_userdata('google_mybusiness_user_table_id',$gmb_user_info[0]['id']); } } protected function botinboxer_exist() { if($this->session->userdata('user_type') == 'Admin') return true; if($this->session->userdata('user_type') == 'Member' && in_array(199,$this->module_access)) return true; return false; } protected function broadcaster_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>30))) return true; if($this->session->userdata('user_type') == 'Member' && in_array(211,$this->module_access)) return true; return false; } protected function drip_campaigner_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>30))) return true; if($this->session->userdata('user_type') == 'Member' && in_array(219,$this->module_access)) return true; return false; } protected function sms_email_drip_campaigner_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>40))) return true; if($this->session->userdata('user_type') == 'Member' && (in_array(270,$this->module_access) || in_array(271,$this->module_access) )) return true; return false; } protected function messenger_bot_import_export_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>31))) return true; if($this->session->userdata('user_type') == 'Member' && in_array(257,$this->module_access)) return true; return false; } protected function messenger_bot_analytics_exist() { if($this->session->userdata('user_type') == 'Admin') return true; if($this->session->userdata('user_type') == 'Member' && in_array(260,$this->module_access)) return true; return false; } protected function engagement_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>30))) return true; if($this->session->userdata('user_type') == 'Member' && count(array_intersect($this->module_access, array(213,214,215,217))) > 0 ) return true; return false; } protected function ultrapost_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->db->table_exists('facebook_rx_auto_post')) return true; if($this->session->userdata('user_type') == 'Member' && in_array(223,$this->module_access)) return true; return false; } protected function webview_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>31))) return true; if($this->session->userdata('user_type') == 'Member' && in_array(261,$this->module_access)) return true; return false; } protected function ecommerce_exist() { if($this->session->userdata('user_type') == 'Admin') return true; if($this->session->userdata('user_type') == 'Member' && in_array(268,$this->module_access)) return true; return false; } protected function auto_social_sharing_exist() { if($this->session->userdata('user_type') == 'Admin' && $this->basic->is_exist("add_ons",array("project_id"=>39))) return true; if($this->session->userdata('user_type') == 'Member' && in_array(269,$this->module_access)) return true; return false; } protected function group_posting_exist() { if($this->basic->is_exist("add_ons",array("project_id"=>32))) return true; return false; } protected function addon_exist($unique_name="") { if($this->basic->is_exist("add_ons",array("unique_name"=>$unique_name))) return true; return false; } public function thirdparty_webhook_trigger($page_id="",$subscriber_id="",$trigger='trigger_email',$postback_id="",$form_canonical_id="",$form_data=array()) { if($trigger=='trigger_postback') $trigger="trigger_postback_".$postback_id; else if($trigger=='trigger_webview') $trigger="trigger_webview_".$form_canonical_id; else if ($trigger=='trigger_userinput') $trigger="trigger_userinput_".$form_canonical_id; if(isset($this->user_id) && $this->user_id!="") $where_simple['messenger_bot_thirdparty_webhook.user_id'] = $this->user_id; $where_simple['messenger_bot_thirdparty_webhook.page_id'] = $page_id; $where_simple['messenger_bot_thirdparty_webhook_trigger.trigger_option'] = $trigger; $where=array('where'=>$where_simple); /**Get all connector webhook information**/ $join = array('messenger_bot_thirdparty_webhook_trigger'=>" messenger_bot_thirdparty_webhook.id=messenger_bot_thirdparty_webhook_trigger.webhook_id,left"); $webhook_connector_info=$this->basic->get_data('messenger_bot_thirdparty_webhook', $where, $select='', $join, $limit='', $start=''); if(empty($webhook_connector_info)) return false; /** Get subscriber information **/ $where_simple=array(); $where_simple['messenger_bot_subscriber.subscribe_id'] =$subscriber_id ; $where_simple['messenger_bot_subscriber.page_id'] = "$page_id"; $where=array('where'=>$where_simple); $subscriber_info=$this->basic->get_data('messenger_bot_subscriber', $where, $select='', $join='', $limit='', $start=''); /**Get subscriber Labels name from labels id***/ $label_ids = $subscriber_info_rearrange['contact_group_id']=isset($subscriber_info[0]['contact_group_id']) ? $subscriber_info[0]['contact_group_id']:""; $label_ids_array = explode(',',$label_ids); $label_ids_array=array_filter($label_ids_array); $labels_name=""; if(!empty($label_ids_array)){ $where=array("where_in"=>array("id"=>$label_ids_array)); $label_info = $this->basic->get_data("messenger_bot_broadcast_contact_group",$where); foreach($label_info as $value) { $labels_name.=",".$value['group_name']; } } $labels_name =trim($labels_name,","); foreach ($webhook_connector_info as $webhook_value) { $webhook_url = isset($webhook_value['webhook_url']) ? $webhook_value['webhook_url']:""; $webhook_id=isset($webhook_value['webhook_id']) ? $webhook_value['webhook_id']:""; $post_variable = isset($webhook_value['variable_post']) ? $webhook_value['variable_post']:""; $post_variable= explode(',',$post_variable); $post_variable=array_filter($post_variable); /**Making the variable for post/send ***/ $post_info=array(); foreach ($post_variable as $variable_info) { if($variable_info=='psid') $post_info[$variable_info]= isset($subscriber_info[0]['subscribe_id']) ? $subscriber_info[0]['subscribe_id']:""; else if ($variable_info=='labels') $post_info[$variable_info]= $labels_name; else if($variable_info=='page_name') $post_info[$variable_info]= isset($webhook_connector_info[0]['page_name']) ? $webhook_connector_info[0]['page_name']:""; else if($variable_info=='postbackid') $post_info[$variable_info]= $postback_id; else if($variable_info =='formdata'){ foreach ($form_data as $key => $value) { $post_info[$key]=$value; } } else if($variable_info=='user_input_flow_campaign'){ $post_info["user_input_data"]=$form_data; } else $post_info[$variable_info] = isset($subscriber_info[0][$variable_info]) ? $subscriber_info[0][$variable_info]:""; } /*** Send/Post Information to webhook url ***/ $post_info=json_encode($post_info); $curl_response=$this->curl_send_data($webhook_url,$post_info); $curl_http_code= $curl_response['http_code']; $curl_error= $curl_response['curl_error']; /***Insert into Activity table**/ $insert_data=array(); $insert_data['http_code'] = $curl_http_code; $insert_data['curl_error'] = $curl_error; $insert_data['webhook_id'] = $webhook_id; $insert_data['post_time'] = date('Y-m-d H:i:s'); $insert_data['post_data'] = $post_info; $this->basic->insert_data('messenger_bot_thirdparty_webhook_activity',$insert_data); /**update messenger_bot_thirdparty_webhook table for last_trigger_time **/ $update_data_last_trigger['last_trigger_time'] = $insert_data['post_time']; $this->basic->update_data("messenger_bot_thirdparty_webhook",array('id'=>$webhook_id),$update_data_last_trigger); } } protected function curl_send_data($webhook_url,$post_info){ $ch = curl_init(); $headers = array('Accept: application/json', 'Content-Type: application/json'); curl_setopt($ch, CURLOPT_URL, $webhook_url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post_info); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); $st=curl_exec($ch); $curl_information = curl_getinfo($ch); $curl_error=""; if($curl_information['http_code']!='200'){ $curl_error = curl_error($ch); } $response['http_code']=$curl_information['http_code']; $response['curl_error']=$curl_error; return $response; } public function assign_drip_messaging_id($drip_type="default",$check_box_plugin_id="0",$PAGE_AUTO_ID,$subscriber_id,$drip_campaign_id="") { $date_time=date("Y-m-d H:i:s"); $engagement_table_id= $check_box_plugin_id; if($drip_campaign_id!=""){ // Means Campaign id is passed directly, no need to get it from engagement table. $where['where']['id'] = $drip_campaign_id; if($PAGE_AUTO_ID!='0' && $PAGE_AUTO_ID!="") $where['where']['page_id'] = $PAGE_AUTO_ID; } else{ // if $drip_campaign_id isn't set , that means, we need to check if the messenger enhancers add-on is avaialble or not. if(!$this->addon_exist("messenger_bot_enhancers")) return true; $where=array("where"=>array("engagement_table_id"=>$engagement_table_id,"drip_type"=>$drip_type,"page_id"=>$PAGE_AUTO_ID)); } $drip_messaging_campaign_info= $this->basic->get_data("messenger_bot_drip_campaign",$where); $drip_campaign_id= isset($drip_messaging_campaign_info[0]['id']) ? $drip_messaging_campaign_info[0]['id']: ""; $user_id= isset($drip_messaging_campaign_info[0]['user_id']) ? $drip_messaging_campaign_info[0]['user_id']: ""; if($drip_campaign_id!=""){ $sql="INSERT IGNORE INTO messenger_bot_drip_campaign_assign(user_id,page_table_id,subscribe_id,messenger_bot_drip_campaign_id,drip_type,messenger_bot_drip_initial_date) VALUES('$user_id','$PAGE_AUTO_ID','$subscriber_id','$drip_campaign_id','$drip_type','$date_time');"; $this->basic->execute_complex_query($sql); } } // page and account delete section public function table_names_array() { $tables = array ( 0 => array ( 'table_name' => 'auto_comment_reply_info', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 1 => array ( 'table_name' => 'ultrapost_auto_reply', 'column_name' => 'page_ids', 'module_id' => '' ), 2 => array ( 'table_name' => 'autoposting', 'column_name' => 'page_ids', 'module_id' => '', 'comma_separated' => 'yes' ), 3 => array ( 'table_name' => 'facebook_ex_autoreply', 'column_name' => 'page_info_table_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'facebook_ex_autoreply_report', 'dependent_table_column' =>'autoreply_table_id' ), 4 => array ( 'table_name' => 'facebook_ex_conversation_campaign', 'column_name' => 'page_id', 'module_id' => '' ), 5 => array ( 'table_name' => 'facebook_ex_conversation_campaign_send', 'column_name' => 'page_id', 'module_id' => '' ), 6 => array ( 'table_name' => 'facebook_page_insight_page_list', 'column_name' => 'page_id', 'module_id' => '' ), 7 => array ( 'table_name' => 'facebook_rx_auto_post', 'column_name' => 'page_group_user_id', 'module_id' => '' ), 8 => array ( 'table_name' => 'facebook_rx_cta_post', 'column_name' => 'page_group_user_id', 'module_id' => '' ), 10 => array ( 'table_name' => 'facebook_rx_fb_page_info', 'column_name' => 'id', 'persistent_getstarted_check' => 'yes', 'module_id' => '' ), 12 => array ( 'table_name' => 'facebook_rx_offer_campaign', 'column_name' => 'page_group_user_id', 'module_id' => '' ), 13 => array ( 'table_name' => 'facebook_rx_offer_campaign_view', 'column_name' => 'page_group_user_id', 'module_id' => '' ), 16 => array ( 'table_name' => 'facebook_rx_slider_post', 'column_name' => 'page_group_user_id', 'module_id' => '' ), 24 => array ( 'table_name' => 'messenger_bot', 'column_name' => 'page_id', 'module_id' => '' ), 26 => array ( 'table_name' => 'messenger_bot_broadcast_contact_group', 'column_name' => 'page_id', 'module_id' => '' ), 27 => array ( 'table_name' => 'messenger_bot_broadcast_serial', 'column_name' => 'page_id', 'module_id' => '' ), 28 => array ( 'table_name' => 'messenger_bot_broadcast_serial_send', 'column_name' => 'page_id', 'module_id' => '' ), 29 => array ( 'table_name' => 'messenger_bot_domain_whitelist', 'column_name' => 'page_id', 'module_id' => '' ), 30 => array ( 'table_name' => 'messenger_bot_drip_campaign', 'column_name' => 'page_id', 'module_id' => '' ), 31 => array ( 'table_name' => 'messenger_bot_drip_report', 'column_name' => 'page_id', 'module_id' => '' ), 32 => array ( 'table_name' => 'messenger_bot_engagement_2way_chat_plugin', 'column_name' => 'page_auto_id', 'module_id' => '' ), 33 => array ( 'table_name' => 'messenger_bot_engagement_checkbox', 'column_name' => 'page_id', 'module_id' => '' ), 34 => array ( 'table_name' => 'messenger_bot_drip_campaign_assign', 'column_name' => 'page_table_id', 'module_id' => '' ), 36 => array ( 'table_name' => 'messenger_bot_engagement_mme', 'column_name' => 'page_id', 'module_id' => '' ), 37 => array ( 'table_name' => 'messenger_bot_engagement_send_to_msg', 'column_name' => 'page_id', 'module_id' => '' ), 38 => array ( 'table_name' => 'messenger_bot_persistent_menu', 'column_name' => 'page_id', 'module_id' => '' ), 39 => array ( 'table_name' => 'messenger_bot_postback', 'column_name' => 'page_id', 'module_id' => '' ), 40 => array ( 'table_name' => 'messenger_bot_reply_error_log', 'column_name' => 'page_id', 'module_id' => '' ), 42 => array ( 'table_name' => 'messenger_bot_subscriber', 'column_name' => 'page_table_id', 'module_id' => '' ), 43 => array ( 'table_name' => 'messenger_bot_thirdparty_webhook', 'column_name' => 'page_id', 'is_facebook_page_id' => 'yes', 'has_dependent_table' => 'yes', 'dependent_tables' => 'messenger_bot_thirdparty_webhook_activity,messenger_bot_thirdparty_webhook_trigger', 'dependent_table_column' => 'webhook_id,webhook_id', 'module_id' => '' ), 45 => array ( 'table_name' => 'messenger_bot_user_custom_form_webview_data', 'column_name' => 'page_id', 'module_id' => '' ), 48 => array ( 'table_name' => 'page_response_auto_like_share', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 49 => array ( 'table_name' => 'page_response_auto_like_share_report', 'column_name' => 'page_info_table_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'page_response_auto_like_report,page_response_auto_share_report', 'dependent_table_column' =>'page_response_auto_like_share_report_id,page_response_auto_like_share_report_id' ), 51 => array ( 'table_name' => 'page_response_autoreply', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 52 => array ( 'table_name' => 'page_response_report', 'column_name' => 'page_info_table_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'facebook_ex_autoreply_report', 'dependent_table_column' =>'autoreply_table_id' ), 54 => array ( 'table_name' => 'tag_machine_bulk_reply', 'column_name' => 'page_info_table_id', 'has_dependent_table' => 'yes', 'dependent_tables' => 'tag_machine_bulk_reply_send', 'dependent_table_column' => 'campaign_id', 'module_id' => '' ), 56 => array ( 'table_name' => 'tag_machine_bulk_tag', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 57 => array ( 'table_name' => 'tag_machine_comment_info', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 58 => array ( 'table_name' => 'tag_machine_commenter_info', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 59 => array ( 'table_name' => 'tag_machine_enabled_post_list', 'column_name' => 'page_info_table_id', 'module_id' => '' ), 63 => array ( 'table_name' => 'webview_builder', 'column_name' => 'page_id', 'module_id' => '' ), 64 => array ( 'table_name' => 'email_sending_campaign', 'column_name' => 'page_id', 'has_dependent_table' => 'yes', 'dependent_tables' => 'email_sending_campaign_send', 'dependent_table_column' => 'campaign_id', 'module_id' => '' ), 65 => array ( 'table_name' => 'sms_sending_campaign', 'column_name' => 'page_id', 'has_dependent_table' => 'yes', 'dependent_tables' => 'sms_sending_campaign_send', 'dependent_table_column' => 'campaign_id', 'module_id' => '' ), 66 => array ( 'table_name' => 'woocommerce_drip_campaign', 'column_name' => 'page_id', 'module_id' => '' ), 67 => array ( 'table_name' => 'woocommerce_drip_campaign_report', 'column_name' => 'page_id', 'module_id' => '' ), 68 => array ( 'table_name' => 'woocommerce_drip_campaign_webhook_call', 'column_name' => 'page_table_id', 'module_id' => '' ), 69 => array ( 'table_name' => 'ecommerce_store', 'column_name' => 'page_id', 'has_dependent_table' => 'yes', 'dependent_tables' => 'ecommerce_attribute,ecommerce_cart,ecommerce_cart_item,ecommerce_category,ecommerce_coupon,ecommerce_product,ecommerce_reminder_report', 'dependent_table_column' => 'store_id,store_id,store_id,store_id,store_id,store_id,store_id', 'module_id' => '' ), 70 => array ( 'table_name' => 'otn_postback', 'column_name' => 'page_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'otn_optin_subscriber', 'dependent_table_column' =>'otn_id' ), 71 => array ( 'table_name' => 'instagram_reply_autoreply', 'column_name' => 'page_info_table_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'instagram_autoreply_report', 'dependent_table_column' =>'autoreply_table_id' ), 72 => array ( 'table_name' => 'user_input_flow_campaign', 'column_name' => 'page_table_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'user_input_flow_questions,user_input_flow_questions_answer', 'dependent_table_column' =>'flow_campaign_id,flow_campaign_id' ), 73 => array ( 'table_name' => 'visual_flow_builder_campaign', 'column_name' => 'page_id', 'module_id' => '', ) ); return $tables; } public function table_names_array_foraccount() { $tables = array( 1 => array ( 'table_name' => 'facebook_rx_fb_group_info', 'column_name' => 'facebook_rx_fb_user_info_id', 'module_id' => '' ), 2 => array ( 'table_name' => 'facebook_rx_fb_user_info', 'column_name' => 'id', 'module_id' => '' ) ); return $tables; } public function table_names_array_foruser() { $tables = array( 1 => array ( 'table_name' => 'auto_comment_reply_tb', 'column_name' => 'user_id', 'module_id' => '' ), 2 => array ( 'table_name' => 'fb_simple_support_desk', 'column_name' => 'user_id', 'module_id' => '' ), 3 => array ( 'table_name' => 'fb_support_category', 'column_name' => 'user_id', 'module_id' => '' ), 4 => array ( 'table_name' => 'fb_support_desk_reply', 'column_name' => 'user_id', 'module_id' => '' ), 6 => array ( 'table_name' => 'messenger_bot_saved_templates', 'column_name' => 'user_id', 'module_id' => '' ), 7 => array ( 'table_name' => 'ultrapost_auto_reply', 'column_name' => 'user_id', 'module_id' => '' ), 8 => array ( 'table_name' => 'sms_sending_campaign_send', 'column_name' => 'user_id', 'module_id' => '' ), 9 => array ( 'table_name' => 'email_mailgun_config', 'column_name' => 'user_id', 'module_id' => '' ), 10 => array ( 'table_name' => 'email_mandrill_config', 'column_name' => 'user_id', 'module_id' => '' ), 11 => array ( 'table_name' => 'email_sendgrid_config', 'column_name' => 'user_id', 'module_id' => '' ), 12 => array ( 'table_name' => 'email_smtp_config', 'column_name' => 'user_id', 'module_id' => '' ), 13 => array ( 'table_name' => 'sms_api_config', 'column_name' => 'user_id', 'module_id' => '' ), 14 => array ( 'table_name' => 'sms_email_contacts', 'column_name' => 'user_id', 'module_id' => '' ), 15 => array ( 'table_name' => 'sms_email_contact_group', 'column_name' => 'user_id', 'module_id' => '' ), 16 => array ( 'table_name' => 'email_sending_campaign', 'column_name' => 'user_id', 'module_id' => '' ), 17 => array ( 'table_name' => 'email_sending_campaign_send', 'column_name' => 'user_id', 'module_id' => '' ), 18 => array ( 'table_name' => 'sms_sending_campaign', 'column_name' => 'user_id', 'module_id' => '' ), 19 => array ( 'table_name' => 'ecommerce_config', 'column_name' => 'user_id', 'module_id' => '' ), 20 => array ( 'table_name' => 'usage_log', 'column_name' => 'user_id', 'module_id' => '' ), 21 => array ( 'table_name' => 'user_input_custom_fields', 'column_name' => 'user_id', 'module_id' => '', 'has_dependent_table' => 'yes', 'dependent_tables' => 'user_input_custom_fields_assaign', 'dependent_table_column' =>'custom_field_id' ), 22 => array ( 'table_name' => 'users', 'column_name' => 'id', 'module_id' => '' ) ); return $tables; } public function delete_data_basedon_page($table_id=0,$admin_access=0) { if($table_id == 0) { return json_encode(array('success'=>0,'message'=>$this->lang->line("Page is not found for this user. Something is wrong."))); exit(); } if($admin_access == '1' && $this->session->userdata('user_type') == 'Admin') $page_information = $this->basic->get_data('facebook_rx_fb_page_info',array('where'=>array('id'=>$table_id))); else $page_information = $this->basic->get_data('facebook_rx_fb_page_info',array('where'=>array('id'=>$table_id,'user_id'=>$this->user_id))); if(empty($page_information)){ return json_encode(array('success'=>0,'message'=>$this->lang->line("Page is not found for this user. Something is wrong."))); exit(); } $this->db->trans_start(); $this->load->library("fb_rx_login"); $table_names = $this->table_names_array(); foreach($table_names as $value) { if(isset($value['persistent_getstarted_check']) && $value['persistent_getstarted_check'] == 'yes') { $fb_page_id=isset($page_information[0]["page_id"]) ? $page_information[0]["page_id"] : ""; $page_access_token=isset($page_information[0]["page_access_token"]) ? $page_information[0]["page_access_token"] : ""; $persistent_enabled=isset($page_information[0]["persistent_enabled"]) ? $page_information[0]["persistent_enabled"] : "0"; $bot_enabled=isset($page_information[0]["bot_enabled"]) ? $page_information[0]["bot_enabled"] : "0"; $ice_breaker_status=isset($page_information[0]["ice_breaker_status"]) ? $page_information[0]["ice_breaker_status"] : "0"; $started_button_enabled=isset($page_information[0]["started_button_enabled"]) ? $page_information[0]["started_button_enabled"] : "0"; $fb_user_id = $page_information[0]["facebook_rx_fb_user_info_id"]; $fb_user_info = $this->basic->get_data('facebook_rx_fb_user_info',array('where'=>array('id'=>$fb_user_id))); $this->fb_rx_login->app_initialize($fb_user_info[0]['facebook_rx_config_id']); if($persistent_enabled == '1') { $this->fb_rx_login->delete_persistent_menu($page_access_token); // delete persistent menu if($admin_access != '1') $this->_delete_usage_log($module_id=197,$request=1); } if($started_button_enabled == '1') $this->fb_rx_login->delete_get_started_button($page_access_token); // delete get started button if($ice_breaker_status == '1') $this->fb_rx_login->delete_ice_breakers($page_access_token); // delete get started button if($bot_enabled == '1') { $this->fb_rx_login->disable_bot($fb_page_id,$page_access_token); if($admin_access != '1') $this->_delete_usage_log($module_id=200,$request=1); } if($this->db->table_exists($value['table_name'])) $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$table_id)); } else if(isset($value['has_dependent_table']) && $value['has_dependent_table'] == 'yes') { $table_ids_array = array(); if($this->db->table_exists($value['table_name'])) { if(isset($value['is_facebook_page_id']) && $value['is_facebook_page_id'] == 'yes') { $facebook_page_id = $page_information[0]['page_id']; $table_ids_info = $this->basic->get_data($value['table_name'],array('where'=>array("{$value['column_name']}"=>$facebook_page_id)),'id'); } else $table_ids_info = $this->basic->get_data($value['table_name'],array('where'=>array("{$value['column_name']}"=>$table_id)),'id'); } else continue; foreach($table_ids_info as $info) array_push($table_ids_array, $info['id']); if($this->db->table_exists($value['table_name'])) { if(isset($value['is_facebook_page_id']) && $value['is_facebook_page_id'] == 'yes') $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$facebook_page_id)); else $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$table_id)); } $dependent_table_names = explode(',', $value['dependent_tables']); $dependent_table_column = explode(',', $value['dependent_table_column']); if(!empty($table_ids_array) && !empty($dependent_table_names)) { for($i=0;$i<count($dependent_table_names);$i++) { if($this->db->table_exists($dependent_table_names[$i])) { $this->db->where_in($dependent_table_column[$i], $table_ids_array); $this->db->delete($dependent_table_names[$i]); } } } } else if(isset($value['comma_separated']) && $value['comma_separated'] == 'yes') { $str = "FIND_IN_SET('".$table_id."', ".$value['column_name'].") !="; $where = array($str=>0); if($this->db->table_exists($value['table_name'])) $this->basic->delete_data($value['table_name'],$where); } else { if($this->db->table_exists($value['table_name'])) $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$table_id)); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { $response['status'] = 0; $response['message'] = $this->lang->line('Something went wrong, please try again.'); } else { $response['status'] = 1; $response['message'] = $this->lang->line("Your page and all of it's corresponding campaigns have been deleted successfully."); } return json_encode($response); } public function delete_data_basedon_account($fb_user_id=0,$app_delete=0) { $this->db->trans_start(); $table_names = $this->table_names_array_foraccount(); foreach($table_names as $value) { if($this->db->table_exists($value['table_name'])) $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$fb_user_id)); } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { $response['status'] = 0; $response['message'] = $this->lang->line('Something went wrong, please try again.'); } else { if($app_delete!='1') { // delete data to useges log table $this->_delete_usage_log($module_id=65,$request=1); $this->session->sess_destroy(); } $response['status'] = 1; $response['message'] = $this->lang->line("Your account and all of it's corresponding pages, groups and campaigns have been deleted successfully. Now you'll be redirected to the login page."); } return $response; } public function user_delete_action($user_id=0) { $this->ajax_check(); $this->csrf_token_check(); if($this->is_demo == '1' && $this->session->userdata('user_type')=="Admin") { $response['status'] = 0; $response['message'] = "This feature is disabled in this demo."; echo json_encode($response); exit(); } if($user_id == 0) exit; if($this->session->userdata('user_type') != 'Admin') if($user_id != $this->user_id) exit; $fb_user_infos = $this->basic->get_data('facebook_rx_fb_user_info',array('where'=>array('user_id'=>$user_id)),array('id')); foreach($fb_user_infos as $value) { $fb_page_infos = $this->basic->get_data('facebook_rx_fb_page_info',array('where'=>array('facebook_rx_fb_user_info_id'=>$value['id'])),array('id')); foreach($fb_page_infos as $value2) $response = $this->delete_data_basedon_page($value2['id'],'1'); $response = $this->delete_data_basedon_account($value['id'],'1'); } $this->db->trans_start(); $table_names = $this->table_names_array_foruser(); foreach($table_names as $value) { if($this->db->table_exists($value['table_name'])) { if(isset($value['has_dependent_table']) && $value['has_dependent_table'] == 'yes') { $table_ids_array = array(); $table_ids_info = $this->basic->get_data($value['table_name'],array('where'=>array("{$value['column_name']}"=>$user_id)),'id'); foreach($table_ids_info as $info) array_push($table_ids_array, $info['id']); $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$user_id)); $dependent_table_names = explode(',', $value['dependent_tables']); $dependent_table_column = explode(',', $value['dependent_table_column']); if(!empty($table_ids_array) && !empty($dependent_table_names)) { for($i=0;$i<count($dependent_table_names);$i++) { if($this->db->table_exists($dependent_table_names[$i])) { $this->db->where_in($dependent_table_column[$i], $table_ids_array); $this->db->delete($dependent_table_names[$i]); } } } } else $this->basic->delete_data($value['table_name'],array("{$value['column_name']}"=>$user_id)); } } $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { $response['status'] = 0; $response['message'] = $this->lang->line('Something went wrong, please try again.'); } else { if($this->session->userdata('user_type') != 'Admin') $this->session->sess_destroy(); $response['status'] = 1; $response['message'] = $this->lang->line("Account and all of it's corresponding pages, groups and campaigns have been deleted successfully."); } echo json_encode($response); } public function _email_send_function($config_id_prefix="", $message_org="", $to_emails="", $subject="", $attachement='', $fileName='',$user_id='',$test_mail='') { $message_org = preg_replace('/data-cke-saved-src="(.+?)"/', '', $message_org); $message_org = preg_replace('/_moz_resizing="(.+?)"/', '', $message_org); // echo "<pre>"; print_r($message_org); exit; $message = '<!DOCTYPE HTML>'. '<html>'. '<head>'. '<meta http-equiv="content-type" content="text/html">'. '<title>'.$subject.'</title>'. '</head>'. '<body>'. $message_org. '</body>'; '</html>'; if ($config_id_prefix=="" || $message=="" || $to_emails=="" || $subject=="") { return false; } if ($fileName=="0") { $fileName=""; $attachement=""; } if (!is_array($to_emails)) { $to_emails=array($to_emails); } $status=""; /*****get the email configuration value*****/ $from_email=$config_id_prefix; $from_email_separate=explode("_", $from_email); $config_type=$from_email_separate[0]; $config_id=$from_email_separate[1]; if ($config_type=='smtp') { $table_name="email_smtp_config"; } elseif ($config_type=='mandrill') { $table_name="email_mandrill_config"; } elseif ($config_type=='sendgrid') { $table_name="email_sendgrid_config"; } elseif ($config_type=='mailgun') { $table_name="email_mailgun_config"; } else { $table_name=""; } $where2=array("where"=>array('id'=>$config_id)); $email_config_details=$this->basic->get_data($table_name, $where2, $select='', $join='', $limit='', $start='', $group_by='', $num_rows=0); $userid = $user_id; if (count($email_config_details)==0) { $status = "Opps !!! Sorry no configuration is found"; return $status; } if ($config_type=='smtp') { foreach ($email_config_details as $send_info) { $send_email = trim($send_info['email_address']); $smtp_host= trim($send_info['smtp_host']); $smtp_port= trim($send_info['smtp_port']); $smtp_user=trim($send_info['smtp_user']); $smtp_password= trim($send_info['smtp_password']); $smtp_type = trim($send_info['smtp_type']); $sender_name= trim($send_info['sender_name']); } /*****Email Sending Code ******/ $config = array( 'protocol' => 'smtp', 'smtp_host' => "{$smtp_host}", 'smtp_port' => $smtp_port, 'smtp_user' => "{$smtp_user}", // change it to yours 'smtp_pass' => "{$smtp_password}", // change it to yours 'mailtype' => 'html', 'charset' => 'utf-8', 'newline' =>"\r\n", 'set_crlf'=> "\r\n", 'smtp_timeout'=>'30', 'wrapchars' => '998' ); if($smtp_type != 'Default') $config['smtp_crypto'] = $smtp_type; else $config['smtp_crypto'] = ""; $this->load->library('email'); $this->email->initialize($config); if($sender_name!='') $this->email->from($send_email,$sender_name); else $this->email->from($send_email); if(is_array($to_emails) && count($to_emails)>1) { $no_reply_arr=explode("@",$send_email); if(isset($no_reply_arr[1])) $no_reply="do-not-reply@".$no_reply_arr[1]; else $no_reply=$to_emails[0]; $this->email->to($no_reply); $this->email->bcc($to_emails); } else $this->email->to($to_emails); $this->email->subject($subject); $this->email->message($message); if ($attachement) { $this->email->attach($attachement); } try { if($this->email->send()) { $response_smtp = "success"; } else { $response_smtp = "error"; } } catch (Exception $e) { $response_smtp = "error"; } if($response_smtp != "error") { $status = "Submited"; } else { if($test_mail == 1) { $status = $this->email->print_debugger(); } else { $status = "error in configuration"; } } } /*** End of Email sending by SMTP ***/ /*** If option is mandrill ***/ if ($config_type=='mandrill') { foreach ($email_config_details as $send_info) { $send_email= $send_info['email_address']; $api_id=$send_info['api_key']; $send_name=$send_info['your_name']; } $this->load->library('email_manager'); $result = $this->email_manager->send_madrill_email($send_email, $send_name, $to_emails, $subject,$message, $api_id, $attachement, $fileName); if (isset($result['error']) && !empty($result['error'])) { $status = $result['error']; } else { $status = "Submited"; } } /***** if gateway is sendgrid *****/ if ($config_type=='sendgrid') { $this->load->library('email_manager'); foreach ($email_config_details as $send_info) { $sendgrid_from_email= $send_info['email_address']; $this->email_manager->sendgrid_username=$send_info['username']; $this->email_manager->sendgrid_password=$send_info['password']; } $result = $this->email_manager->sendgrid_email_send($sendgrid_from_email, $to_emails, $subject, $message, $attachement, $fileName); if ((isset($result['status']) && !empty($result['status'])) && $result['status'] == 'success') { if($test_mail == 1) { $status = $result['status']; } else { $status = 'Submited'; } } else { $status = $result['status']; } } if ($config_type=='mailgun') { $this->load->library('email_manager'); foreach ($email_config_details as $send_info) { $send_email=$send_info['email_address']; $this->email_manager->mailgun_api_key=$send_info['api_key']; $this->email_manager->mailgun_domain=$send_info['domain_name']; } $result = $this->email_manager->mailgun_email_send($send_email, $to_emails, $subject, $message, $attachement); if ($result['status'] != 'error') { if($test_mail == 1) { $status = $result['status']; } else { $status = "Submited"; } } else { $status = $result['status']; } } return $status; } public function unsubscribe($contact_id,$email) { if($contact_id == '' || $email == '') exit; $data = array(); $convertidintobinary = pack("H*", $contact_id); $explode_binarycontactid = explode("-", $convertidintobinary); $data['contact_id'] = $explode_binarycontactid[0]; $data['type'] = $explode_binarycontactid[1]; $data['cam_id'] = $explode_binarycontactid[2]; $data['cam_temp_table_id'] = $explode_binarycontactid[3]; $data['campaign_type']= isset($explode_binarycontactid[4]) ? $explode_binarycontactid[4] : ""; $data['email_address'] = pack("H*", $email); if(isset($explode_binarycontactid) && $explode_binarycontactid[1] == "contact"){ $info = $this->basic->get_data("sms_email_contacts", array('where'=>array("id"=>$data['contact_id'], "email"=>$data['email_address']))); } else if(isset($explode_binarycontactid) && $explode_binarycontactid[1] == "subscriber") { if($data['campaign_type']!='Drip') $info = $this->basic->get_data("messenger_bot_subscriber", array('where'=>array("id"=>$data['contact_id'], "email"=>$data['email_address']))); else $info = $this->basic->get_data("messenger_bot_subscriber", array('where'=>array("subscribe_id"=>$data['contact_id'], "email"=>$data['email_address']))); } if(isset($info) && !empty($info)) { if((isset($info[0]['unsubscribed']) && $info[0]['unsubscribed'] =="0") || (isset($info[0]['is_email_unsubscriber']) && $info[0]['is_email_unsubscriber'] =="0")) { $data['status'] = "0"; } else { $data['status'] = "1"; } $this->load->view("sms_email_manager/email/email_campaign/unsubscribed_message",$data); } else { redirect('home/access_forbidden', 'location'); } } public function unsubscribe_action() { // if($this->session->userdata('user_type') != 'Admin' && !in_array(263,$this->module_access)) exit; if ($_SERVER['REQUEST_METHOD'] === 'GET') { redirect('home/access_forbidden', 'location'); } $result = array(); $contactid = trim($this->input->post("contactid",true)); $email_address = trim($this->input->post("email",true)); $btntype = trim($this->input->post("btntype",true)); $contactType = trim($this->input->post("contactType",true)); $cam_id = trim($this->input->post("cam_id",true)); $cam_temp_table_id = trim($this->input->post("cam_temp_table_id",true)); $campaign_type = trim($this->input->post("campaign_type",true)); $cur_date = date("Y-m-d H:i:s"); if(isset($btntype) && !empty($btntype) && $btntype == "unsub") { if($contactType == "contact") { if($this->basic->update_data("sms_email_contacts", array("id"=>$contactid,"email"=>$email_address,"deleted"=>"0"), array("unsubscribed"=>"1"))) { if($campaign_type!='Drip'){ if($this->basic->update_data("email_sending_campaign_send", array("id"=>$cam_temp_table_id, "campaign_id"=>$cam_id,"contact_id"=>$contactid), array("is_unsubscribed"=>"1","unsubscribed_at"=>$cur_date))) { $increment_total_unsubscriber = "update email_sending_campaign set total_unsubscribed=total_unsubscribed+1, last_unsubscribed_at='{$cur_date}' where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } else{ if($this->basic->update_data("messenger_bot_drip_campaign_assign", array("id"=>$cam_temp_table_id, "messenger_bot_drip_campaign_id"=>$cam_id,"subscribe_id"=>$contactid), array("is_unsubscribed"=>"1","unsubscribed_at"=>$cur_date))) { $increment_total_unsubscriber = "update messenger_bot_drip_campaign set total_unsubscribed=total_unsubscribed+1, last_unsubscribed_at='{$cur_date}' where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } echo "1"; } else { echo "0"; } } else if($contactType == "subscriber") { if($campaign_type!='Drip') $update_subscriber_where=array("id"=>$contactid,"email"=>$email_address); else $update_subscriber_where=array("subscribe_id"=>$contactid,"email"=>$email_address); if($this->basic->update_data("messenger_bot_subscriber",$update_subscriber_where, array("is_email_unsubscriber"=>"1"))) { if($campaign_type!='Drip'){ if($this->basic->update_data("email_sending_campaign_send", array("id"=>$cam_temp_table_id, "campaign_id"=>$cam_id,"subscriber_id"=>$contactid), array("is_unsubscribed"=>"1","unsubscribed_at"=>$cur_date))) { $increment_total_unsubscriber = "update email_sending_campaign set total_unsubscribed=total_unsubscribed+1, last_unsubscribed_at='{$cur_date}' where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } else{ if($this->basic->update_data("messenger_bot_drip_campaign_assign", array("id"=>$cam_temp_table_id, "messenger_bot_drip_campaign_id"=>$cam_id,"subscribe_id"=>$contactid), array("is_unsubscribed"=>"1","unsubscribed_at"=>$cur_date))) { $increment_total_unsubscriber = "update messenger_bot_drip_campaign set total_unsubscribed=total_unsubscribed+1, last_unsubscribed_at='{$cur_date}' where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } echo "1"; } else { echo "0"; } } } else if(isset($btntype) && !empty($btntype) && $btntype == "sub") { if($contactType == "contact") { if($this->basic->update_data("sms_email_contacts", array("id"=>$contactid,"email"=>$email_address,"deleted"=>"0"), array("unsubscribed"=>"0"))) { if($campaign_type!='Drip'){ if($this->basic->update_data("email_sending_campaign_send", array("id"=>$cam_temp_table_id, "campaign_id"=>$cam_id,"contact_id"=>$contactid), array("is_unsubscribed"=>"0","unsubscribed_at"=>"0000-00-00 00:00"))) { $increment_total_unsubscriber = "update email_sending_campaign set total_unsubscribed=total_unsubscribed-1 where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } else{ if($this->basic->update_data("messenger_bot_drip_campaign_assign", array("id"=>$cam_temp_table_id, "messenger_bot_drip_campaign_id"=>$cam_id,"subscribe_id"=>$contactid), array("is_unsubscribed"=>"0","unsubscribed_at"=>"0000-00-00 00:00"))) { $increment_total_unsubscriber = "update messenger_bot_drip_campaign set total_unsubscribed=total_unsubscribed-1 where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } echo "1"; } else { echo "0"; } } else if($contactType == "subscriber") { if($campaign_type!='Drip') $update_subscriber_where=array("id"=>$contactid,"email"=>$email_address); else $update_subscriber_where=array("subscribe_id"=>$contactid,"email"=>$email_address); if($this->basic->update_data("messenger_bot_subscriber", $update_subscriber_where , array("is_email_unsubscriber"=>"0"))) { if($campaign_type!='Drip'){ if($this->basic->update_data("email_sending_campaign_send", array("id"=>$cam_temp_table_id, "campaign_id"=>$cam_id,"subscriber_id"=>$contactid), array("is_unsubscribed"=>"0","unsubscribed_at"=>"0000-00-00 00:00"))) { $increment_total_unsubscriber = "update email_sending_campaign set total_unsubscribed=total_unsubscribed-1 where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } else{ if($this->basic->update_data("messenger_bot_drip_campaign_assign", array("id"=>$cam_temp_table_id, "messenger_bot_drip_campaign_id"=>$cam_id,"subscribe_id"=>$contactid), array("is_unsubscribed"=>"1","unsubscribed_at"=>$cur_date))) { $increment_total_unsubscriber = "update messenger_bot_drip_campaign set total_unsubscribed=total_unsubscribed-1, last_unsubscribed_at='{$cur_date}' where id='{$cam_id}'"; if($increment_total_unsubscriber != "") { $this->db->query($increment_total_unsubscriber); } } } echo "1"; } else { echo "0"; } } } } // Create labels and push them into dropdown public function common_create_label_and_assign() { // $this->ajax_check(); $this->load->library("fb_rx_login"); $social_media = 'fb'; $page_table_id = $this->input->post("page_id",true); $label_name = $this->input->post("label_name",true); $social_media = $this->input->post("social_media",true); // $getdata = $this->basic->get_data("facebook_rx_fb_page_info",array("where"=>array("id"=>$page_table_id))); // $page_access_token = isset($getdata[0]['page_access_token'])?$getdata[0]['page_access_token']:""; $is_exists = $this->basic->get_data("messenger_bot_broadcast_contact_group",array("where"=>array("page_id"=>$page_table_id,"group_name"=>$label_name,"social_media"=>$social_media))); if(isset($is_exists[0])) { $insert_id = $is_exists[0]['id']; $label_id = $is_exists[0]['label_id']; } else { // $response=$this->fb_rx_login->create_label($page_access_token,$label_name); $response = ['id'=>'']; if(isset($response['error']) && !empty($response['error'])) { echo json_encode(["error"=>$response['error']['message']]); exit; } $label_id=isset($response['id']) ? $response['id'] : ""; $this->basic->insert_data("messenger_bot_broadcast_contact_group",array("page_id"=>$page_table_id,"group_name"=>$label_name,"user_id"=>$this->user_id,"label_id"=>$label_id,"social_media"=>$social_media)); $insert_id = $this->db->insert_id(); } echo json_encode(array('id'=>$insert_id,"text"=>$label_name)); } public function common_get_postback() { if(!$_POST) exit(); $is_from_add_button=$this->input->post('is_from_add_button'); $page_id=$this->input->post('page_id');// database id $order_by=$this->input->post('order_by'); if($order_by=="") $order_by="id DESC"; else $order_by=$order_by." ASC"; $postback_data=$this->basic->get_data("messenger_bot_postback",array("where"=>array("page_id"=>$page_id,"is_template"=>"1",'template_for'=>'reply_message')),'','','',$start=NULL,$order_by); $push_postback=""; if($is_from_add_button=='0') { $push_postback.="<option value=''>".$this->lang->line("Select")."</option>"; } foreach ($postback_data as $key => $value) { $push_postback.="<option value='".$value['id']."'>".$value['template_name'].' ['.$value['postback_id'].']'."</option>"; } if($is_from_add_button=='1' || $is_from_add_button=='') { $push_postback.="<option value=''>".$this->lang->line("Select")."</option>"; } echo $push_postback; } protected function send_email_to_autoresponder($settings='', $email='',$first_name='',$last_name='',$type='singnup',$user_id="0",$tags=''){ /* $settings= '{"mailchimp":["37","49"]}'; $first_name="Konok"; $last_name='Zaman'; $email="konok6@xerooneit.net"; $user_id=1; $type='admin';*/ $data_to_send['firstname']=$first_name; $data_to_send['lastname']=$last_name; $data_to_send['email']=$email; if($settings=="") exit; $settings_array=json_decode($settings,TRUE); if(empty($settings_array)) exit; if(isset($settings_array['mailchimp']) && !empty($settings_array['mailchimp'])){ $join=array('mailchimp_config'=>'mailchimp_config.id=mailchimp_list.mailchimp_config_id,left'); $where_mailchimp['where_in']=array('mailchimp_list.id'=>$settings_array['mailchimp']); $mailchimp_config_data = $this->basic->get_data("mailchimp_list",$where_mailchimp,$select='',$join); $this->load->library("mailchimp_api"); foreach ($mailchimp_config_data as $mailchimp_data) { $list_id=isset($mailchimp_data['list_id']) ? $mailchimp_data['list_id']: ""; $api_key=isset($mailchimp_data['api_key']) ? $mailchimp_data['api_key']: ""; $mailchimp_config_id=isset($mailchimp_data['mailchimp_config_id']) ? $mailchimp_data['mailchimp_config_id']: "0"; $result=$this->mailchimp_api->syncMailchimp($data_to_send, $api_key, $list_id,$tags); $result_array=json_decode($result,TRUE); $status= isset($result_array['status']) ? $result_array['status']: "0"; //Insert into Log table $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>$type,'status'=>$status,'email'=>$email,'auto_responder_type'=>"Email Autoresponder",'api_name'=>'MailChimp','response'=>$result,'insert_time'=>$now_time,'mailchimp_config_id'=>$mailchimp_config_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); } } if(isset($settings_array['sendinblue']) && !empty($settings_array['sendinblue'])){ $join=array('mailchimp_config'=>'mailchimp_config.id=mailchimp_list.mailchimp_config_id,left'); $where_mailchimp['where_in']=array('mailchimp_list.id'=>$settings_array['sendinblue']); $where_mailchimp['where']=array('mailchimp_config.service_type'=>"sendinblue"); $sendinblue_config_data = $this->basic->get_data("mailchimp_list",$where_mailchimp,$select='',$join); $this->load->library("mailchimp_api"); foreach ($sendinblue_config_data as $sendinblue_data) { $list_id=isset($sendinblue_data['list_id']) ? $sendinblue_data['list_id']: ""; $api_key=isset($sendinblue_data['api_key']) ? $sendinblue_data['api_key']: ""; $sendinblue_config_id=isset($sendinblue_data['mailchimp_config_id']) ? $sendinblue_data['mailchimp_config_id']: "0"; $result=$this->mailchimp_api->sendinblue_add_contact($api_key,$email,$first_name,$last_name,$list_id); $result_array=json_decode($result,TRUE); $status= isset($result_array['code']) ? $result_array['code']: "Success"; //Insert into Log table $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>$type,'status'=>$status,'email'=>$email,'auto_responder_type'=>"Email Autoresponder",'api_name'=>'Sendinblue','response'=>$result,'insert_time'=>$now_time,'mailchimp_config_id'=>$sendinblue_config_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); } } if(isset($settings_array['activecampaign']) && !empty($settings_array['activecampaign'])){ $join=array('mailchimp_config'=>'mailchimp_config.id=mailchimp_list.mailchimp_config_id,left'); $where_mailchimp['where_in']=array('mailchimp_list.id'=>$settings_array['activecampaign']); $where_mailchimp['where']=array('mailchimp_config.service_type'=>"activecampaign"); $activecampaign_config_data = $this->basic->get_data("mailchimp_list",$where_mailchimp,$select='',$join); $this->load->library("mailchimp_api"); foreach ($activecampaign_config_data as $activecampaign_data) { $list_id=isset($activecampaign_data['list_id']) ? $activecampaign_data['list_id']: ""; $api_key=isset($activecampaign_data['api_key']) ? $activecampaign_data['api_key']: ""; $api_url=isset($activecampaign_data['api_url']) ? $activecampaign_data['api_url']: ""; $activecampaign_config_id=isset($activecampaign_data['mailchimp_config_id']) ? $activecampaign_data['mailchimp_config_id']: "0"; $result=$this->mailchimp_api->activecampaign_add_contact($api_key,$api_url,$email,$first_name,$last_name,$list_id); $result_array=json_decode($result,TRUE); $status= isset($result_array['errors']) ? $result_array['errors'][0]['code']: "Success"; //Insert into Log table $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>$type,'status'=>$status,'email'=>$email,'auto_responder_type'=>"Email Autoresponder",'api_name'=>'Activecampaign','response'=>$result,'insert_time'=>$now_time,'mailchimp_config_id'=>$activecampaign_config_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); } } if(isset($settings_array['mautic']) && !empty($settings_array['mautic'])){ $join=array('mailchimp_config'=>'mailchimp_config.id=mailchimp_list.mailchimp_config_id,left'); $where_mailchimp['where_in']=array('mailchimp_list.id'=>$settings_array['mautic']); $where_mailchimp['where']=array('mailchimp_config.service_type'=>"mautic"); $mautic_config_data = $this->basic->get_data("mailchimp_list",$where_mailchimp,$select='',$join); $this->load->library("mailchimp_api"); foreach ($mautic_config_data as $mautic_data) { $list_id=isset($mautic_data['list_id']) ? $mautic_data['list_id']: ""; $api_key=isset($mautic_data['api_key']) ? $mautic_data['api_key']: ""; $api_url=isset($mautic_data['api_url']) ? $mautic_data['api_url']: ""; $mautic_config_id=isset($mautic_data['mailchimp_config_id']) ? $mautic_data['mailchimp_config_id']: "0"; $result=$this->mailchimp_api->mautic_add_contact($api_key,$api_url,$email,$first_name,$last_name,$list_id,$tags); $result_array=json_decode($result,TRUE); $status= isset($result_array['errors']) ? $result_array['errors'][0]['message']: "Success"; //Insert into Log table $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>$type,'status'=>$status,'email'=>$email,'auto_responder_type'=>"Email Autoresponder",'api_name'=>'Mautic','response'=>$result,'insert_time'=>$now_time,'mailchimp_config_id'=>$mautic_config_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); } } if(isset($settings_array['acelle']) && !empty($settings_array['acelle'])){ $join=array('mailchimp_config'=>'mailchimp_config.id=mailchimp_list.mailchimp_config_id,left'); $where_mailchimp['where_in']=array('mailchimp_list.id'=>$settings_array['acelle']); $where_mailchimp['where']=array('mailchimp_config.service_type'=>"acelle"); $acelle_config_data = $this->basic->get_data("mailchimp_list",$where_mailchimp,$select='',$join); $this->load->library("mailchimp_api"); foreach ($acelle_config_data as $acelle_data) { $list_id=isset($acelle_data['list_id']) ? $acelle_data['list_id']: ""; $api_key=isset($acelle_data['api_key']) ? $acelle_data['api_key']: ""; $api_url=isset($acelle_data['api_url']) ? $acelle_data['api_url']: ""; $acelle_config_id=isset($acelle_data['mailchimp_config_id']) ? $acelle_data['mailchimp_config_id']: "0"; $result=$this->mailchimp_api->acelle_add_contact($api_key,$api_url,$email,$first_name,$last_name,$list_id); $result_array=json_decode($result,TRUE); $status= isset($result_array['errors']) ? $result_array['errors'][0]['message']: "Success"; //Insert into Log table $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>$type,'status'=>$status,'email'=>$email,'auto_responder_type'=>"Email Autoresponder",'api_name'=>'Acelle','response'=>$result,'insert_time'=>$now_time,'mailchimp_config_id'=>$acelle_config_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); } } } public function send_sms_by_for_bot_phone_number($sms_api='',$user_id='',$message='',$phone_number=''){ $status=""; $message_sent_id=""; $this->load->library('Sms_manager'); $this->sms_manager->set_credentioal($sms_api,$user_id); $response = $this->sms_manager->send_sms($message, $phone_number); if(isset($response['id']) && !empty($response['id'])) { $message_sent_id = $response['id']; $status='Success'; } else { if(isset($response['status']) && !empty($response['status'])){ $message_sent_id = $response["status"]; $status='Error'; } } $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>'quick-reply','status'=>$status,'email'=>$phone_number,'auto_responder_type'=>"SMS Sender",'api_name'=>$this->sms_manager->gateway_name,'response'=>$message_sent_id,'insert_time'=>$now_time,'mailchimp_config_id'=>$sms_api); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); if($status=='Error') $response["error"]["message"]=$message_sent_id; else $response['message_id'] = $message_sent_id; return $response; } public function send_email_by_for_bot_email($email_config_table='',$campaign_message_send='',$contact_email='', $subject='',$user_id=''){ $status=""; $message_sent_id=""; /*****get the email configuration value*****/ $from_email_separate=explode("_", $email_config_table); $email_api_id=array_pop($from_email_separate); $config_type=implode('_', $from_email_separate); if ($config_type == "email_smtp_config") { $from_email = "smtp_".$email_api_id; $gateway_type="smtp"; } elseif ($config_type == "email_mandrill_config") { $from_email = "mandrill_".$email_api_id; $gateway_type="mandrill"; } elseif ($config_type == "email_sendgrid_config") { $from_email = "sendgrid_".$email_api_id; $gateway_type="sendgrid"; } elseif ($config_type == "email_mailgun_config") { $from_email = "mailgun_".$email_api_id; $gateway_type="mailgun"; } try { $campaign_message_send = $campaign_message_send; $response = $this->_email_send_function($from_email, $campaign_message_send, $contact_email, $subject,'','',$user_id); if(isset($response) && !empty($response) && $response == "Submited") { $message_sent_id = $response; $status='Success'; } else { $message_sent_id = $response; $status='Error'; } } catch(Exception $e) { $message_sent_id = $e->get_message(); $status='Error'; } $now_time=date('Y-m-d H:i:s'); $insert_data=array('user_id'=>$user_id,'settings_type'=>'quick-reply','status'=>$status,'email'=>$contact_email,'auto_responder_type'=>"Email Sender",'api_name'=>$gateway_type,'response'=>$message_sent_id,'insert_time'=>$now_time,'mailchimp_config_id'=>$email_api_id); $this->basic->insert_data("send_email_to_autoresponder_log",$insert_data); $response=array(); if($status=='Error') $response["error"]["message"]=$message_sent_id; else $response['message_id'] = $message_sent_id; return $response; } public function xit_load_files($folder='',$file='') { if($folder == '' || $file == '') { echo ""; exit; } $file_name_array = explode('.', $file); $file_name_extension = array_pop($file_name_array); header('Access-Control-Allow-Origin: *'); if($file_name_extension == 'css') header("Content-type: text/css", true); if($file_name_extension == 'js') header('Content-Type: application/javascript', true); $folder = str_replace('-', '/', $folder); $current_theme = $this->config->item('current_theme'); if($current_theme == '') $current_theme = 'default'; $path = "application/views/site/".$current_theme."/".$folder."/".$file; $content = file_get_contents($path); echo $content; } protected function get_theme_data($path="") { $path=str_replace('\\','/',$path); $tokens=token_get_all(file_get_contents($path)); $addon_data=array(); $addon_path=explode('/', $path); $controller_name=array_pop($addon_path); array_pop($addon_path); $addon_path=implode('/',$addon_path); $comments = array(); foreach($tokens as $token) { if($token[0] == T_COMMENT || $token[0] == T_DOC_COMMENT) { $comments[] = isset( $token[1]) ? $token[1] : ""; } } $comment_str=isset($comments[0]) ? $comments[0] : ""; preg_match( '/^.*?theme name:(.*)$/mi', $comment_str, $match); $addon_data['theme_name'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?unique name:(.*)$/mi', $comment_str, $match); $addon_data['unique_name'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?theme uri:(.*)$/mi', $comment_str, $match); $addon_data['theme_uri'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?author:(.*)$/mi', $comment_str, $match); $addon_data['author'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?author uri:(.*)$/mi', $comment_str, $match); $addon_data['author_uri'] = isset($match[1]) ? trim($match[1]) : ""; preg_match( '/^.*?version:(.*)$/mi', $comment_str, $match); $addon_data['version'] = isset($match[1]) ? trim($match[1]) : "1.0"; preg_match( '/^.*?description:(.*)$/mi', $comment_str, $match); $addon_data['description'] = isset($match[1]) ? trim($match[1]) : ""; return $addon_data; } public function load_builder() { $data['body'] = 'flow_builder/index'; $data['page_table_id'] = 241; $this->_subscription_viewcontroller($data); } }
Editor is loading...