fraudlabspro.php (11500B)
1 <?php 2 class ControllerExtensionFraudFraudLabsPro extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('extension/fraud/fraudlabspro'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 $this->load->model('setting/setting'); 11 12 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 13 $this->model_setting_setting->editSetting('fraud_fraudlabspro', $this->request->post); 14 15 $this->session->data['success'] = $this->language->get('text_success'); 16 17 $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=fraud', true)); 18 } 19 20 if (isset($this->error['warning'])) { 21 $data['error_warning'] = $this->error['warning']; 22 } else { 23 $data['error_warning'] = ''; 24 } 25 26 if (isset($this->error['key'])) { 27 $data['error_key'] = $this->error['key']; 28 } else { 29 $data['error_key'] = ''; 30 } 31 32 $data['breadcrumbs'] = array(); 33 34 $data['breadcrumbs'][] = array( 35 'text' => $this->language->get('text_home'), 36 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 37 ); 38 39 $data['breadcrumbs'][] = array( 40 'text' => $this->language->get('text_extension'), 41 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=fraud', true) 42 ); 43 44 $data['breadcrumbs'][] = array( 45 'text' => $this->language->get('heading_title'), 46 'href' => $this->url->link('extension/fraud/fraudlabspro', 'user_token=' . $this->session->data['user_token'], true) 47 ); 48 49 $data['action'] = $this->url->link('extension/fraud/fraudlabspro', 'user_token=' . $this->session->data['user_token'], true); 50 51 $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=fraud', true); 52 53 if (isset($this->request->post['fraud_fraudlabspro_key'])) { 54 $data['fraud_fraudlabspro_key'] = $this->request->post['fraud_fraudlabspro_key']; 55 } else { 56 $data['fraud_fraudlabspro_key'] = $this->config->get('fraud_fraudlabspro_key'); 57 } 58 59 if (isset($this->request->post['fraud_fraudlabspro_score'])) { 60 $data['fraud_fraudlabspro_score'] = $this->request->post['fraud_fraudlabspro_score']; 61 } else { 62 $data['fraud_fraudlabspro_score'] = $this->config->get('fraud_fraudlabspro_score'); 63 } 64 65 if (isset($this->request->post['fraud_fraudlabspro_order_status_id'])) { 66 $data['fraud_fraudlabspro_order_status_id'] = $this->request->post['fraud_fraudlabspro_order_status_id']; 67 } else { 68 $data['fraud_fraudlabspro_order_status_id'] = $this->config->get('fraud_fraudlabspro_order_status_id'); 69 } 70 71 if (isset($this->request->post['fraud_fraudlabspro_review_status_id'])) { 72 $data['fraud_fraudlabspro_review_status_id'] = $this->request->post['fraud_fraudlabspro_review_status_id']; 73 } else { 74 $data['fraud_fraudlabspro_review_status_id'] = $this->config->get('fraud_fraudlabspro_review_status_id'); 75 } 76 77 if (isset($this->request->post['fraud_fraudlabspro_approve_status_id'])) { 78 $data['fraud_fraudlabspro_approve_status_id'] = $this->request->post['fraud_fraudlabspro_approve_status_id']; 79 } else { 80 $data['fraud_fraudlabspro_approve_status_id'] = $this->config->get('fraud_fraudlabspro_approve_status_id'); 81 } 82 83 if (isset($this->request->post['fraud_fraudlabspro_reject_status_id'])) { 84 $data['fraud_fraudlabspro_reject_status_id'] = $this->request->post['fraud_fraudlabspro_reject_status_id']; 85 } else { 86 $data['fraud_fraudlabspro_reject_status_id'] = $this->config->get('fraud_fraudlabspro_reject_status_id'); 87 } 88 89 if (isset($this->request->post['fraud_fraudlabspro_simulate_ip'])) { 90 $data['fraud_fraudlabspro_simulate_ip'] = $this->request->post['fraud_fraudlabspro_simulate_ip']; 91 } else { 92 $data['fraud_fraudlabspro_simulate_ip'] = $this->config->get('fraud_fraudlabspro_simulate_ip'); 93 } 94 95 $this->load->model('localisation/order_status'); 96 97 $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); 98 99 if (isset($this->request->post['fraud_fraudlabspro_status'])) { 100 $data['fraud_fraudlabspro_status'] = $this->request->post['fraud_fraudlabspro_status']; 101 } else { 102 $data['fraud_fraudlabspro_status'] = $this->config->get('fraud_fraudlabspro_status'); 103 } 104 105 $data['header'] = $this->load->controller('common/header'); 106 $data['column_left'] = $this->load->controller('common/column_left'); 107 $data['footer'] = $this->load->controller('common/footer'); 108 109 $this->response->setOutput($this->load->view('extension/fraud/fraudlabspro', $data)); 110 } 111 112 public function install() { 113 $this->load->model('extension/fraud/fraudlabspro'); 114 115 $this->model_extension_fraud_fraudlabspro->install(); 116 } 117 118 public function uninstall() { 119 $this->load->model('extension/fraud/fraudlabspro'); 120 121 $this->model_extension_fraud_fraudlabspro->uninstall(); 122 } 123 124 protected function validate() { 125 if (!$this->user->hasPermission('modify', 'extension/fraud/fraudlabspro')) { 126 $this->error['warning'] = $this->language->get('error_permission'); 127 } 128 129 if (!$this->request->post['fraud_fraudlabspro_key']) { 130 $this->error['key'] = $this->language->get('error_key'); 131 } 132 133 return !$this->error; 134 } 135 136 public function order() { 137 $this->load->language('extension/fraud/fraudlabspro'); 138 139 $this->load->model('extension/fraud/fraudlabspro'); 140 141 // Action of the Approve/Reject button click 142 if (isset($_POST['flp_id'])){ 143 $flp_status = $_POST['new_status']; 144 $data['flp_status'] = $flp_status; 145 146 //Feedback FLP status to server 147 $fraud_fraudlabspro_key = $this->config->get('fraud_fraudlabspro_key'); 148 149 for($i=0; $i<3; $i++){ 150 $result = @file_get_contents('https://api.fraudlabspro.com/v1/order/feedback?key=' . $fraud_fraudlabspro_key . '&format=json&id=' . $_POST['flp_id'] . '&action=' . $flp_status); 151 152 if($result) break; 153 } 154 155 // Update fraud status into table 156 $this->db->query("UPDATE `" . DB_PREFIX . "fraudlabspro` SET fraudlabspro_status = '" . $this->db->escape($flp_status) . "' WHERE order_id = " . $this->db->escape($this->request->get['order_id'])); 157 158 //Update history record 159 if (strtolower($flp_status) == 'approve'){ 160 $data_temp = array( 161 'order_status_id'=>$this->config->get('fraud_fraudlabspro_approve_status_id'), 162 'notify'=>0, 163 'comment'=>'Approved using FraudLabs Pro.' 164 ); 165 166 $this->model_extension_fraud_fraudlabspro->addOrderHistory($this->request->get['order_id'], $data_temp); 167 } 168 else if (strtolower($flp_status) == "reject"){ 169 $data_temp = array( 170 'order_status_id'=>$this->config->get('fraud_fraudlabspro_reject_status_id'), 171 'notify'=>0, 172 'comment'=>'Rejected using FraudLabs Pro.' 173 ); 174 175 $this->model_extension_fraud_fraudlabspro->addOrderHistory($this->request->get['order_id'], $data_temp); 176 } 177 } 178 179 if (isset($this->request->get['order_id'])) { 180 $order_id = $this->request->get['order_id']; 181 } else { 182 $order_id = 0; 183 } 184 185 $fraud_info = $this->model_extension_fraud_fraudlabspro->getOrder($order_id); 186 187 if ($fraud_info) { 188 if ($fraud_info['ip_address']) { 189 $data['flp_ip_address'] = $fraud_info['ip_address']; 190 } else { 191 $data['flp_ip_address'] = ''; 192 } 193 194 if ($fraud_info['ip_netspeed']) { 195 $data['flp_ip_net_speed'] = $fraud_info['ip_netspeed']; 196 } else { 197 $data['flp_ip_net_speed'] = ''; 198 } 199 200 if ($fraud_info['ip_isp_name']) { 201 $data['flp_ip_isp_name'] = $fraud_info['ip_isp_name']; 202 } else { 203 $data['flp_ip_isp_name'] = ''; 204 } 205 206 if ($fraud_info['ip_usage_type']) { 207 $data['flp_ip_usage_type'] = $fraud_info['ip_usage_type']; 208 } else { 209 $data['flp_ip_usage_type'] = ''; 210 } 211 212 if ($fraud_info['ip_domain']) { 213 $data['flp_ip_domain'] = $fraud_info['ip_domain']; 214 } else { 215 $data['flp_ip_domain'] = ''; 216 } 217 218 if ($fraud_info['ip_timezone']) { 219 $data['flp_ip_time_zone'] = $fraud_info['ip_timezone']; 220 } else { 221 $data['flp_ip_time_zone'] = ''; 222 } 223 224 if ($fraud_info['ip_country']) { 225 $data['flp_ip_location'] = $this->fix_case($fraud_info['ip_continent']) . ", " . $fraud_info['ip_country'] . ", " . $fraud_info['ip_region'] . ", " . $fraud_info['ip_city'] . " <a href=\"http://www.geolocation.com/" . $fraud_info['ip_address'] . "\" target=\"_blank\">[Map]</a>"; 226 } else { 227 $data['flp_ip_location'] = '-'; 228 } 229 230 if ($fraud_info['distance_in_mile'] != '-') { 231 $data['flp_ip_distance'] = $fraud_info['distance_in_mile'] . " miles"; 232 } else { 233 $data['flp_ip_distance'] = ''; 234 } 235 236 if ($fraud_info['ip_latitude']) { 237 $data['flp_ip_latitude'] = $fraud_info['ip_latitude']; 238 } else { 239 $data['flp_ip_latitude'] = ''; 240 } 241 242 if ($fraud_info['ip_longitude']) { 243 $data['flp_ip_longitude'] = $fraud_info['ip_longitude']; 244 } else { 245 $data['flp_ip_longitude'] = ''; 246 } 247 248 if ($fraud_info['is_high_risk_country']) { 249 $data['flp_risk_country'] = $fraud_info['is_high_risk_country']; 250 } else { 251 $data['flp_risk_country'] = ''; 252 } 253 254 if ($fraud_info['is_free_email']) { 255 $data['flp_free_email'] = $fraud_info['is_free_email']; 256 } else { 257 $data['flp_free_email'] = ''; 258 } 259 260 if ($fraud_info['is_address_ship_forward']) { 261 $data['flp_ship_forward'] = $fraud_info['is_address_ship_forward']; 262 } else { 263 $data['flp_ship_forward'] = ''; 264 } 265 266 if ($fraud_info['is_proxy_ip_address']) { 267 $data['flp_using_proxy'] = $fraud_info['is_proxy_ip_address']; 268 } else { 269 $data['flp_using_proxy'] = ''; 270 } 271 272 if ($fraud_info['is_bin_found']) { 273 $data['flp_bin_found'] = $fraud_info['is_bin_found']; 274 } else { 275 $data['flp_bin_found'] = ''; 276 } 277 278 if ($fraud_info['is_email_blacklist']) { 279 $data['flp_email_blacklist'] = $fraud_info['is_email_blacklist']; 280 } else { 281 $data['flp_email_blacklist'] = ''; 282 } 283 284 if ($fraud_info['is_credit_card_blacklist']) { 285 $data['flp_credit_card_blacklist'] = $fraud_info['is_credit_card_blacklist']; 286 } else { 287 $data['flp_credit_card_blacklist'] = ''; 288 } 289 290 if ($fraud_info['fraudlabspro_score']) { 291 $data['flp_score'] = $fraud_info['fraudlabspro_score']; 292 } else { 293 $data['flp_score'] = ''; 294 } 295 296 if ($fraud_info['fraudlabspro_status']) { 297 $data['flp_status'] = $fraud_info['fraudlabspro_status']; 298 } else { 299 $data['flp_status'] = ''; 300 } 301 302 if ($fraud_info['fraudlabspro_message']) { 303 $data['flp_message'] = $fraud_info['fraudlabspro_message']; 304 } else { 305 $data['flp_message'] = ''; 306 } 307 308 if ($fraud_info['fraudlabspro_id']) { 309 $data['flp_id'] = $fraud_info['fraudlabspro_id']; 310 $data['flp_link'] = $fraud_info['fraudlabspro_id']; 311 } else { 312 $data['flp_id'] = ''; 313 $data['flp_link'] = ''; 314 } 315 316 if ($fraud_info['fraudlabspro_credits']) { 317 $data['flp_credits'] = $fraud_info['fraudlabspro_credits']; 318 } else { 319 $data['flp_credits'] = ''; 320 } 321 322 return $this->load->view('extension/fraud/fraudlabspro_info', $data); 323 } 324 } 325 326 private function fix_case($s) { 327 $s = ucwords(strtolower($s)); 328 $s = preg_replace_callback("/( [ a-zA-Z]{1}')([a-zA-Z0-9]{1})/s", create_function('$matches', 'return $matches[1].strtoupper($matches[2]);'), $s); 329 return $s; 330 } 331 }