123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- /**
- * Basic SmartUP interconnection class
- */
- class SmartUP {
- /**
- * Contains system alter.ini config as key=>value
- *
- * @var arrays
- */
- protected $altCfg = array();
- /**
- * Contains all available users data as login=>data
- *
- * @var array
- */
- protected $allUserData = array();
- /**
- * Contains all available paymentIDs as login=>paymentID
- *
- * @var array
- */
- protected $allPaymenIds = array();
- /**
- * Using of cached data flag.
- *
- * @var bool
- */
- protected $useCaching = true;
- /**
- * System caching abstraction layer placeholder
- *
- * @var object
- */
- protected $cache = '';
- /**
- * Default caching timeout. May be configurable in future.
- *
- * @var int
- */
- protected $cacheTimeout = 86400;
- /**
- * Storage keys etc.
- */
- const PAYID_KEY = 'SMARTUP_PAYIDS';
- const USERDATA_KEY = 'SMARTUP_USERDATA';
- /**
- * Creates some magic instance
- */
- public function __construct() {
- $this->loadConfig();
- $this->initCache();
- $this->loadUserData();
- $this->loadPaymenIds();
- }
- /**
- * Loads required configs and sets some options
- *
- * @global object $ubillingConfig
- *
- * @return void
- */
- protected function loadConfig() {
- global $ubillingConfig;
- $this->altCfg = $ubillingConfig->getAlter();
- $this->useCaching = (@$this->altCfg['SMARTUP_NOCACHE']) ? false : true;
- }
- /**
- * Loads all required by SmartUp users data from database
- *
- * @return array
- */
- protected function getAllUserData() {
- $result = array();
- $query = "SELECT `users`.`login`,`IP`, `realname`.`realname`, `Tariff`,`Cash` FROM `users` LEFT JOIN `realname` ON (`users`.`login`=`realname`.`login`)";
- $all = simple_queryall($query);
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $result[$each['login']] = $each;
- }
- }
- return($result);
- }
- /**
- * Loads all avilable users data from database into protected prop for further usage
- *
- * @return void
- */
- protected function loadUserData() {
- if ($this->useCaching) {
- $this->allUserData = $this->cache->get(self::USERDATA_KEY, $this->cacheTimeout);
- if (empty($this->allUserData)) {
- //cache update required
- $this->allUserData = $this->getAllUserData();
- $this->cache->set(self::USERDATA_KEY, $this->allUserData, $this->cacheTimeout);
- }
- } else {
- $this->allUserData = $this->getAllUserData();
- }
- }
- /**
- * Inits system caching object instance
- *
- * @return void
- */
- protected function initCache() {
- $this->cache = new UbillingCache();
- }
- /**
- * Loads payment IDs from database for further usage
- *
- * @return void
- */
- protected function loadPaymenIds() {
- $cachedPaymentIds = $this->cache->get(self::PAYID_KEY, $this->cacheTimeout);
- if (empty($cachedPaymentIds)) {
- $opCustomers = new NyanORM('op_customers');
- $payIdsTmp = $opCustomers->getAll();
- if (!empty($payIdsTmp)) {
- foreach ($payIdsTmp as $io => $each) {
- $this->allPaymenIds[$each['realid']] = $each['virtualid'];
- }
- }
- //store updated data to cache
- $this->cache->set(self::PAYID_KEY, $this->allPaymenIds, $this->cacheTimeout);
- } else {
- $this->allPaymenIds = $cachedPaymentIds;
- }
- }
- /**
- * Returns some login by assigned IP
- *
- * @param string $ip
- *
- * @return string
- */
- protected function getUserByIp($ip) {
- $result = '';
- if (!empty($ip)) {
- if (!empty($this->allUserData)) {
- foreach ($this->allUserData as $io => $each) {
- if ($each['IP'] == $ip) {
- $result .= $each['login'];
- break;
- }
- }
- }
- }
- return($result);
- }
- /**
- * Returns reply for user and tariff existense
- *
- * @param string $ip
- *
- * @return array
- */
- public function getAuthByIP($ip) {
- $result = array();
- $userLogin = $this->getUserByIp($ip);
- if (!empty($userLogin)) {
- $result = array(
- 'login' => $userLogin,
- 'tp' => $this->allUserData[$userLogin]['Tariff']
- );
- } else {
- //no user with such IP assigned
- $result = array(
- 'error' => 'user not exists'
- );
- }
- return($result);
- }
- /**
- * Returns some data by user login
- *
- * @param string $login
- *
- * @return array
- */
- public function getUserInfo($login) {
- $result = array();
- if (isset($this->allUserData[$login])) {
- $userData = $this->allUserData[$login]; //fuck memory economy lol :P
- $result = array(
- 'fio' => $userData['realname'],
- 'balance' => $userData['Cash'],
- 'tariff' => $userData['Tariff'],
- 'account' => @$this->allPaymenIds[$login]
- );
- } else {
- $result = array(
- 'error' => __('User not exists')
- );
- }
- return($result);
- }
- /**
- * Renders data array as JSON encoded string
- *
- * @param array $data
- *
- * @return void
- */
- public function renderReply($data) {
- $json = json_encode($data);
- die($json);
- }
- }
|