function Recalc($start, $tempsExec) { global $mainframe; global $base; // check time execute list($usec, $sec) = explode(' ', microtime()); $start_time = (double) $usec + (double) $sec; $new_time = $start_time; $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = $jnow->toSql(); // get params definitions $params = JComponentHelper::getParams('com_alphauserpoints'); $prefixNewReferreid = strtoupper($params->get('prefix_selfregister')); //$prefixNewReferreid = "AUPRS-"; if ($start) { $i = $start; } else { $i = 0; } $query = "SELECT referreid FROM #__alpha_userpoints WHERE referreid!='GUEST'"; $db->setQuery($query); $users = $db->loadObjectList(); $numusers = count($users); if ($users) { require_once JPATH_SITE . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'helper.php'; $allowNegativeAccount = $params->get('allowNegativeAccount', 0); for ($i, $n = $numusers; $i < $n; $i++) { if ($new_time - $start_time < $tempsExec) { $user = $users[$i]; // real sum for each user $query = "SELECT SUM(points) FROM #__alpha_userpoints_details WHERE `referreid`='" . $user->referreid . "' AND `approved`='1' AND (`expire_date`>'{$now}' OR `expire_date`='0000-00-00 00:00:00')"; $db->setQuery($query); $newtotal = $db->loadResult(); if (!$allowNegativeAccount && $newtotal < 0) { $newtotal = 0; } $query = "UPDATE #__alpha_userpoints SET `points`='" . $newtotal . "', `last_update`='{$now}' WHERE `referreid`='" . $user->referreid . "'"; $db->setQuery($query); if (!$db->query()) { $error = 'ERROR : update not complete'; echo '<script language="Javascript"> <!-- parent.document.location.replace("' . $base . 'index.php?option=com_alphauserpoints&task=cpanel&recalculate=' . $error . '"); // --> </script>'; exit; } // update Ranks / Medals if necessary AlphaUserPointsHelper::checkRankMedal($user->referreid); } else { // time ? break; } list($usec, $sec) = explode(" ", microtime()); $new_time = (double) $usec + (double) $sec; } // for $i= if ($i == $numusers) { $start = -1; } else { $start = $i; } return $start; } // if users }
function checkNewTotal($referreid, $rule_id) { $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = $jnow->toSql(); require_once JPATH_SITE . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'helper.php'; // recalculate for this user $query = "SELECT SUM(points) FROM #__alpha_userpoints_details WHERE `referreid`='" . $referreid . "' AND `approved`='1' AND (`expire_date`>'{$now}' OR `expire_date`='0000-00-00 00:00:00')"; $db->setQuery($query); $newtotal = $db->loadResult(); $query = "UPDATE #__alpha_userpoints SET `points`='" . $newtotal . "', `last_update`='{$now}' WHERE `referreid`='" . $referreid . "'"; $db->setQuery($query); $db->query(); // update Ranks / Medals if necessary AlphaUserPointsHelper::checkRankMedal($referreid, $rule_id); }
public static function updateUserPoints($result, $referrerid, $assignpoints, $now, $referraluserpoints, $autoapproved, $rule_plugin = '', $rule_id = '', $rule_name = '', $datareference = '', $frontmessage = '') { $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $lang->load('com_alphauserpoints', JPATH_SITE); $user = JFactory::getUser(); $username = $user->id ? $user->username : ''; $displaymsg = $result->displaymsg; $msg = str_replace('{username}', $username, $result->msg); $method = $result->method; $db = JFactory::getDBO(); // get params definitions $params = JComponentHelper::getParams('com_alphauserpoints'); $query = "SELECT id FROM #__alpha_userpoints WHERE `referreid`='{$referrerid}'"; $db->setQuery($query); $referrerUser = $db->loadResult(); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'tables'); $row = JTable::getInstance('userspoints'); // update points into alpha_userpoints table $row->load(intval($referrerUser)); $referraluser = $row->referraluser; $newtotal = !$referraluserpoints ? $row->points + $assignpoints : $row->points + $referraluserpoints; $row->last_update = $now; $checkWinner = 0; if ($row->max_points >= 1 && $newtotal > $row->max_points) { // Max total was reached ! //$newtotal = $row->max_points; if (AlphaUserPointsHelper::checkRuleEnabled('sysplgaup_winnernotification', 0, $referrerid)) { // get email admins in rule $query = "SELECT `content_items` FROM #__alpha_userpoints_rules WHERE `plugin_function`='sysplgaup_winnernotification'"; $db->setQuery($query); $emailadmins = $db->loadResult(); if ($autoapproved || $referraluserpoints) { AlphaUserPointsHelper::sendwinnernotification($referrerid, $assignpoints, $newtotal, $emailadmins); // Uddeim notification integration if ($params->get('sendMsgUddeim', 0)) { AlphaUserPointsHelper::sendUddeimWinnerNotification($referrerid, $assignpoints, $newtotal); } $checkWinner = 1; } } } if ($autoapproved) { if ($rule_plugin == 'sysplgaup_invitewithsuccess') { $row->referrees = $row->referrees + 1; } $row->points = $newtotal; $db->updateObject('#__alpha_userpoints', $row, 'id'); } if ($displaymsg && !$referraluserpoints) { $realcurrentreferrerid = AlphaUserPointsHelper::getAnyUserReferreID($user->id); switch ($rule_plugin) { case 'sysplgaup_bonuspoints': case 'sysplgaup_recommend': case 'sysplgaup_reader2author': case 'sysplgaup_buypointswithpaypal': case 'sysplgaup_invite': // No need congratulation... break; case 'sysplgaup_invitewithsuccess': // number points in message = assign points to new user $numpoints = AlphaUserPointsHelper::getPointsRule('sysplgaup_newregistered'); if ($numpoints && $user->id) { if ($msg != '') { $msg = str_replace('{points}', AlphaUserPointsHelper::getFPoints($numpoints), JText::_($msg)); $msg = str_replace('{newtotal}', AlphaUserPointsHelper::getFPoints($newtotal), $msg); $app->enqueueMessage($msg); } else { $app->enqueueMessage(sprintf(JText::_('AUP_CONGRATULATION'), AlphaUserPointsHelper::getFPoints($numpoints))); } } break; default: if ($referrerid == $realcurrentreferrerid && $user->id) { if ($assignpoints > 0) { if ($msg != '') { $msg = str_replace('{points}', AlphaUserPointsHelper::getFPoints($assignpoints), JText::_($msg)); $msg = str_replace('{newtotal}', AlphaUserPointsHelper::getFPoints($newtotal), $msg); $app->enqueueMessage($msg); } else { $app->enqueueMessage(sprintf(JText::_('AUP_CONGRATULATION'), AlphaUserPointsHelper::getFPoints($assignpoints))); if ($rule_plugin == 'sysplgaup_happybirthday') { $frontmessage = JText::_('AUP_HAPPYBIRTHDAY'); } } } elseif ($assignpoints < 0) { if ($msg != '') { $msg = str_replace('{points}', AlphaUserPointsHelper::getFPoints(abs($assignpoints)), JText::_($msg)); $msg = str_replace('{newtotal}', AlphaUserPointsHelper::getFPoints($newtotal), $msg); $app->enqueueMessage($msg); } else { $app->enqueueMessage(sprintf(JText::_('AUP_X_POINTS_HAS_BEEN_DEDUCTED_FROM_YOUR_ACCOUNT'), AlphaUserPointsHelper::getFPoints(abs($assignpoints)))); } } } } } if ($rule_plugin == 'sysplgaup_custom' && $datareference) { $rule_name = JText::_($datareference); } // email notification if ($result->notification && !$checkWinner) { $result->datareference = JText::_($datareference); AlphaUserPointsHelper::sendnotification($referrerid, $assignpoints, $newtotal, $result); // load external plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('alphauserpoints'); $results = $dispatcher->trigger('onSendNotificationAlphaUserPoints', array(&$result, $rule_name, $assignpoints, $newtotal, $referrerid, $user->id)); } // Uddeim notification integration if ($params->get('sendMsgUddeim', 0) && !$checkWinner) { AlphaUserPointsHelper::sendUddeimNotification($referrerid, $assignpoints, $newtotal, $rule_name); } // load external plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('alphauserpoints'); $results = $dispatcher->trigger('onUpdateAlphaUserPoints', array(&$result, $rule_name, $assignpoints, $referrerid, $user->id)); // checking rank and medals and update if necessary if ($rule_id == '') { $rule_id = AlphaUserPointsHelper::getRuleID($rule_plugin); } AlphaUserPointsHelper::checkRankMedal($referrerid, $rule_id); // referral points rule if ($referraluser != '' && $rule_plugin != 'sysplgaup_buypointswithpaypal' && $rule_plugin != 'sysplgaup_raffle' && $assignpoints > 0) { // if not already assigned $query = "SELECT * FROM #__alpha_userpoints_rules WHERE `plugin_function`='sysplgaup_referralpoints' AND `published`='1' AND (`rule_expire`>'{$now}' OR `rule_expire`='0000-00-00 00:00:00')"; $db->setQuery($query); $referralpoints = $db->loadObjectList(); if ($referralpoints) { $referraluserpoints = round($assignpoints * $referralpoints[0]->points / 100, 2); if ($referraluserpoints > 0) { AlphaUserPointsHelper::userpoints('sysplgaup_referralpoints', $referraluser, $referraluserpoints); } } } // check change user group rule //if ( $rule_plugin!='sysplgaup_changelevel1' && $rule_plugin!='sysplgaup_changelevel2' && $rule_plugin!='sysplgaup_changelevel3' ) //{ AlphaUserPointsHelper::checkChangeLevel($referrerid, AlphaUserPointsHelper::getCurrentTotalPoints($referrerid)); //} if ($frontmessage != '') { AlphaUserPointsHelper::displayMessageSystem($frontmessage); } // load external plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('alphauserpoints'); $results = $dispatcher->trigger('onAfterUpdateAlphaUserPoints', array(&$result, $rule_name, $assignpoints, $referrerid, $user->id)); // link up rule if ($result->linkup) { $plugin_function_linkup = AlphaUserPointsHelper::getPluginFunction($result->linkup); AlphaUserPointsHelper::newpoints($plugin_function_linkup, $referrerid); } }
public function savecustompoints() { // specific user $app = JFactory::getApplication(); $referrerid = JFactory::getApplication()->input->get('cid', '', 'string'); $name = JFactory::getApplication()->input->get('name', '', 'string'); $points = JFactory::getApplication()->input->get('points', 0, 'float'); $reason = JFactory::getApplication()->input->get('reason', '', 'SAFE_HTML '); if ($referrerid) { require_once JPATH_SITE . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'helper.php'; AlphaUserPointsHelper::userpoints('sysplgaup_custom', $referrerid, 0, '', $reason, $points); AlphaUserPointsHelper::checkRankMedal($referrerid); } $this->setRedirect('index.php?option=com_alphauserpoints&task=showdetails&cid=' . $referrerid . '&name=' . $name); $this->redirect(); }