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 search engine controller functionsclass SearchEngineController extends Controller{# func to get all search enginesfunction __getAllSearchEngines(){$sql = "select * from searchengines where status=1";$seList = $this->db->select($sql);return $seList;}function __searchSerachEngines($searchInfo=[]) {$cond = "1=1";$cond .= isset($searchInfo['status']) ? " and status=".intval($searchInfo['status']) : "";$cond .= isset($searchInfo['search']) ? " and url like '%".addslashes($searchInfo['search'])."%'" : "";return $this->dbHelper->getAllRows('searchengines', $cond);}# func to get search engine infofunction __getsearchEngineInfo($seId){$sql = "select * from searchengines where id=$seId";$seList = $this->db->select($sql, true);return $seList;}# func to get all search enginesfunction __getAllCrawlFormatedSearchEngines(){$sql = "select * from searchengines where status=1";$list = $this->db->select($sql);$seList = array();foreach($list as $seInfo){$seId = $seInfo['id'];$seInfo['regex'] = "/".$seInfo['regex']."/is";$search = array('[--num--]');$replace = array($seInfo['no_of_results_page']);$seInfo['url'] = str_replace($search, $replace, $seInfo['url']);$seList[$seId] = $seInfo;}return $seList;}# func to show search enginesfunction listSE($info=''){$info = sanitizeData($info);$info['stscheck'] = isset($info['stscheck']) ? intval($info['stscheck']) : 1;$pageScriptPath = 'searchengine.php?stscheck=' . $info['stscheck'];$sql = "select * from searchengines where status='{$info['stscheck']}'";// search for search engine nameif (!empty($info['se_name'])) {$sql .= " and domain like '%".addslashes($info['se_name'])."%'";$pageScriptPath .= "&se_name=" . $info['se_name'];}$sql .= " order by id";# 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;$seList = $this->db->select($sql);$this->set('seList', $seList);$statusList = array($_SESSION['text']['common']['Active'] => 1,$_SESSION['text']['common']['Inactive'] => 0,);$this->set('statusList', $statusList);$this->set('info', $info);$this->set('pageScriptPath', $pageScriptPath);$this->set('pageNo', $info['pageno']);$this->render('searchengine/list', 'ajax');}# func to change status of search enginefunction __changeStatus($seId, $status){$seId = intval($seId);$sql = "update searchengines set status=$status where id=$seId";$this->db->query($sql);}# func to delete search enginefunction __deleteSearchEngine($seId){$seId = intval($seId);$sql = "delete from searchengines where id=$seId";$this->db->query($sql);$sql = "select id from searchresults where searchengine_id=$seId";$recordList = $this->db->select($sql);if(count($recordList) > 0){foreach($recordList as $recordInfo){$sql = "delete from searchresultdetails where searchresult_id=".$recordInfo['id'];$this->db->query($sql);}$sql = "delete from searchresults where searchengine_id=$seId";$this->db->query($sql);}}# function to check whether captcha found in search engine resultspublic static function isCaptchInSearchResults($searchContent) {$captchFound = false;// if captcha input field is foundif (stristr($searchContent, 'name="captcha"') || stristr($searchContent, 'id="captcha"') || stristr($searchContent, 'recaptcha/api')) {$captchFound = true;}return $captchFound;}// Function to check / validate the user type searh engine countpublic static function validateSearchEngineCount($userId, $count) {$userCtrler = new UserController();$validation = array('error' => false);// if admin user id return trueif ($userCtrler->isAdminUserId($userId)) {return $validation;}$userTypeCtrlr = new UserTypeController();$userTypeDetails = $userTypeCtrlr->getUserTypeSpecByUser($userId);// if limit is set and not -1if (isset($userTypeDetails['searchengine_count']) && $userTypeDetails['searchengine_count'] >= 0) {// check whether count greater than limitif ($count > $userTypeDetails['searchengine_count']) {$validation['error'] = true;$spTextSubs = $userTypeCtrlr->getLanguageTexts('subscription', $_SESSION['lang_code']);$validation['msg'] = formatErrorMsg(str_replace("[limit]", $userTypeDetails['searchengine_count'], $spTextSubs['total_count_greater_account_limit']));}}return $validation;}// func to show sync search enginesfunction showSyncSearchEngines($info=[]) {$pageScriptPath = 'searchengine.php?sec=sync-se';$sql = "select * from sync_searchengines order by sync_time DESC";# 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;$syncList = $this->db->select($sql);$this->set('syncList', $syncList);$this->set('pageScriptPath', $pageScriptPath);$this->set('pageNo', $info['pageno']);$this->render('searchengine/list_sync_searchengines');}// do sync search engines from sp main websitefunction doSyncSearchEngines($checkAlreadyExecuted = false, $cronJob = false) {// check whether already executed syncif ($checkAlreadyExecuted) {$row = $this->dbHelper->getRow("sync_searchengines", "sync_time>TIMESTAMP(DATE_SUB(NOW(), INTERVAL ". SP_SYNC_SE_INTERVAL ." day))");if (!empty($row['id'])) {return ['status' => false, 'result' => "Search engines already synced."];}}$dataList = ['status' => 0];$syncUrl = SP_MAIN_SITE . "/get_searchengine_updates.php";$ret = $this->spider->getContent($syncUrl);if (!empty($ret['page'])) {// check whethere required content exists in the page crawledif (stristr($ret['page'], 'UPDATE ')) {$queryList = explode(';', $ret['page']);foreach ($queryList as $query) {if (!empty($query)) {$this->db->query(trim($query));}}$dataList['result'] = "Search engines successfully synced.";$dataList['status'] = 1;// update admin alerts sectionif ($cronJob) {$alertCtrl = new AlertController();$alertInfo = array('alert_subject' => "Search Engine Sync",'alert_message' => $dataList['result'],'alert_category' => "reports",'alert_url' => SP_WEBPATH,);$alertCtrl->createAlert($alertInfo, false, true);}} else {$dataList['result'] = "Internal error occured during search engine sync.";}} else {$dataList['result'] = $ret['errmsg'];}$this->dbHelper->insertRow("sync_searchengines", $dataList);return $dataList;}}?>