Blame | Last modification | View Log | RSS feed
<?php/**************************************************************************** Copyright (C) 2009-2011 by Geo Varghese(www.seopanel.in) ** sendtogeo@gmail.com ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the ** Free Software Foundation, Inc., ** 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ****************************************************************************/# class defines all user controller functionsclass UserController extends Controller{# index functionfunction index($info=''){if(!isset($info['referer'])) {$info['red_referer'] = isValidReferer($_SERVER['HTTP_REFERER']);$this->set('post', $info);}$this->render('common/login');}# function to set login session itemsfunction setLoginSession($userInfo) {@Session::setSession('userInfo', $userInfo);@Session::setSession('lang_code', $userInfo['lang_code']);@Session::setSession('text', '');}# login functionfunction login(){$_POST['userName'] = sanitizeData($_POST['userName']);$this->set('post', $_POST);$errMsg['userName'] = formatErrorMsg($this->validate->checkBlank($_POST['userName']));$errMsg['password'] = formatErrorMsg($this->validate->checkBlank($_POST['password']));if(!$this->validate->flagErr){$sql = "select u.*,ut.user_type from users u,usertypes ut where u.utype_id=ut.id and u.username='".addslashes($_POST['userName'])."'";$userInfo = $this->db->select($sql, true);if(!empty($userInfo['id'])){if($userInfo['password'] == md5($_POST['password'])){// get user type spec details and verify whether to check activation or not$activationStatus = true;$userTypeCtrler = new UserTypeController();if ($userTypeCtrler->isEmailActivationEnabledForUserType($userInfo['utype_id'])) {if ($userInfo['confirm'] == 0) {$activationStatus = false;}}// check for user status and activationif($userInfo['status'] && $activationStatus){// if login after first installationif (!empty($_POST['lang_code']) && ($_POST['lang_code'] != 'en')) {$_POST['lang_code'] = addslashes($_POST['lang_code']);$sql = "UPDATE `settings` SET set_val='".addslashes($_POST['lang_code'])."' WHERE set_name='SP_DEFAULTLANG'";$this->db->query($sql);$sql = "UPDATE users SET lang_code='".addslashes($_POST['lang_code'])."' WHERE id=1";$this->db->query($sql);$userInfo['lang_code'] = $_POST['lang_code'];}// update timezoneif (!empty($_POST['time_zone'])) {$sql = "UPDATE `settings` SET set_val='".addslashes($_POST['time_zone'])."' WHERE set_name='SP_TIME_ZONE'";$this->db->query($sql);}$uInfo['userId'] = $userInfo['id'];$uInfo['userType'] = $userInfo['user_type'];$uInfo['userTypeId'] = $userInfo['utype_id'];$uInfo['lang_code'] = $userInfo['lang_code'];$this->setLoginSession($uInfo);if ($referer = isValidReferer($_POST['red_referer'])) {redirectUrl($referer);} else {redirectUrl(SP_WEBPATH."/");}}else{$msgTxt = $activationStatus ? $_SESSION['text']['login']["User inactive"] : $_SESSION['text']['login']["user_not_activated_msg"];$errMsg['userName'] = formatErrorMsg($msgTxt);}}else{$errMsg['password'] = formatErrorMsg($_SESSION['text']['login']["Password incorrect"]);}}else{$errMsg['userName'] = formatErrorMsg($_SESSION['text']['login']["Login incorrect"]);}}$this->set('errMsg', $errMsg);$this->index($_POST);}# func to confirm the user registrationfunction confirmUser($confirmCode) {$confirmCode = addslashes($confirmCode);$sql = "select id from users where confirm_code='$confirmCode'";$userInfo = $this->db->select($sql, true);$error = "";if(!empty($userInfo['id'])){$sql = "update users set confirm=1,status=1 where id=".$userInfo['id'];if($this->db->query($sql)){$this->set('confirm', true);}else{$error = showErrorMsg($this->spTextRegister['user_confirm_content_1'], false, true);}} else {$error = showErrorMsg($this->spTextRegister['user_confirm_content_1'], false, true);}$this->set('error', $error);$this->render('common/registerconfirm');}# register functionfunction register($info = ""){$seopluginCtrler = new SeoPluginsController();$subscriptionActive = false;$utypeCtrler = new UserTypeController();$this->set('post', $info);// check whetehr plugin installed or notif ($seopluginCtrler->isPluginActive("Subscription")) {$subscriptionActive = true;$userTypeList = $utypeCtrler->getAllUserTypes();$this->set('userTypeList', $userTypeList);// include available payment gatewaysinclude SP_PLUGINPATH . "/Subscription/paymentgateway.ctrl.php";$pgCtrler = new PaymentGateway();$pgList = $pgCtrler->__getAllPaymentGateway();$this->set('pgList', $pgList);$this->set('defaultPgId', $pgCtrler->__getDefaultPaymentGateway());$this->set('spTextSubscription', $this->getLanguageTexts('subscription', $_SESSION['lang_code']));$currencyCtrler = new CurrencyController();$this->set('currencyList', $currencyCtrler->getCurrencyCodeMapList());} else {$this->set('defaultUserTypeId', $utypeCtrler->getDefaultUserTypeId());}$this->set('subscriptionActive', $subscriptionActive);$this->render('common/register');}# function to show pricingfunction showPricing(){$seopluginCtrler = new SeoPluginsController();$utypeCtrler = new UserTypeController();// check whetehr plugin installed or notif ($seopluginCtrler->isPluginActive("Subscription")) {$userSpecFields = $utypeCtrler->userSpecFields;$userTypeList = $utypeCtrler->getAllUserTypes();$list = array();foreach ($userTypeList as $userType) $list[$userType['id']] = $userType;$this->set('list', $list);$spTextSubscription = $this->getLanguageTexts('subscription', $_SESSION['lang_code']);$spTextTools = $this->getLanguageTexts('seotools', $_SESSION['lang_code']);$this->set('spTextSubscription', $spTextSubscription);// get all plugin access list$pluginAccessList = $utypeCtrler->getPluginAccessSettings();$pluginNameList = array();foreach ($pluginAccessList as $pluginAccessInfo) {if ($pluginAccessInfo['status'] == 0) continue;$pluginNameList[$pluginAccessInfo['name']] = $pluginAccessInfo['label'];}// get all seo tool access list$toolAccessList = $utypeCtrler->getSeoToolAccessSettings();$toolNameList = array();foreach ($toolAccessList as $toolAccessInfo) {if ($toolAccessInfo['status'] == 0) continue;$toolNameList[$toolAccessInfo['name']] = $spTextTools[$toolAccessInfo['url_section']];}$utypeSpecList = array();$spText = $_SESSION['text'];foreach ($userSpecFields as $specName) {if (in_array($specName, array('enable_email_activation'))) continue;if (stristr($specName, 'plugin_')) {if (empty($pluginNameList[$specName])) continue;$utypeSpecList[$specName] = $pluginNameList[$specName];continue;}if (stristr($specName, 'seotool_')) {if (empty($toolNameList[$specName])) continue;$utypeSpecList[$specName] = $toolNameList[$specName];continue;}switch ($specName) {case "price":$utypeSpecList[$specName] = $spText['common']['Price'];break;case "keywordcount":$utypeSpecList[$specName] = $spText['common']['Keywords Count'];break;case "websitecount":$utypeSpecList[$specName] = $spText['common']['Websites Count'];break;case "searchengine_count":$utypeSpecList[$specName] = $spText['common']['Search Engine Count'];break;case "directory_submit_limit":$utypeSpecList[$specName] = $spTextSubscription['Directory Submit Limit'];break;case "directory_submit_daily_limit":$utypeSpecList[$specName] = $spTextSubscription['Directory Submit Daily Limit'];break;case "social_media_link_count":$utypeSpecList[$specName] = $spTextSubscription['Social Media Link Count'];break;default:$utypeSpecList[$specName] = $spTextSubscription[$specName];}}$this->set('utypeSpecList', $utypeSpecList);$currencyCtrler = new CurrencyController();$this->set('currencyList', $currencyCtrler->getCurrencyCodeMapList());$this->render('common/pricing');} else {redirectUrl(SP_WEBPATH . "/register.php");}}# function to start registrationfunction startRegistration(){$utypeCtrler = New UserTypeController();$_POST = sanitizeData($_POST);$this->set('post', $_POST);$userInfo = $_POST;$subscriptionActive = false;$userStatus = 1;$errMsg['userName'] = formatErrorMsg($this->validate->checkUname($userInfo['userName']));$errMsg['password'] = formatErrorMsg($this->validate->checkPasswords($userInfo['password'], $userInfo['confirmPassword']));$errMsg['firstName'] = formatErrorMsg($this->validate->checkBlank($userInfo['firstName']));$errMsg['lastName'] = formatErrorMsg($this->validate->checkBlank($userInfo['lastName']));$errMsg['email'] = formatErrorMsg($this->validate->checkEmail($userInfo['email']));$errMsg['code'] = formatErrorMsg($this->validate->checkCaptcha($userInfo['code']));$errMsg['utype_id'] = formatErrorMsg($this->validate->checkNumber($userInfo['utype_id']));// if admin user type selected, show error$adminTypeId = $utypeCtrler->getAdminUserTypeId();if ($adminTypeId == $userInfo['utype_id']) {$this->validate->flagErr = true;$errMsg['userName'] = formatErrorMsg("You can not register as admin!!");}// if payment plugin installed check whether valid payment gateway found$seopluginCtrler = new SeoPluginsController();if ($seopluginCtrler->isPluginActive("Subscription")) {$subscriptionActive = true;$errMsg['pg_id'] = formatErrorMsg($this->validate->checkNumber($userInfo['pg_id']));$userStatus = 0;}if(!$this->validate->flagErr){if (!$this->__checkUserName($userInfo['userName'])) {if (!$this->__checkEmail($userInfo['email'])) {$utypeId = intval($userInfo['utype_id']);$sql = "insert into users(utype_id,username,password,first_name,last_name,email,created,status)values ($utypeId,'".addslashes($userInfo['userName'])."','".md5($userInfo['password'])."','".addslashes($userInfo['firstName'])."','".addslashes($userInfo['lastName'])."','".addslashes($userInfo['email'])."',UNIX_TIMESTAMP(),$userStatus)";$this->db->query($sql);// get user id created$userId = $this->db->getMaxId('users');$error = 0;// check whether subscription is activeif ($subscriptionActive and $userId) {$utypeInfo = $utypeCtrler->__getUserTypeInfo($utypeId);// if it is paid subscription, proceed with paymentif ($utypeInfo['price'] > 0) {$paymentPluginId = intval($userInfo['pg_id']);@Session::setSession('payment_plugin_id', $paymentPluginId);$quantity = intval($userInfo['quantity']);$pluginCtrler = $seopluginCtrler->createPluginObject("Subscription");$paymentForm = $pluginCtrler->pgCtrler->getPaymentForm($paymentPluginId, $userId, $utypeInfo, $quantity);$this->set('paymentForm', $paymentForm);} else {$this->__changeStatus($userId, 1);// if trial period is set for user typeif (!empty($utypeInfo['free_trial_period'])) {$totalDays = intval($utypeInfo['free_trial_period']);$day = date('d') + $totalDays;$expiryTimeStamp = mktime(23, 59, 59, date('m'), $day, date('Y'));$expiryDate = date('Y-m-d', $expiryTimeStamp);$this->updateUserInfo($userId, 'expiry_date', $expiryDate);}}}# get confirm codeif ($utypeCtrler->isEmailActivationEnabledForUserType($utypeId)) {$this->__changeStatus($userId, 0);$cfm = str_shuffle($userId . $userInfo['userName']);$sql = "update users set confirm_code='$cfm' where id=$userId";$this->db->query($sql);$this->set('confirmLink', SP_WEBPATH . "/register.php?sec=confirm&code=$cfm");// get mail details$adminInfo = $this->__getAdminInfo();$adminName = $adminInfo['first_name']." ".$adminInfo['last_name'];$this->set('name', $userInfo['firstName']." ".$userInfo['lastName']);$subject = SP_COMPANY_NAME . " " . $this->spTextRegister['Registration'];$content = $this->getViewContent('email/accountconfirmation');if(!sendMail($adminInfo['email'], $adminName, $userInfo['email'], $subject, $content)){$error = showErrorMsg('An internal error occured while sending confirmation mail! Please <a href="'.SP_CONTACT_LINK.'">contact</a> seo panel team.',false);}}$this->set('error', $error);$this->render('common/registerconfirm');return True;}else{$errMsg['email'] = formatErrorMsg($_SESSION['text']['login']['emailexist']);}}else{$errMsg['userName'] = formatErrorMsg($_SESSION['text']['login']['usernameexist']);}}$this->set('errMsg', $errMsg);$this->register($userInfo);}# function for logoutfunction logout(){Session::destroySession();redirectUrl(SP_WEBPATH."/login.php");}# func to show usersfunction listUsers($info=''){$info['pageno'] = intval($info['pageno']);$pageScriptPath = 'users.php?stscheck=';$pageScriptPath .= isset($info['stscheck']) ? $info['stscheck'] : "select";$sql = "select * from users where utype_id!=1";// if status setif (isset($info['stscheck']) && $info['stscheck'] != 'select') {$info['stscheck'] = intval($info['stscheck']);$sql .= " and status='{$info['stscheck']}'";}// search for user nameif (!empty($info['user_name'])) {$sql .= " and (username like '%".addslashes($info['user_name'])."%'or first_name like '%".addslashes($info['user_name'])."%'or last_name like '%".addslashes($info['user_name'])."%')";$pageScriptPath .= "&user_name=" . $info['user_name'];}$sql .= " order by username";# pagination setup$this->db->query($sql, true);$this->paging->setDivClass('pagingdiv');$this->paging->loadPaging($this->db->noRows, SP_PAGINGNO);$pagingDiv = $this->paging->printPages($pageScriptPath, '', 'scriptDoLoad', 'content', 'layout=ajax');$this->set('pagingDiv', $pagingDiv);$sql .= " limit ".$this->paging->start .",". $this->paging->per_page;$statusList = array($_SESSION['text']['common']['Active'] => 1,$_SESSION['text']['common']['Inactive'] => 0,);$this->set('statusList', $statusList);$this->set('info', $info);$userList = $this->db->select($sql);$this->set('userList', $userList);$this->set('pageNo', $info['pageno']);$this->render('user/list', 'ajax');}# func to change statusfunction __changeStatus($userId, $status){$userId = intval($userId);$sql = "update users set status=$status where id=$userId";$this->db->query($sql);# deaactivate all websites under this userif(empty($status)){$websiteCtrler = New WebsiteController();$websiteList = $websiteCtrler->__getAllWebsites($userId);foreach ($websiteList as $websiteInfo){$websiteCtrler->__changeStatus($websiteInfo['id'], 0);}}}# func to change statusfunction __deleteUser($userId){$userId = intval($userId);$sql = "delete from users where id=$userId";$this->db->query($sql);$sql = "select id from websites where user_id=$userId";$webisteList = $this->db->select($sql);$webisteCtrler = New WebsiteController();foreach($webisteList as $webisteInfo){$webisteCtrler->__deleteWebsite($webisteInfo['id']);}}function newUser(){// Get the user types$userTypeCtlr = new UserTypeController();$userTypeList = $userTypeCtlr->getAllUserTypes();$this->set('userTypeList', $userTypeList);$this->render('user/new', 'ajax');}function __checkUserName($username){$sql = "select id from users where username='$username'";$userInfo = $this->db->select($sql, true);return empty($userInfo['id']) ? false : $userInfo['id'];}function __checkEmail($email){$sql = "select id from users where email='".addslashes($email)."'";$userInfo = $this->db->select($sql, true);return empty($userInfo['id']) ? false : $userInfo['id'];}function __getUserInfo($userId){$userId = intval($userId);$sql = "select * from users where id=$userId";$userInfo = $this->db->select($sql, true);return empty($userInfo['id']) ? false : $userInfo;}# get admin user detailsfunction __getAdminInfo(){$sql = "select * from users where utype_id=1";$userInfo = $this->db->select($sql, true);return empty($userInfo['id']) ? false : $userInfo;}#function to get all usersfunction __getAllUsers($active=1,$admin=true, $orderByCol = "username"){$sql = "select * from users where status=$active";$sql .= $admin ? "" : " and utype_id!=1";$sql .= " order by " . addslashes($orderByCol);$userList = $this->db->select($sql);return $userList;}#function to get all users having websitefunction __getAllUsersHavingWebsite($active=1,$admin=true){$sql = "select u.* from users u,websites w where w.user_id=u.id and u.status=$active and w.status=1";$sql .= $admin ? "" : " and utype_id!=1";$sql .= " group by u.id order by username";$userList = $this->db->select($sql);return $userList;}function createUser($userInfo, $renderResults = true){$userInfo = sanitizeData($userInfo);$this->set('post', $userInfo);$errMsg['userName'] = formatErrorMsg($this->validate->checkUname($userInfo['userName']));$errMsg['password'] = formatErrorMsg($this->validate->checkPasswords($userInfo['password'], $userInfo['confirmPassword']));$errMsg['firstName'] = formatErrorMsg($this->validate->checkBlank($userInfo['firstName']));$errMsg['lastName'] = formatErrorMsg($this->validate->checkBlank($userInfo['lastName']));$errMsg['email'] = formatErrorMsg($this->validate->checkEmail($userInfo['email']));$userTypeId = empty($userInfo['userType']) ? 2 : intval($userInfo['userType']);$userStatus = isset($userInfo['status']) ? intval($userInfo['status']) : 1;// if expiry date is not emptyif (!empty($userInfo['expiry_date'])) {$errMsg['expiry_date'] = formatErrorMsg($this->validate->checkDate($userInfo['expiry_date']));$userInfo['expiry_date'] = "'".addslashes($userInfo['expiry_date'])."'";} else {$userInfo['expiry_date'] = "NULL";}// check error flag is onif(!$this->validate->flagErr){if (!$this->__checkUserName($userInfo['userName'])) {if (!$this->__checkEmail($userInfo['email'])) {$sql = "insert into users(utype_id,username,password,first_name,last_name,email,created,status, expiry_date)values($userTypeId,'".addslashes($userInfo['userName'])."','".md5($userInfo['password'])."','".addslashes($userInfo['firstName'])."', '".addslashes($userInfo['lastName'])."','".addslashes($userInfo['email'])."',UNIX_TIMESTAMP(),$userStatus, {$userInfo['expiry_date']})";$this->db->query($sql);// if render resultsif ($renderResults) {$this->listUsers('ajax');exit;} else {return array('success', 'Successfully created user');}}else{$errMsg['email'] = formatErrorMsg($_SESSION['text']['login']['emailexist']);}}else{$errMsg['userName'] = formatErrorMsg($_SESSION['text']['login']['usernameexist']);}}// if render resultsif ($renderResults) {$this->set('errMsg', $errMsg);$this->newUser();} else {return array('error', $errMsg);}}function editUser($userId, $userInfo=''){if(!empty($userId)){if(empty($userInfo)){$userInfo = $this->__getUserInfo($userId);$userInfo['userName'] = $userInfo['username'];$userInfo['firstName'] = $userInfo['first_name'];$userInfo['lastName'] = $userInfo['last_name'];$userInfo['oldName'] = $userInfo['username'];$userInfo['oldEmail'] = $userInfo['email'];$userInfo['userType'] = $userInfo['utype_id'];$userInfo['expiry_date'] = formatDate($userInfo['expiry_date']);}// Get the user types$userTypeCtlr = new UserTypeController();$userTypeList = $userTypeCtlr->getAllUserTypes();$userInfo['password'] = '';$this->set('post', $userInfo);$this->set('userTypeList', $userTypeList);$this->render('user/edit', 'ajax');exit;}$this->listUsers('ajax');}function updateUser($userInfo, $renderResults = true){$userInfo = sanitizeData($userInfo);$userInfo['id'] = intval($userInfo['id']);$this->set('post', $userInfo);$errMsg['userName'] = formatErrorMsg($this->validate->checkUname($userInfo['userName']));// if expiry date is not emptyif (!empty($userInfo['expiry_date'])) {$errMsg['expiry_date'] = formatErrorMsg($this->validate->checkDate($userInfo['expiry_date']));$expiryStr = "expiry_date='".addslashes($userInfo['expiry_date'])."',";} else {$expiryStr = "expiry_date=NULL,";}// if password needs to be resetif(!empty($userInfo['password'])){$errMsg['password'] = formatErrorMsg($this->validate->checkPasswords($userInfo['password'], $userInfo['confirmPassword']));$passStr = "password = '".md5($userInfo['password'])."',";}// if change status of userif (isset($userInfo['status'])) {$activeStr = "status = '".intval($userInfo['status'])."',";}$errMsg['firstName'] = formatErrorMsg($this->validate->checkBlank($userInfo['firstName']));$errMsg['lastName'] = formatErrorMsg($this->validate->checkBlank($userInfo['lastName']));$errMsg['email'] = formatErrorMsg($this->validate->checkEmail($userInfo['email']));if(!$this->validate->flagErr){if($userInfo['userName'] != $userInfo['oldName']){if ($this->__checkUserName($userInfo['userName'])) {$errMsg['userName'] = formatErrorMsg($_SESSION['text']['login']['usernameexist']);$this->validate->flagErr = true;}}if($userInfo['email'] != $userInfo['oldEmail']){if ($this->__checkEmail($userInfo['email'])) {$errMsg['email'] = formatErrorMsg($_SESSION['text']['login']['emailexist']);$this->validate->flagErr = true;}}// if no error to inputsif (!$this->validate->flagErr) {$sql = "update users setusername = '".addslashes($userInfo['userName'])."',first_name = '".addslashes($userInfo['firstName'])."',last_name = '".addslashes($userInfo['lastName'])."',$passStr$activeStr$expiryStremail = '".addslashes($userInfo['email'])."',utype_id = ".addslashes($userInfo['userType'])."where id={$userInfo['id']}";$this->db->query($sql);// if render resultsif ($renderResults) {$this->listUsers('ajax');exit;} else {return array('success', 'Successfully updated user');}}}if ($renderResults) {$this->set('errMsg', $errMsg);$this->editUser($userInfo['id'], $userInfo);} else {return array('error', $errMsg);}}function showMyProfile($info = ''){$userId = isLoggedIn();if(!empty($userId)){$userInfo = $this->__getUserInfo($userId);$this->set('userInfo', $userInfo);$userTypeCtrler = new UserTypeController();$userTypeInfo = $userTypeCtrler->__getUserTypeInfo($userInfo['utype_id']);$this->set('userTypeInfo', $userTypeInfo);$seopluginCtrler = new SeoPluginsController();$this->set('subscriptionActive', $seopluginCtrler->isPluginActive("Subscription"));$spTextSubscription = $this->getLanguageTexts('subscription', $_SESSION['lang_code']);$this->set('spTextSubscription', $spTextSubscription);$this->render('user/showmyprofile', 'ajax');}}# function to renew membership subscriptionfunction renewMyProfile($info = ''){$userId = isLoggedIn();$seopluginCtrler = new SeoPluginsController();// if logged in and plugin is activeif(!empty($userId) && $seopluginCtrler->isPluginActive("Subscription") && !isAdmin()){$userInfo = $this->__getUserInfo($userId);$this->set('userInfo', $userInfo);$userTypeCtrler = new UserTypeController();$userTypeInfo = $userTypeCtrler->__getUserTypeInfo($userInfo['utype_id']);$this->set('userTypeInfo', $userTypeInfo);$spTextSubscription = $this->getLanguageTexts('subscription', $_SESSION['lang_code']);$this->set('spTextSubscription', $spTextSubscription);include_once(SP_PLUGINPATH . "/Subscription/paymentgateway.ctrl.php");$userTypeList = $userTypeCtrler->getRenewUserTypeList($userInfo['utype_id']);$this->set('userTypeList', $userTypeList);$currencyCtrler = new CurrencyController();$this->set('currencyList', $currencyCtrler->getCurrencyCodeMapList());// include available payment gateways$pgCtrler = new PaymentGateway();$pgList = $pgCtrler->__getAllPaymentGateway();$this->set('pgList', $pgList);$this->set('defaultPgId', $pgCtrler->__getDefaultPaymentGateway());$this->render('user/renewmyprofile', 'ajax');} else {redirectUrlByScript(SP_WEBPATH . "/admin-panel.php?sec=myprofile");}}# function to update membership subscriptionfunction updateSubscription($userInfo = ''){$userId = isLoggedIn();$seopluginCtrler = new SeoPluginsController();// if logged in and plugin is activeif(!empty($userId) && $seopluginCtrler->isPluginActive("Subscription") && !isAdmin()){$utypeCtrler = New UserTypeController();$_POST = sanitizeData($_POST);$errMsg['utype_id'] = formatErrorMsg($this->validate->checkNumber($userInfo['utype_id']));$errMsg['pg_id'] = formatErrorMsg($this->validate->checkNumber($userInfo['pg_id']));// if admin user type selected, show error$adminTypeId = $utypeCtrler->getAdminUserTypeId();if ($adminTypeId == $userInfo['utype_id']) {$this->validate->flagErr = true;$errMsg['utype_id'] = formatErrorMsg("You can not register as admin.");}// get renew usertype list$userTypeList = $utypeCtrler->getRenewUserTypeList($userInfo['utype_id']);if (!in_array($userInfo['utype_id'], array_keys($userTypeList))) {$this->validate->flagErr = true;$errMsg['utype_id'] = formatErrorMsg("You are not allowed to upgrade to this plan.");}// if all form inputs are validif (!$this->validate->flagErr) {$utypeId = intval($userInfo['utype_id']);$userId = isLoggedIn();$utypeInfo = $utypeCtrler->__getUserTypeInfo($utypeId);// if it is paid subscription, proceed with paymentif ($utypeInfo['price'] > 0) {$paymentPluginId = intval($userInfo['pg_id']);@Session::setSession('payment_plugin_id', $paymentPluginId);$quantity = intval($userInfo['quantity']);$pluginCtrler = $seopluginCtrler->createPluginObject("Subscription");$paymentForm = $pluginCtrler->pgCtrler->getPaymentForm($paymentPluginId, $userId, $utypeInfo, $quantity, "renew");$this->set('paymentForm', $paymentForm);} else {$this->updateUserInfo($userId, 'utype_id', $userInfo['utype_id']);$expiryDate = $this->calculateUserExpiryDate($userInfo['quantity']);$this->updateUserInfo($userId, 'expiry_date', $expiryDate);redirectUrlByScript(SP_WEBPATH . "/admin-panel.php?sec=myprofile");exit;}$this->render('user/renewmyprofile', 'ajax');} else {$this->set('errMsg', $errMsg);$this->renewMyProfile($_POST);}} else {redirectUrlByScript(SP_WEBPATH . "/admin-panel.php?sec=myprofile");}}function editMyProfile($userInfo=''){$userId = isLoggedIn();if(!empty($userId)){if(empty($userInfo)){$userInfo = $this->__getUserInfo($userId);$userInfo['userName'] = $userInfo['username'];$userInfo['firstName'] = $userInfo['first_name'];$userInfo['lastName'] = $userInfo['last_name'];$userInfo['oldName'] = $userInfo['username'];$userInfo['oldEmail'] = $userInfo['email'];}$userInfo['password'] = '';$this->set('post', $userInfo);$this->render('user/editmyprofile', 'ajax');exit;}}function updateMyProfile($userInfo){$userInfo = sanitizeData($userInfo);$userId = isLoggedIn();$this->set('post', $userInfo);$errMsg['userName'] = formatErrorMsg($this->validate->checkUname($userInfo['userName']));if(!empty($userInfo['password'])){$errMsg['password'] = formatErrorMsg($this->validate->checkPasswords($userInfo['password'], $userInfo['confirmPassword']));$passStr = "password = '".md5($userInfo['password'])."',";}$errMsg['firstName'] = formatErrorMsg($this->validate->checkBlank($userInfo['firstName']));$errMsg['lastName'] = formatErrorMsg($this->validate->checkBlank($userInfo['lastName']));$errMsg['email'] = formatErrorMsg($this->validate->checkEmail($userInfo['email']));if(!$this->validate->flagErr){if($userInfo['userName'] != $userInfo['oldName']){if ($this->__checkUserName($userInfo['userName'])) {$errMsg['userName'] = formatErrorMsg($_SESSION['text']['login']['usernameexist']);$this->validate->flagErr = true;}}if($userInfo['email'] != $userInfo['oldEmail']){if ($this->__checkEmail($userInfo['email'])) {$errMsg['email'] = formatErrorMsg($_SESSION['text']['login']['emailexist']);$this->validate->flagErr = true;}}if (!$this->validate->flagErr) {$sql = "update users setusername = '".addslashes($userInfo['userName'])."',first_name = '".addslashes($userInfo['firstName'])."',last_name = '".addslashes($userInfo['lastName'])."',$passStremail = '".addslashes($userInfo['email'])."'where id=$userId";$this->db->query($sql);$this->set('msg', $this->spTextUser['Saved My Profile Details']);$this->showMyProfile();exit;}}$this->set('errMsg', $errMsg);$this->editMyProfile($userInfo);}# forgot password functionfunction forgotPasswordForm(){$this->render('common/forgot');}# reset password of userfunction requestPassword($userEmail) {$errMsg['email'] = formatErrorMsg($this->validate->checkEmail($userEmail));$errMsg['code'] = formatErrorMsg($this->validate->checkCaptcha($userInfo['code']));$this->set('post', $_POST);if(!$this->validate->flagErr){$userId = $this->__checkEmail($userEmail);if(!empty($userId)){$userInfo = $this->__getUserInfo($userId);$rand = str_shuffle(rand().$userInfo['username']);// get admin details$adminInfo = $this->__getAdminInfo();# send password to user$error = 0;$this->set('rand', $rand);$name = $userInfo['first_name']." ".$userInfo['last_name'];$this->set('name', $name);$this->set('userName', $userInfo['username']);$content = $this->getViewContent('email/passwordreset');$subject = "Seo panel password reset";if(!sendMail($adminInfo["email"], $name, $userEmail, $subject, $content)){$error = $_SESSION['text']['login']['internal_error_mail_send'];} else {// update password in DB$sql = "update users set password=md5('$rand') where id={$userInfo['id']}";$this->db->query($sql);}$this->set('error', $error);$this->render('common/forgotconfirm');exit;}else{$errMsg['email'] = formatErrorMsg($_SESSION['text']['login']['user_email_not_exist']);}}$this->set('errMsg', $errMsg);$this->forgotPasswordForm();}# function to check whether user expiredfunction isUserExpired($userId) {$excludeSecList = array("myprofile", "renew-profile", "update-subscription");// if not admin user and not in section pagesif (!isAdmin() && !in_array($_REQUEST['sec'], $excludeSecList)) {$userInfo = $this->__getUserInfo($userId);$userInfo['expiry_date'] = formatDate($userInfo['expiry_date']);// if expiry date set for userif (!empty($userInfo['expiry_date'])) {$today = date("Y-m-d");$todayTime = strtotime($today);$expireTime = strtotime($userInfo['expiry_date']);// current date greater than expiry dateif ($todayTime > $expireTime) {return false;}}}return true;}# function to get admin user idfunction getAdminUserId() {$userTypeCtrlr = new UserTypeController();$adminUserTypeId = $userTypeCtrlr->getAdminUserTypeId();$sql = "select * from users where utype_id=" . $adminUserTypeId;$userInfo = $this->db->select($sql, true);return $userInfo['id'];}# function to check passed user id is admin user idfunction isAdminUserId($userId) {$adminUserId = $this->getAdminUserId();// if admin user id return trueif ($userId == $adminUserId) {return true;} else {return false;}}# function to update user infofunction updateUserInfo($userId, $col, $value) {$sql = "update users set $col='".addslashes($value)."' where id=" . intval($userId);$this->db->query($sql);}# function to calculate user expiry datefunction calculateUserExpiryDate($quantity) {$month = date('m') + $quantity;$expiryTimeStamp = mktime(23, 59, 59, $month, date('d'), date('Y'));$expiryDate = date('Y-m-d', $expiryTimeStamp);return $expiryDate;}function manageWebsiteAccessManager($info = "") {$userList = $this->__getAllUsers(1, false);$userId = isset($info['wam_user']) ? intval($info['wam_user']) : $userList[0]['id'];if (isset($info['action'])) {$sql = "delete from user_website_access where user_id=" . $info['wam_user'];$this->db->query($sql);foreach($info['check_ws'] as $key => $val) {$sql = "insert into user_website_access(user_id,website_id) values(". $userId . ", " . intval($val) . ")";$this->db->query($sql);}$this->set("msg", formatSuccessMsg("Updated user website access!"));}$loggedinUserId = isLoggedIn();$sql = "select w.*,uwa.id as uwa_id,uwa.access from websites w left join user_website_access uwa on w.id=uwa.website_id and uwa.user_id=$userId and w.user_id=$loggedinUserId";$userWebsiteList = $this->db->select($sql);$this->set("userWebsiteList", $userWebsiteList);$this->set("userId", $userId);$this->set("userList", $userList);$this->render('user/websiteAccessManager');}function getUserWebsiteAccessList($userId) {$accessList = array();$cond = "user_id=".intval($userId);$list = $this->dbHelper->getAllRows("user_website_access", $cond);foreach ($list as $listInfo) {$accessList[$listInfo['website_id']] = $listInfo;}return $accessList;}function getUserWebsiteAccessCount($userId) {$cond = "user_id=".intval($userId);$info = $this->dbHelper->getRow("user_website_access", $cond, "count(*) count");return $info['count'];}}?>