Rev 103 | Blame | Compare with Previous | 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 website controller functions
class WebsiteController extends Controller{
# func to show websites
function listWebsites($info=''){
$userId = isLoggedIn();
$info['pageno'] = intval($info['pageno']);
$pageScriptPath = 'websites.php?stscheck=';
$pageScriptPath .= isset($info['stscheck']) ? $info['stscheck'] : "select";
// if admin add user filter
if(isAdmin()){
$sql = "select w.*,u.username from websites w,users u where u.id=w.user_id";
$this->set('isAdmin', 1);
// if user id is not empty
if (!empty($info['userid'])) {
$sql .= " and w.user_id=".intval($info['userid']);
$pageScriptPath .= "&userid=" . intval($info['userid']);
}
$userCtrler = New UserController();
$userList = $userCtrler->__getAllUsers();
$this->set('userList', $userList);
}else{
$sql = "select * from websites w where user_id=$userId";
}
// search for user name
if (!empty($info['search_name'])) {
$sql .= " and (w.name like '%".addslashes($info['search_name'])."%'
or w.url like '%".addslashes($info['search_name'])."%')";
$pageScriptPath .= "&search_name=" . $info['search_name'];
}
// if status set
if (isset($info['stscheck']) && $info['stscheck'] != 'select') {
$info['stscheck'] = intval($info['stscheck']);
$sql .= " and w.status='{$info['stscheck']}'";
}
$sql .= " order by w.name";
$this->set('userId', empty($info['userid']) ? 0 : $info['userid']);
# pagination setup
$this->db->query($sql, true);
$this->paging->setDivClass('pagingdiv');
$this->paging->loadPaging($this->db->noRows, SP_PAGINGNO);
$pagingDiv = $this->paging->printPages($pageScriptPath);
$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);
$websiteList = $this->db->select($sql);
$this->set('pageNo', $info['pageno']);
$this->set('list', $websiteList);
$this->render('website/list');
}
# func to get all Websites
function __getAllWebsites($userId = '', $isAdminCheck = false, $searchName = '') {
$sql = "select * from websites where status=1";
if(!$isAdminCheck || !isAdmin() ) {
if(!empty($userId)) {
$sql .= $this->getWebsiteUserAccessCondition($userId, "id", "user_id");
}
}
// if search string is not empty
if (!empty($searchName)) {
$sql .= " and (name like '%".addslashes($searchName)."%' or url like '%".addslashes($searchName)."%')";
}
$sql .= " order by name";
$websiteList = $this->db->select($sql);
return $websiteList;
}
function __getUserWebsites($userId, $searchInfo=[]) {
$cond = "user_id=".intval($userId);
$cond .= isset($searchInfo['status']) ? " and status=".intval($searchInfo['status']) : "";
$cond .= isset($searchInfo['search']) ? " and url like '%".addslashes($searchInfo['search'])."%'" : "";
return $this->dbHelper->getAllRows('websites', $cond);
}
# func to get all Websites
function __getCountAllWebsites($userId='', $statusCheck = true, $statusVal = 1){
$sql = "select count(*) count from websites where 1=1";
$sql .= $statusCheck ? " and status=" . $statusVal : "";
if (!empty($userId)) {
$sql .= " and user_id=" . intval($userId);
}
$countInfo = $this->db->select($sql, true);
$count = empty($countInfo['count']) ? 0 : $countInfo['count'];
return $count;
}
# func to get all Websites having active keywords
function __getAllWebsitesWithActiveKeywords($userId='', $isAdminCheck=false){
$sql = "select w.* from websites w,keywords k where w.id=k.website_id and w.status=1 and k.status=1";
if(!$isAdminCheck || !isAdmin() ){
if(!empty($userId)) {
$sql .= $this->getWebsiteUserAccessCondition($userId);
}
}
$sql .= " group by w.id order by w.name";
$websiteList = $this->db->select($sql);
return $websiteList;
}
function getWebsiteUserAccessCondition($userId, $col="w.id", $userCol = "w.user_id") {
if (SP_CUSTOM_DEV) {
$userCtrl = new UserController();
$webAccessList = $userCtrl->getUserWebsiteAccessList($userId);
$webIdList = array_keys($webAccessList);
$webIdList = !empty($webIdList) ? $webIdList : array(0);
$cond = " and ($userCol=" . intval($userId) . " or $col in (".implode($webIdList, ',')."))";
} else {
$cond = " and $userCol=" . intval($userId);
}
return $cond;
}
# func to change status
function __changeStatus($websiteId, $status){
$websiteId = intval($websiteId);
$sql = "update websites set status=$status where id=$websiteId";
$this->db->query($sql);
$sql = "update keywords set status=$status where website_id=$websiteId";
$this->db->query($sql);
}
# func to delete website
function __deleteWebsite($websiteId){
$websiteId = intval($websiteId);
$sql = "delete from websites where id=$websiteId";
$this->db->query($sql);
# delete all keywords under this website
$sql = "select id from keywords where website_id=$websiteId";
$keywordList = $this->db->select($sql);
$keywordCtrler = New KeywordController();
foreach($keywordList as $keywordInfo){
$keywordCtrler->__deleteKeyword($keywordInfo['id']);
}
# remove rank results
$sql = "delete from rankresults where website_id=$websiteId";
$this->db->query($sql);
# remove backlink results
$sql = "delete from backlinkresults where website_id=$websiteId";
$this->db->query($sql);
# remove saturation results
$sql = "delete from saturationresults where website_id=$websiteId";
$this->db->query($sql);
# remove site auditor results
$sql = "select id from auditorprojects where website_id=$websiteId";
$info = $this->db->select($sql, true);
if (!empty($info['id'])) {
$auditorObj = $this->createController('SiteAuditor');
$auditorObj->__deleteProject($info['id']);
}
#remove directory results
$sql = "delete from dirsubmitinfo where website_id=$websiteId";
$this->db->query($sql);
$sql = "delete from skipdirectories where website_id=$websiteId";
$this->db->query($sql);
}
function newWebsite($info=''){
$userId = isLoggedIn();
if(!empty($info['check']) && !$this->__getCountAllWebsites($userId)){
$this->set('msg', $this->spTextWeb['plscrtwebsite'].'<br>Please <a href="javascript:void(0);" onclick="scriptDoLoad(\'websites.php\', \'content\')">'.strtolower($_SESSION['text']['common']['Activate']).'</a> '.$this->spTextWeb['yourwebalreday']);
}
# Validate website count
if (!$this->validateWebsiteCount($userId)) {
$this->set('validationMsg', $this->spTextWeb['Your website count already reached the limit']);
}
# get all users
if(isAdmin()){
$userCtrler = New UserController();
$userList = $userCtrler->__getAllUsers();
$this->set('userList', $userList);
$this->set('userSelected', empty($info['userid']) ? $userId : $info['userid']);
$this->set('isAdmin', 1);
}
$this->render('website/new');
}
function __checkName($name, $userId){
$sql = "select id from websites where name='".addslashes($name)."' and user_id=$userId";
$listInfo = $this->db->select($sql, true);
return empty($listInfo['id']) ? false : $listInfo['id'];
}
function __checkWebsiteUrl($url, $websiteId=0){
$sql = "select id from websites where url='".addslashes($url)."'";
$sql .= $websiteId ? " and id!=$websiteId" : "";
$listInfo = $this->db->select($sql, true);
return empty($listInfo['id']) ? false : $listInfo['id'];
}
function createWebsite($listInfo, $apiCall = false){
// add user id when using as admin or calling api
if (isAdmin() || $apiCall) {
$userId = empty($listInfo['userid']) ? isLoggedIn() : intval($listInfo['userid']);
} else {
$userId = isLoggedIn();
}
$errMsg = [];
$listInfo['name'] = strip_tags($listInfo['name']);
$this->set('post', $listInfo);
$errMsg['name'] = formatErrorMsg($this->validate->checkBlank($listInfo['name']));
$errMsg['url'] = formatErrorMsg($this->validate->checkBlank($listInfo['url']));
$listInfo['url'] = addHttpToUrl($listInfo['url']);
$statusVal = isset($listInfo['status']) ? intval($listInfo['status']) : 1;
// verify the limit for the user
if (!$this->validateWebsiteCount($userId)) {
$this->set('validationMsg', $this->spTextWeb["Your website count already reached the limit"]);
$this->validate->flagErr = true;
$errMsg['limit_error'] = $this->spTextWeb["Your website count already reached the limit"];
}
// validate website creation
if(!$this->validate->flagErr){
if (!$this->__checkName($listInfo['name'], $userId)) {
if (!$this->__checkWebsiteUrl($listInfo['url'])) {
$listInfo['title'] = substr($listInfo['title'], 0, 100);
$listInfo['description'] = substr($listInfo['description'], 0, 500);
$listInfo['keywords'] = substr($listInfo['keywords'], 0, 500);
$sql = "insert into websites(name,url,title,description,analytics_view_id,keywords,user_id,status)
values('".addslashes($listInfo['name'])."','".addslashes($listInfo['url'])."','".
addslashes($listInfo['title'])."','".addslashes($listInfo['description'])."', '".addslashes($listInfo['analytics_view_id'])."', '".
addslashes($listInfo['keywords'])."', $userId, $statusVal)";
$this->db->query($sql);
// if api call
if ($apiCall) {
return array('success', 'Successfully created website');
} else {
$this->listWebsites();
exit;
}
} else {
$errMsg['url'] = formatErrorMsg($this->spTextWeb['Website already exist']);
}
}else{
$errMsg['name'] = formatErrorMsg($this->spTextWeb['Website already exist']);
}
}
// if api call
if ($apiCall) {
return array('error', $errMsg);
} else {
$this->set('errMsg', $errMsg);
$this->newWebsite($listInfo);
}
}
function __getWebsiteInfo($websiteId){
$websiteId = intval($websiteId);
$sql = "select * from websites where id=$websiteId";
$listInfo = $this->db->select($sql, true);
return empty($listInfo['id']) ? false : $listInfo;
}
function editWebsite($websiteId, $listInfo=''){
$websiteId = intval($websiteId);
if(!empty($websiteId)){
if(empty($listInfo)){
$listInfo = $this->__getWebsiteInfo($websiteId);
$listInfo['oldName'] = $listInfo['name'];
}
$listInfo['title'] = stripslashes($listInfo['title']);
$listInfo['description'] = stripslashes($listInfo['description']);
$listInfo['keywords'] = stripslashes($listInfo['keywords']);
$this->set('post', $listInfo);
# get all users
if(isAdmin()){
$userCtrler = New UserController();
$userList = $userCtrler->__getAllUsers();
$this->set('userList', $userList);
$this->set('isAdmin', 1);
}
$this->render('website/edit');
exit;
}
$this->listWebsites();
}
function updateWebsite($listInfo, $apiCall = false){
// check whether admin or api calll
if (isAdmin() || $apiCall) {
$userId = empty($listInfo['user_id']) ? isLoggedIn() : $listInfo['user_id'];
} else {
$userId = isLoggedIn();
}
$listInfo['id'] = intval($listInfo['id']);
$listInfo['name'] = strip_tags($listInfo['name']);
$this->set('post', $listInfo);
$errMsg['name'] = formatErrorMsg($this->validate->checkBlank($listInfo['name']));
$errMsg['url'] = formatErrorMsg($this->validate->checkBlank($listInfo['url']));
$listInfo['url'] = addHttpToUrl($listInfo['url']);
$statusVal = isset($listInfo['status']) ? "status = " . intval($listInfo['status']) ."," : "";
// check limit
if(!$this->validate->flagErr && !empty($listInfo['user_id'])){
$websiteInfo = $this->__getWebsiteInfo($listInfo['id']);
// if user is changed for editing
if ($websiteInfo['user_id'] != $listInfo['user_id']) {
// verify the limit for the user
if (!$this->validateWebsiteCount($listInfo['user_id'])) {
$this->set('validationMsg', $this->spTextWeb["Your website count already reached the limit"]);
$this->validate->flagErr = true;
$errMsg['limit_error'] = $this->spTextWeb["Your website count already reached the limit"];
}
}
}
// verify the form
if(!$this->validate->flagErr){
if($listInfo['name'] != $listInfo['oldName']){
if ($this->__checkName($listInfo['name'], $userId)) {
$errMsg['name'] = formatErrorMsg($this->spTextWeb['Website already exist']);
$this->validate->flagErr = true;
}
}
if ($this->__checkWebsiteUrl($listInfo['url'], $listInfo['id'])) {
$errMsg['url'] = formatErrorMsg($this->spTextWeb['Website already exist']);
$this->validate->flagErr = true;
}
if (!$this->validate->flagErr) {
$listInfo['title'] = substr($listInfo['title'], 0, 100);
$listInfo['description'] = substr($listInfo['description'], 0, 500);
$listInfo['keywords'] = substr($listInfo['keywords'], 0, 500);
$sql = "update websites set
name = '".addslashes($listInfo['name'])."',
url = '".addslashes($listInfo['url'])."',
user_id = $userId,
title = '".addslashes($listInfo['title'])."',
description = '".addslashes($listInfo['description'])."',
analytics_view_id = '".addslashes($listInfo['analytics_view_id'])."',
$statusVal
keywords = '".addslashes($listInfo['keywords'])."'
where id={$listInfo['id']}";
$this->db->query($sql);
// if api call
if ($apiCall) {
return array('success', 'Successfully updated website');
} else {
$this->listWebsites();
exit;
}
}
}
// if api call
if ($apiCall) {
return array('error', $errMsg);
} else {
$this->set('errMsg', $errMsg);
$this->editWebsite($listInfo['id'], $listInfo);
}
}
# func to crawl meta data of a website
public static function crawlMetaData($websiteUrl, $keyInput='', $pageContent='', $returVal=false) {
if (empty($pageContent)) {
if(!preg_match('/\w+/', $websiteUrl)) return;
$websiteUrl = addHttpToUrl($websiteUrl);
$spider = New Spider();
$ret = $spider->getContent($websiteUrl);
} else {
$ret['page'] = $pageContent;
$metaInfo = array();
}
if(!empty($ret['page'])){
if (empty($keyInput)) {
# meta title
preg_match('/<TITLE>(.*?)<\/TITLE>/si', $ret['page'], $matches);
if(!empty($matches[1])){
if ($returVal) {
$metaInfo['page_title'] = $matches[1];
} else {
WebsiteController::addInputValue($matches[1], 'webtitle');
}
}
# meta description
preg_match('/<META.*?name="description".*?content="(.*?)"/si', $ret['page'], $matches);
if(empty($matches[1])){
preg_match("/<META.*?name='description'.*?content='(.*?)'/si", $ret['page'], $matches);
}
if(empty($matches[1])){
preg_match('/<META content="(.*?)" name="description"/si', $ret['page'], $matches);
}
if(!empty($matches[1])){
if ($returVal) {
$metaInfo['page_description'] = $matches[1];
} else {
WebsiteController::addInputValue($matches[1], 'webdescription');
}
}
}
# meta keywords
preg_match('/<META.*?name="keywords".*?content="(.*?)"/si', $ret['page'], $matches);
if(empty($matches[1])){
preg_match("/<META.*?name='keywords'.*?content='(.*?)'/si", $ret['page'], $matches);
}
if(empty($matches[1])){
preg_match('/<META content="(.*?)" name="keywords"/si', $ret['page'], $matches);
}
if(!empty($matches[1])){
if ($returVal) {
$metaInfo['page_keywords'] = $matches[1];
} else {
WebsiteController::addInputValue($matches[1], 'webkeywords');
}
}
}
return $metaInfo;
}
public static function addInputValue($value, $col) {
$value = removeNewLines($value);
?>
<script type="text/javascript">
document.getElementById('<?php echo $col;?>').value = '<?php echo str_replace("'", "\'", $value);?>';
</script>
<?php
}
function showImportWebsites() {
$userId = isLoggedIn();
# get all users
if(isAdmin()){
$userCtrler = New UserController();
$userList = $userCtrler->__getAllUsers();
$this->set('userList', $userList);
$this->set('userSelected', empty($info['userid']) ? $userId : $info['userid']);
$this->set('isAdmin', 1);
}
// Check the user website count for validation
if (!isAdmin()) {
$this->setValidationMessageForLimit($userId);
}
$this->set('delimiter', ',');
$this->set('enclosure', '"');
$this->set('escape', '\\');
$this->render('website/importwebsites');
}
# function to set validation message for the limit
function setValidationMessageForLimit($userId) {
// Check the user website count for validation
$userTypeCtrlr = new UserTypeController();
$userWebsiteCount = $this->__getCountAllWebsites($userId, false);
$userTypeDetails = $userTypeCtrlr->getUserTypeSpecByUser($userId);
$validCount = $userTypeDetails['websitecount'] - $userWebsiteCount;
$validCount = $validCount > 0 ? $validCount : 0;
$validationMsg = str_replace("[websitecount]", "<b>$validCount</b>", $this->spTextWeb['You can add only websitecount websites more']);
$this->set('validationMsg', $validationMsg);
return $validationMsg;
}
function importWebsiteFromCsv($info) {
// if csv file is not uploaded
if (empty($_FILES['website_csv_file']['name'])) {
print "<script>alert('".$this->spTextWeb['Please enter CSV file']."')</script>";
return False;
}
$userId = isAdmin() ? intval($info['userid']) : isLoggedIn();
$resultInfo = array(
'total' => 0,
'valid' => 0,
'invalid' => 0,
);
$count = 0;
// process file upload option
$fileInfo = $_FILES['website_csv_file'];
if (!empty($fileInfo['name']) && !empty($userId)) {
if ($fileInfo["type"] == "text/csv" || $fileInfo["type"] == "application/vnd.ms-excel") {
$targetFile = SP_TMPPATH . "/".$fileInfo['name'];
if(move_uploaded_file($fileInfo['tmp_name'], $targetFile)) {
$delimiterChar = empty($info['delimiter']) ? ',' : $info['delimiter'];
$enclosureChar = empty($info['enclosure']) ? '"' : $info['enclosure'];
$escapeChar = empty($info['escape']) ? '\\' : $info['escape'];
// open file read through csv file
if (($handle = fopen($targetFile, "r")) !== FALSE) {
// loop through the data row
while (($websiteInfo = fgetcsv($handle, 4096, $delimiterChar, $enclosureChar, $escapeChar)) !== FALSE) {
if (empty($websiteInfo[0])) continue;
$count++;
}
fclose($handle);
}
// Check the user website count for validation
if (!$this->validateWebsiteCount($userId, $count)) {
$validationMag = strip_tags($this->setValidationMessageForLimit($userId));
print "<script>alert('$validationMag')</script>";
return False;
}
// open file read through csv file
if (($handle = fopen($targetFile, "r")) !== FALSE) {
// loop through the data row
while (($websiteInfo = fgetcsv($handle, 4096, $delimiterChar, $enclosureChar, $escapeChar)) !== FALSE) {
if (empty($websiteInfo[0])) continue;
$status = $this->importWebsite($websiteInfo, $userId);
$resultInfo[$status] += 1;
$resultInfo['total'] += 1;
}
fclose($handle);
}
}
}
}
$text = "<p class=\'note\' id=\'note\'><b>Website import process started. It will take some time depends on the number of websites needs to be imported!</b></p><div id=\'subcontmed\'></div>";
print "<script type='text/javascript'>parent.document.getElementById('import_website_div').innerHTML = '$text';</script>";
print "<script>parent.showLoadingIcon('subcontmed', 0)</script>";
$spText = $_SESSION['text'];
$resText = '<table width="40%" border="0" cellspacing="0" cellpadding="0px" class="summary_tab" align="center">'.
'<tr><td class="topheader" colspan="10">Import Summary</td></tr>'.
'<tr><th class="leftcell">'.$spText['common']['Total'].':</th><td>'.$resultInfo['total'].'</td><th>Valid:</th><td>'.$resultInfo['valid'].'</td></tr>'.
'<tr><th>Invalid:</th><td>'.$resultInfo['invalid'].'</td><th> </th><td> </td></tr>'.
'</table>';
echo "<script type='text/javascript'>parent.document.getElementById('subcontmed').innerHTML = '$resText'</script>";
echo "<script type='text/javascript'>parent.document.getElementById('note').style.display='none';</script>";
}
function importWebsite($wInfo, $userId) {
$status = 'invalid';
if (!empty($wInfo[0]) && !empty($wInfo[1])) {
$listInfo = [];
$listInfo['name'] = trim($wInfo[0]);
$listInfo['url'] = trim($wInfo[1]);
$listInfo['title'] = $wInfo[2] ? trim($wInfo[2]) : "";
$listInfo['description'] = $wInfo[3] ? trim($wInfo[3]) : "";
$listInfo['keywords'] = $wInfo[4] ? trim($wInfo[4]) : "";
$listInfo['status'] = intval($wInfo[5]);
$listInfo['analytics_view_id'] = $wInfo[6] ? trim($wInfo[6]) : "";
$listInfo['userid'] = $userId;
$return = $this->createWebsite($listInfo, true);
if ($return[0] == 'success') {
$status = "valid";
}
}
return $status;
}
// Function to check / validate the user type website count
function validateWebsiteCount($userId, $newCount = 1) {
$userCtrler = new UserController();
// if admin user id return true
if ($userCtrler->isAdminUserId($userId)) {
return true;
}
$userTypeCtrlr = new UserTypeController();
$userWebsiteCount = $this->__getCountAllWebsites($userId, false);
$userWebsiteCount += $newCount;
$userTypeDetails = $userTypeCtrlr->getUserTypeSpecByUser($userId);
// if limit is set and not -1
if (isset($userTypeDetails['websitecount']) && $userTypeDetails['websitecount'] >= 0) {
// check whether count greater than limit
if ($userWebsiteCount <= $userTypeDetails['websitecount']) {
return true;
} else {
return false;
}
} else {
return true;
}
}
function showimportWebmasterToolsWebsites() {
$userId = isLoggedIn();
$this->set('spTextTools', $this->getLanguageTexts('seotools', $_SESSION['lang_code']));
$userCtrler = New UserController();
// get all users
if(isAdmin()){
$userList = $userCtrler->__getAllUsers();
$this->set('userList', $userList);
$this->set('userSelected', empty($info['userid']) ? $userId : $info['userid']);
$this->set('isAdmin', 1);
} else {
$userInfo = $userCtrler->__getUserInfo($userId);
$this->set('userName', $userInfo['username']);
}
// Check the user website count for validation
if (!isAdmin()) {
$this->setValidationMessageForLimit($userId);
}
$this->render('website/import_webmaster_tools_websites');
}
function importWebmasterToolsWebsites($info) {
$userId = isAdmin() ? intval($info['userid']) : isLoggedIn();
$limitReached = false;
$importList = array();
// verify the limit for the user
if (!$this->validateWebsiteCount($userId)) {
showErrorMsg($this->spTextWeb["Your website count already reached the limit"]);
}
$gapiCtrler = new WebMasterController();
$result = $gapiCtrler->getAllSites($userId);
// check whether error occured while api call
if (!$result['status']) {
showErrorMsg($result['msg']);
}
// loop through website list
foreach ($result['resultList'] as $websiteInfo) {
if ($websiteInfo->permissionLevel != 'siteOwner') continue;
// chekc whether website existing or not
if (!$this->__checkWebsiteUrl($websiteInfo->siteUrl) && !$this->__checkWebsiteUrl(Spider::removeTrailingSlash($websiteInfo->siteUrl))) {
$websiteName = formatUrl($websiteInfo->siteUrl, false);
$websiteName = Spider::removeTrailingSlash($websiteName);
$listInfo['name'] = $websiteName;
$listInfo['url'] = $websiteInfo->siteUrl;
$listInfo['title'] = $websiteName;
$listInfo['description'] = $websiteName;
$listInfo['keywords'] = $websiteName;
$listInfo['status'] = 1;
$listInfo['userid'] = $userId;
$return = $this->createWebsite($listInfo, true);
// if success, check of number of websites can be added
if ($return[0] == 'success') {
$importList[] = $websiteInfo->siteUrl;
// if reached website add limit
if (!$this->validateWebsiteCount($userId)) {
$limitReached = true;
break;
}
}
}
}
// show results
showSuccessMsg("<b>".$this->spTextWeb["Successfully imported following websites"]."</b>:", false);
foreach ($importList as $url) showSuccessMsg($url, false);
// if website add limit reached
if ($limitReached) {
showErrorMsg($this->spTextWeb["Your website count already reached the limit"]);
}
}
function addToWebmasterTools($websiteId) {
$webisteInfo = $this->__getWebsiteInfo($websiteId);
$gapiCtrler = new WebMasterController();
$result = $gapiCtrler->addWebsite($webisteInfo['url'], $webisteInfo['user_id']);
// chekc whether error occured while api call
if ($result['status']) {
$activateUrl = "https://www.google.com/webmasters/verification/verification?tid=alternate&siteUrl=" . $webisteInfo['url'];
$successMsg = $this->spTextWeb["Website successfully added to webmaster tools"] . ": " . $webisteInfo['url'] . "<br><br>";
$successMsg .= "<a href='$activateUrl' target='_blank'>Click Here</a> to activate the website in webmaster tools.";
showSuccessMsg($successMsg, false);
} else {
showErrorMsg($result['msg'], false);
}
}
// func to list sitemaps
function listSitemap($info, $summaryPage = false, $cronUserId=false) {
$userId = !empty($cronUserId) ? $cronUserId : isLoggedIn();
$this->set('spTextTools', $this->getLanguageTexts('seotools', $_SESSION['lang_code']));
$this->set('spTextSitemap', $this->getLanguageTexts('sitemap', $_SESSION['lang_code']));
$this->set('spTextHome', $this->getLanguageTexts('home', $_SESSION['lang_code']));
$this->set('spTextDirectory', $this->getLanguageTexts('directory', $_SESSION['lang_code']));
$websiteList = $this->__getAllWebsites($userId, true);
$this->set('websiteList', $websiteList);
$websiteId = isset($info['website_id']) ? intval($info['website_id']) : $websiteList[0]['id'];
$this->set('websiteId', $websiteId);
$whereCond = "status=1";
// check for wbsite id
if (empty($websiteId)) {
$wIdList = [0];
foreach ($websiteList as $websiteInfo) $wIdList[] = $websiteInfo['id'];
$whereCond .= " and website_id in (".implode(',', $wIdList).")";
} else {
$whereCond .= " and website_id=$websiteId";
}
$sitemapList = $this->dbHelper->getAllRows("webmaster_sitemaps", $whereCond);
$this->set('list', $sitemapList);
$this->set('summaryPage', $summaryPage);
// if pdf export
if ($summaryPage) {
return $this->getViewContent('sitemap/list_webmaster_sitemap_list');
} else {
$this->render('sitemap/list_webmaster_sitemap_list');
}
}
// func to import webmaster tools sitemaps
function importWebmasterToolsSitemaps($websiteId, $cronJob = false) {
$websiteId = intval($websiteId);
$webisteInfo = $this->__getWebsiteInfo($websiteId);
// call webmaster api
$gapiCtrler = new WebMasterController();
$result = $gapiCtrler->getAllSitemap($webisteInfo['url'], $webisteInfo['user_id']);
// check whether error occured while api call
if ($result['status']) {
// change status of all sitemaps
$dataList = array('status' => 0);
$this->dbHelper->updateRow("webmaster_sitemaps", $dataList, " website_id=$websiteId");
// loop through webmaster tools list
foreach ($result['resultList'] as $sitemapInfo) {
$dataList = array(
'last_submitted' => date('Y-m-d H:i:s', strtotime($sitemapInfo->lastSubmitted)),
'last_downloaded' => date('Y-m-d H:i:s', strtotime($sitemapInfo->lastDownloaded)),
'is_pending|int' => $sitemapInfo->isPending,
'warnings|int' => $sitemapInfo->warnings,
'errors|int' => $sitemapInfo->errors,
'submitted|int' => $sitemapInfo->contents[0]['submitted'],
'indexed|int' => $sitemapInfo->contents[0]['indexed'],
'status' => 1,
);
$rowInfo = $this->dbHelper->getRow("webmaster_sitemaps", " website_id=$websiteId and path='$sitemapInfo->path'");
if (!empty($rowInfo['id'])) {
$this->dbHelper->updateRow("webmaster_sitemaps", $dataList, " id=" . $rowInfo['id']);
} else {
$dataList['website_id|int'] = $websiteId;
$dataList['path'] = $sitemapInfo->path;
$this->dbHelper->insertRow("webmaster_sitemaps", $dataList);
}
}
if ($cronJob) {
echo $this->spTextWeb["Successfully sync sitemaps from webmaster tools"] . "<br>\n";
} else {
showSuccessMsg($this->spTextWeb["Successfully sync sitemaps from webmaster tools"], false);
}
} else {
showErrorMsg($result['msg'], false);
}
}
// func to show submit sitemap form
function showSubmitSitemap($info) {
$userId = isLoggedIn();
$this->set('websiteList', $this->__getAllWebsites($userId, true));
$this->set('websiteId', intval($info['website_id']));
$this->set('spTextTools', $this->getLanguageTexts('seotools', $_SESSION['lang_code']));
$this->render('sitemap/submit_sitemap');
}
// func to submit sitemap
function submitSitemap($info) {
$webisteInfo = $this->__getWebsiteInfo($info['website_id']);
$spTextWebproxy = $this->getLanguageTexts('QuickWebProxy', $_SESSION['lang_code']);
if (empty($info['sitemap_url'])) {
showErrorMsg($spTextWebproxy["Please enter a valid url"]);
}
$info['sitemap_url'] = addHttpToUrl($info['sitemap_url']);
// if website url not correct
if (!preg_match("/". preg_quote($webisteInfo['url'], '/') ."/i", $info['sitemap_url'])) {
showErrorMsg($spTextWebproxy["Please enter a valid url"]);
}
// call webmaster api
$gapiCtrler = new WebMasterController();
$result = $gapiCtrler->submitSitemap($webisteInfo['url'], $info['sitemap_url'], $webisteInfo['user_id']);
// check whether error occured while api call
if ($result['status']) {
showSuccessMsg($this->spTextWeb["Sitemap successfully added to webmaster tools"] . ": " . $info['sitemap_url'], false);
// update seo panel webmaster tool sitemaps
$this->importWebmasterToolsSitemaps($webisteInfo['id']);
} else {
showErrorMsg($result['msg'], false);
}
}
function deleteWebmasterToolSitemap($sitemapId) {
$sitemapId = intval($sitemapId);
$sitemapInfo = $this->dbHelper->getRow("webmaster_sitemaps", "id=$sitemapId");
if (empty($sitemapInfo['id'])) {
showErrorMsg("Please provide a valid sitemap id");
}
$webisteInfo = $this->__getWebsiteInfo($sitemapInfo['website_id']);
$gapiCtrler = new WebMasterController();
$result = $gapiCtrler->deleteWebsiteSitemap($webisteInfo['url'], $sitemapInfo['path'], $webisteInfo['user_id']);
// check whether error occured while api call
if ($result['status']) {
$this->dbHelper->updateRow("webmaster_sitemaps", array('status' => 0), "id=$sitemapId");
showSuccessMsg($this->spTextWeb["Successfully deleted sitemap from webmaster tools"], false);
} else {
showErrorMsg($result['msg'], false);
}
$this->listSitemap(array('website_id' => $sitemapInfo['website_id']));
}
}
?>