Viewing file: Rent.php (6.94 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Rent extends CI_Controller { public function getCountries() { $this->load->library('RentLibrary'); $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if (!$response = $this->cache->get('RENT_COUNTRIES')) { $response = $this->rentlibrary->getCountries(); $this->cache->save('RENT_COUNTRIES', $response, 60 * 60 * 24); }
$this->output->set_output(json_encode($response)); } public function getMessage($apiKey, $number_id){ $this->load->library('RentLibrary'); $this->load->model("api_model"); header('Content-Type: application/json');
$user = $this->api_model->getUserByApiKey($apiKey); if(isset($user["id"])) { $number = $this->api_model->db->get_where('rent_activations', array('id' => $number_id, 'user' => $user['id']))->result_array(); if (empty($number)){ exit; } $number = $number[0]; $mlist = []; $t = time(); if ($t < $number['end_time']){ $response = $this->rentlibrary->getStatus($number['number_id']); if ($response['status'] == 'success'){ foreach ($response['values'] as $i =>$val){ $mlist[] = [ 'from' => $val['phoneFrom'], 'message' => $val['text'], 'time' => strtotime($val['date']) ]; } $this->api_model->db->set('message', json_encode($mlist))->where('id', $number_id)->update('rent_activations');
} $number['message'] = $mlist;
} else { $mlist = json_decode($number['message']) !== null ? json_decode($number['message'], true) : []; } $number['message'] = $mlist; unset($number['user']); echo json_encode($number, JSON_UNESCAPED_UNICODE);
} }
public function getServicesByCountry($country, $time) {
$this->load->library('RentLibrary'); $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if (!$response = $this->cache->get("RENT_{$country}_{$time}")) { $response = $this->rentlibrary->getServicesByCountry($country, $time); $this->cache->save("RENT_{$country}_{$time}", $response, 60 * 30); }
$this->output->set_output(json_encode($response)); } public function buyNumber($apiKey, $service, $country, $time){ $this->load->model("api_model"); $user = $this->api_model->getUserByApiKey($apiKey); if(!isset($user["id"])) { echo json_encode([ 'status' => false, 'title' => 'API Key hatalı.', ]); exit; } $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file')); $this->load->library('RentLibrary');
if (!$services = $this->cache->get("RENT_{$country}_{$time}")) { $services = $this->rentlibrary->getServicesByCountry($country, $time); $this->cache->save("RENT_{$country}_{$time}", $services, 60 * 30); } $serv = []; foreach ($services as $ser){ if ($ser['id'] == $service){ $serv = $ser; break; } } if (empty($serv)){ echo json_encode([ 'status' => false, 'title' => 'Bilinmeyen servis.' ]); exit;
} if($user["balance"] < $serv["cost"]) { echo json_encode([ 'status' => false, 'title' => "Yetersiz bakiye." ]); exit;
} $response = $this->rentlibrary->buyNumber($service, $country, $time); if ($response['status']) { $this->api_model->db->set('balance', 'balance-'.$serv['cost'], FALSE)->where('id', $user['id'])->update('users'); $this->api_model->db->insert('rent_activations', array( 'number' => '+'.$response['result']['phone']['number'], 'number_id' => $response['result']['phone']['id'], 'service' => $serv['name'], 'message' => '', 'user' => $user['id'], 'start_time' => time(), 'end_time' => time() + ($time * 3600) )); $s_id = $this->api_model->db->insert_id(); $this->api_model->db->insert('rent_prices', [ 'number_id' => $response['result']['phone']['id'], 'price' => $serv['cost'] ]); } echo json_encode([ 'title' => $response['title'], 'status' => $response['status'] ]); exit; } public function cancelNumber($apiKey, $number_id){ $this->load->model("api_model"); $this->load->library('RentLibrary'); header('Content-Type: application/json');
$user = $this->api_model->getUserByApiKey($apiKey); if(!isset($user["id"])) { echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'API Key hatalı.' )); return; } $number = $this->api_model->db->get_where('rent_activations', array('number_id' => $number_id, 'user' => $user['id']))->result_array(); if (count($number) < 1) { echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'İlgili numara veritabanımızda bulunamadı.' )); return; } $number = $number[0]; if ($number['end_time'] < time()){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'İlgili numara iptal edilmiş veya süresi dolmuştur.' )); return; }
if ($number['message'] !== null && $number['message'] !== '' && !empty(json_decode($number['message']))){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'Numaraya mesaj geldikten sonra iptal edilemez.' )); return; } if ((time() - $number['start_time']) > 1200){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'Alış süresinden 20 dakika geçtikten sonra iptal edilemez.' )); return; } $response = $this->rentlibrary->cancelNumber($number_id); if ($response['status'] !== 'success'){ echo json_encode(array( 'success' => false, 'title' => 'Hata', 'message' => 'API Kaynaklı hata oluştu. Hata kodu: ' )); return; } $price = $this->api_model->db->get_where('rent_prices', array('number_id' => $number_id))->result_array(); if (count($price) > 0){ $price = floatval($price[0]['price']); $this->api_model->db->set('balance', floatval($user['balance']) + $price)->where('id', $user['id'])->update('users'); $this->api_model->db->set('end_time', time())->where('number_id', $number_id)->update('rent_activations'); } echo json_encode(array( 'success' => true, 'title' => 'Başarılı! ', 'message' => 'Numara iptali gerçekleşmiştir, ücretiniz hesabınıza geri yansıtıldı.' )); }
}
|