public static function checkChangeLevel($referrerid, $newtotal) { $app = JFactory::getApplication(); $db = JFactory::getDBO(); $ok = 0; $lang = JFactory::getLanguage(); $lang->load('com_alphauserpoints', JPATH_SITE); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'tables'); $resultChangeLevel1 = AlphaUserPointsHelper::checkRuleEnabled('sysplgaup_changelevel1', 0, $referrerid); $resultChangeLevel2 = AlphaUserPointsHelper::checkRuleEnabled('sysplgaup_changelevel2', 0, $referrerid); $resultChangeLevel3 = AlphaUserPointsHelper::checkRuleEnabled('sysplgaup_changelevel3', 0, $referrerid); if ($resultChangeLevel1) { $checkAlreadyDone1 = explode(',', $resultChangeLevel1[0]->exclude_items); } if ($resultChangeLevel2) { $checkAlreadyDone2 = explode(',', $resultChangeLevel2[0]->exclude_items); } if ($resultChangeLevel3) { $checkAlreadyDone3 = explode(',', $resultChangeLevel3[0]->exclude_items); } $userid = AlphaUserPointsHelper::getUserID($referrerid); // get actual group fot this user jimport('joomla.user.helper'); $authorizedLevels = JAccess::getAuthorisedViewLevels($userid); $result = array_keys(JUserHelper::getUserGroups($userid)); $actualgroup = end($result); if ($resultChangeLevel1 && $newtotal >= $resultChangeLevel1[0]->points2 && !in_array(intval($resultChangeLevel1[0]->content_items), $authorizedLevels) && !in_array($userid, $checkAlreadyDone1)) { // delete old group $query = "DELETE FROM `#__user_usergroup_map` WHERE `user_id`='{$userid}'"; $db->setQuery($query); $db->query(); JUserHelper::addUserToGroup($userid, intval($resultChangeLevel1[0]->content_items)); $user = JUser::getInstance((int) $userid); $ok = 1; $resultChangeLevel = $resultChangeLevel1; $result = JUserHelper::getUserGroups($userid); $actualnamegroup = end($result); // insert done for this user in this rule if ($resultChangeLevel1[0]->exclude_items != '') { $insertUserId = $resultChangeLevel1[0]->exclude_items . ',' . $userid; } else { $insertUserId = $userid; } $row = JTable::getInstance('rules'); $row->load(intval($resultChangeLevel1[0]->id)); $row->exclude_items = $insertUserId; $db->updateObject('#__alpha_userpoints_rules', $row, 'id'); } if ($resultChangeLevel2 && $newtotal >= $resultChangeLevel2[0]->points2 && !in_array(intval($resultChangeLevel2[0]->content_items), $authorizedLevels) && !in_array($userid, $checkAlreadyDone2)) { $query = "DELETE FROM `#__user_usergroup_map` WHERE `user_id`='{$userid}'"; $db->setQuery($query); $db->query(); JUserHelper::addUserToGroup($userid, intval($resultChangeLevel2[0]->content_items)); $user = JUser::getInstance((int) $userid); $ok = 1; $resultChangeLevel = $resultChangeLevel2; $result = JUserHelper::getUserGroups($userid); $actualnamegroup = end($result); $row = JTable::getInstance('rules'); $row->load(intval($resultChangeLevel2[0]->id)); $row->exclude_items = $insertUserId; $db->updateObject('#__alpha_userpoints_rules', $row, 'id'); } if ($resultChangeLevel3 && $newtotal >= $resultChangeLevel3[0]->points2 && !in_array(intval($resultChangeLevel3[0]->content_items), $authorizedLevels) && !in_array($userid, $checkAlreadyDone3)) { $query = "DELETE FROM `#__user_usergroup_map` WHERE `user_id`='{$userid}'"; $db->setQuery($query); $db->query(); JUserHelper::addUserToGroup($userid, intval($resultChangeLevel3[0]->content_items)); $user = JUser::getInstance((int) $userid); $ok = 1; $resultChangeLevel = $resultChangeLevel3; $result = JUserHelper::getUserGroups($userid); $actualnamegroup = end($result); $row = JTable::getInstance('rules'); $row->load(intval($resultChangeLevel3[0]->id)); $row->exclude_items = $insertUserId; $db->updateObject('#__alpha_userpoints_rules', $row, 'id'); } if ($ok) { // refresh session if user online $temp = JFactory::getUser((int) $userid); $temp->groups = $user->groups; $temp = JFactory::getUser((int) $userid); if ($temp->id == $userid) { $temp->groups = $user->groups; } } // show message only for current user and if frontend site if ($referrerid == @$_SESSION['referrerid'] && $app->isSite() && $ok) { // display message for the current user if ($resultChangeLevel[0]->displaymsg && $resultChangeLevel[0]->msg != '') { $msg = str_replace('{username}', $user->username, $resultChangeLevel[0]->msg); $msg = str_replace('{points}', AlphaUserPointsHelper::getFPoints($resultChangeLevel[0]->points), $msg); $msg = str_replace('{newtotal}', AlphaUserPointsHelper::getFPoints($newtotal), $msg); AlphaUserPointsHelper::displayMessageSystem($msg); } elseif ($resultChangeLevel[0]->displaymsg && $resultChangeLevel[0]->msg == '') { AlphaUserPointsHelper::displayMessageSystem(sprintf(JText::_('AUP_MSG_YOUHAVENEWUSERRIGHTS'), AlphaUserPointsHelper::getFPoints($resultChangeLevel[0]->points2), $actualnamegroup)); } } if ($ok) { // insert this new activity in database $datareference = sprintf(JText::_('AUP_DESCRIPTIONACTIVITYONCHANGELEVEL'), AlphaUserPointsHelper::getFPoints($resultChangeLevel[0]->points2), $actualnamegroup); //AlphaUserPointsHelper::insertUserPoints( $referrerid, $resultChangeLevel[0], 0, '', $datareference ); //Send notification if ($resultChangeLevel[0]->notification) { AlphaUserPointsHelper::sendnotification($referrerid, $resultChangeLevel[0]->points2, $newtotal, $resultChangeLevel[0]); // load external plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('alphauserpoints'); $rule_name = JText::_($resultChangeLevel[0]->rule_name); $results = $dispatcher->trigger('onSendNotificationAlphaUserPoints', array(&$resultChangeLevel[0], $rule_name, $resultChangeLevel[0]->points2, $newtotal, $referrerid, $userid)); } // load external plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('alphauserpoints'); $results = $dispatcher->trigger('onChangeLevelAlphaUserPoints', array(&$resultChangeLevel[0], $actualnamegroup, $userid, $referrerid)); } }
public function onUserAfterSave($user, $isnew, $succes, $msg) { if ($isnew) { $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $lang->load('com_alphauserpoints', JPATH_SITE); $jnow = JFactory::getDate(); $now = $jnow->toSql(); require_once JPATH_SITE . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'helper.php'; // get params definitions $params = JComponentHelper::getParams('com_alphauserpoints'); $prefixSelfRegister = $params->get('prefix_selfregister'); $prefixReferralRegister = $params->get('prefix_referralregister'); $referrerid = trim(@$_SESSION['referrerid']); unset($_SESSION['referrerid']); $db = JFactory::getDBO(); $query = "SELECT * FROM #__alpha_userpoints_rules WHERE `plugin_function`='sysplgaup_newregistered' AND `published`='1'"; $db->setQuery($query); $result = $db->loadObjectList(); $prefixNewReferreid = $referrerid != '' ? strtoupper($prefixReferralRegister) : strtoupper($prefixSelfRegister); // if rule enabled if ($result) { if (!$params->get('referralIDtype')) { $newreferreid = strtoupper(uniqid($prefixNewReferreid, false)); } else { $newreferreid = $prefixNewReferreid . strtoupper($user['username']); $newreferreid = str_replace(' ', '-', $newreferreid); $newreferreid = str_replace(',', '-', $newreferreid); $newreferreid = str_replace("'", "-", $newreferreid); } JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_alphauserpoints' . DS . 'tables'); $row = JTable::getInstance('userspoints'); // insert this new user into alphauserpoints table $row->id = NULL; $row->userid = $user['id']; $row->referreid = $newreferreid; $row->points = $result[0]->points; $row->max_points = 0; $row->last_update = $now; $row->referraluser = $referrerid; $row->published = 1; $row->shareinfos = 1; if (isset($user['profile']) && count($user['profile'])) { foreach ($user['profile'] as $k => $v) { $value = str_replace('"', '', $v); $row = $this->checkProfileField($k, $row, $value); } } if (!$row->store()) { JError::raiseError(500, $row->getError()); } // save new points into alphauserpoints table details $row2 = JTable::getInstance('userspointsdetails'); $row2->id = NULL; $row2->referreid = $newreferreid; $row2->points = $result[0]->points; $row2->insert_date = $now; $row2->expire_date = $result[0]->rule_expire; $row2->status = $result[0]->autoapproved; $row2->rule = $result[0]->id; $row2->approved = $result[0]->autoapproved; $row2->datareference = JText::_('AUP_WELCOME'); if (!$row2->store()) { JError::raiseError(500, $row2->getError()); } // frontend message if ($result[0]->displaymsg) { $msg = str_replace('{username}', $user['username'], $result[0]->msg); if ($msg != '') { $app->enqueueMessage(str_replace('{points}', AlphaUserPointsHelper::getFPoints($result[0]->points), JText::_($msg))); } else { $app->enqueueMessage(sprintf(JText::_('AUP_CONGRATULATION'), $result[0]->points)); } } // send notification if ($result[0]->notification) { AlphaUserPointsHelper::sendnotification($newreferreid, $result[0]->points, $result[0]->points, $result[0], 1); } if ($referrerid) { $data = htmlspecialchars($user['name'], ENT_QUOTES, 'UTF-8') . " (" . $user['username'] . ") "; $data = sprintf(JText::_('AUP_X_HASJOINEDTHEWEBSITE'), $data); $this->sysplgaup_invitewithsuccess($referrerid, $data); } return true; } else { return false; } } }