Source of file api.friendship.php
Size: 8,373 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.friendship.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 | <?php /** * Referal like bonus program for users */ class FriendshipIsMagic { /** * All of available user relations as friend=>parent * * @var array */ protected $allFriends = array(); /** * System alter.ini config stored as array key=>value * * @var array */ protected $altCfg = array(); /** * Contains all available users as login=>data * * @var array */ protected $allUsers = array(); /** * Contains raw payments array * * @var array */ protected $rawPayments = array(); /** * Friendship payment percent * * @var int */ protected $percent = 0; /** * Payment type for friendship payments * * @var int */ protected $payid = 1; public function __construct() { $this->loadAltCfg(); $this->setPercent(); $this->setPayid(); $this->loadUsers(); $this->loadFriends(); } /** * Loads system alter config * * @global object $ubillingConfig * * @return void */ protected function loadAltCfg() { global $ubillingConfig; $this->altCfg = $ubillingConfig->getAlter(); } /** * Sets payments percent for further usage * * @return void */ protected function setPercent() { $this->percent = $this->altCfg['FRIENDSHIP_PERCENT']; } /** * Sets payments cashtype * * @return void */ protected function setPayid() { $this->payid = $this->altCfg['FRIENDSHIP_CASHTYPEID']; } /** * Loads all of existing friends relations from database to protected property * * @return void */ protected function loadFriends() { $query = "SELECT * from `friendship`"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $this->allFriends[$each['friend']] = $each['parent']; } } } /** * Loads all of existing users from database to protected property * * @return void */ protected function loadUsers() { $all = zb_UserGetAllStargazerData(); if (!empty($all)) { foreach ($all as $io => $each) { $this->allUsers[$each['login']] = $each; } } } /** * Checks is user allowed to set as someone friend * * @param string $login * * @return bool */ protected function isFriendable($login) { $result = true; if (isset($this->allFriends[$login])) { $result = false; } return ($result); } /** * Creates friend-parent relationship as database record * * @param string $login * @param string $parentLogin * * @return void */ public function createFriend($login, $parentLogin) { $loginF = mysql_real_escape_string($login); $parentLoginF = mysql_real_escape_string($parentLogin); if ($this->isFriendable($login)) { if (isset($this->allUsers[$login])) { if (isset($this->allUsers[$parentLogin])) { $query = "INSERT INTO `friendship` (`id`, `friend`, `parent`) VALUES (NULL, '" . $loginF . "', '" . $parentLoginF . "'); "; nr_query($query); log_register('FRIENDSHIP CREATE `' . $login . '` PARENT `' . $parentLogin . '`'); } else { log_register('FRIENDSHIP CREATE FAIL `' . $login . '` NOT_EXISTS_PARENT'); } } else { log_register('FRIENDSHIP CREATE FAIL `' . $login . '` NOT_EXISTS'); } } else { log_register('FRIENDSHIP CREATE FAIL `' . $login . '` BUSY'); } } /** * Removes login from friendship relations * * @param string $login * * @return void */ public function deleteFriend($login) { $loginF = mysql_real_escape_string($login); if (isset($this->allFriends[$login])) { $query = "DELETE from `friendship` WHERE `friend`='" . $loginF . "';"; nr_query($query); log_register('FRIENDSHIP DELETE `' . $login . '`'); } else { log_register('FRIENDSHIP DELETE FAIL `' . $login . '` NOT_EXISTS'); } } /** * Renders friendship creation form * * @param string $parentLogin * @return string */ public function renderCreateForm($parentLogin) { $inputs = wf_HiddenInput('newparentlogin', $parentLogin); $inputs.= wf_TextInput('newfriendlogin', __('Login'), '', false, '15'); $inputs.= wf_Submit(__('Create')); $result = wf_Form('', 'POST', $inputs, 'glamour'); return ($result); } /** * Renders list of associated friend users for some parent login * * @param string $parentLogin * * @return string */ public function renderFriendsList($parentLogin) { $result = ''; $allRealnames = zb_UserGetAllRealnames(); $allAddress = zb_AddressGetFulladdresslistCached(); $messages = new UbillingMessageHelper(); $friendCount = 0; if (!empty($this->allFriends)) { $cells = wf_TableCell(__('Login')); $cells.= wf_TableCell(__('Real Name')); $cells.= wf_TableCell(__('Full address')); $cells.= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); foreach ($this->allFriends as $friendLogin => $parent) { if ($parent == $parentLogin) { $cells = wf_TableCell(wf_Link('?module=userprofile&username=' . $friendLogin, web_profile_icon() . ' ' . $friendLogin)); $cells.= wf_TableCell(@$allRealnames[$friendLogin]); $cells.= wf_TableCell(@$allAddress[$friendLogin]); $actLinks = wf_JSAlert('?module=pl_friendship&username=' . $parentLogin . '&deletefriend=' . $friendLogin, web_delete_icon(), $messages->getDeleteAlert()); $cells.= wf_TableCell($actLinks); $rows.= wf_TableRow($cells, 'row2'); $friendCount++; } } if ($friendCount > 0) { $result = wf_TableBody($rows, '100%', 0, 'sortable'); $result.= __('Total').': '.$friendCount; } else { $result = $messages->getStyledMessage(__('Nothing found'), 'info'); } } else { $result = $messages->getStyledMessage(__('Nothing found'), 'info'); } return ($result); } /** Подумай кто твои друзья в этом мире С кем судьба свела тебя не зря, и мир стал шире С кем за горизонт готов идти ради света Кто поможет вовремя найти все ответы */ /** * Loads yesterday payments * * @return void */ protected function loadDailyPayments() { $curdate = curdate(); $query = "SELECT * from `payments` WHERE DATE(`date`) = (CURDATE() - INTERVAL 1 DAY)"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $this->rawPayments[$each['id']] = $each; } } } /** * Performs friends yesterday payments processing * * @return void */ public function friendsDailyProcessing() { $this->loadDailyPayments(); if (!empty($this->rawPayments)) { foreach ($this->rawPayments as $paymentId => $eachPayment) { if (isset($this->allFriends[$eachPayment['login']])) { $friendLogin = $eachPayment['login']; $parentLogin = $this->allFriends[$eachPayment['login']]; $originalSum = $eachPayment['summ']; $percent = zb_Percent($originalSum, $this->percent); zb_CashAdd($parentLogin, $percent, 'add', $this->payid, 'FRIENDSHIP:' . $eachPayment['id']); } } } } } ?> |