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 functions for managing website API
*
* @author Seo panel
*
*/
class WebsiteAPI extends Seopanel{
/**
* the main controller to get details for api
* @var Object
*/
var $ctrler;
/**
* The list contains search engine details
* @var Array
*/
var $seList;
/**
* The constructor of API
*/
function __construct() {
$this->ctrler = new WebsiteController();
$seController = New SearchEngineController();
$list = $seController->__getAllSearchEngines();
$this->seList = array();
// loop through the search engine and assign id as key
foreach ($list as $listInfo) {
$this->seList[$listInfo['id']] = $listInfo;
}
include_once(SP_CTRLPATH."/saturationchecker.ctrl.php");
include_once(SP_CTRLPATH."/rank.ctrl.php");
include_once(SP_CTRLPATH."/backlink.ctrl.php");
include_once(SP_CTRLPATH."/directory.ctrl.php");
include_once(SP_CTRLPATH."/keyword.ctrl.php");
include_once(SP_CTRLPATH."/pagespeed.ctrl.php");
}
/**
* function to get website reports rank, backlinks, saturation and directory submission
* @param array $websiteInfo The information about website
* @param int $fromTime The time stamp of from time
* @param int $toTime The time stamp of to time
* @return $websiteInfo The formatted website info with position details
*/
function getFormattedReport($websiteInfo, $fromTime, $toTime) {
// create required controllers
$rankCtrler = New RankController();
$backlinlCtrler = New BacklinkController();
$saturationCtrler = New SaturationCheckerController();
$dirCtrler = New DirectoryController();
$pagespeedCtrler = New PageSpeedController();
// rank reports
$report = $rankCtrler->__getWebsiteRankReport($websiteInfo['id'], $fromTime, $toTime);
$report = $report[0];
$toTimeDate = date('Y-m-d', $toTime);
$websiteInfo['alexa']['alexarank']['rank'] = empty($report['alexa_rank']) ? "-" : $report['alexa_rank'];
$websiteInfo['alexa']['alexarank']['diff'] = removeBraces($report['rank_diff_alexa']);
$websiteInfo['alexa']['alexarank']['date'] = $toTimeDate;
$websiteInfo['moz']['pagerank']['rank'] = empty($report['moz_rank']) ? "-" : $report['moz_rank'];
$websiteInfo['moz']['pagerank']['diff'] = removeBraces($report['rank_diff_moz']);
$websiteInfo['noz']['pagerank']['date'] = $toTimeDate;
// back links reports
$report = $backlinlCtrler->__getWebsitebacklinkReport($websiteInfo['id'], $fromTime, $toTime);
$report = $report[0];
$websiteInfo['google']['backlinks']['rank'] = empty($report['google']) ? "-" : $report['google'];
$websiteInfo['google']['backlinks']['diff'] = $report['rank_diff_google'];
$websiteInfo['google']['backlinks']['date'] = $toTimeDate;
$websiteInfo['alexa']['backlinks']['rank'] = empty($report['alexa']) ? "-" : $report['alexa'];
$websiteInfo['alexa']['backlinks']['diff'] = $report['rank_diff_alexa'];
$websiteInfo['alexa']['backlinks']['date'] = $toTimeDate;
$websiteInfo['bing']['backlinks']['rank'] = empty($report['msn']) ? "-" : $report['msn'];
$websiteInfo['bing']['backlinks']['diff'] = $report['rank_diff_msn'];
$websiteInfo['bing']['backlinks']['date'] = $toTimeDate;
// saturaton rank reports
$report = $saturationCtrler->__getWebsiteSaturationReport($websiteInfo['id'], $fromTime, $toTime);
$report = $report[0];
$websiteInfo['google']['indexed']['rank'] = empty($report['google']) ? "-" : $report['google'];
$websiteInfo['google']['indexed']['diff'] = $report['rank_diff_google'];
$websiteInfo['google']['indexed']['date'] = $toTimeDate;
$websiteInfo['bing']['indexed']['rank'] = empty($report['msn']) ? "-" : $report['msn'];
$websiteInfo['bing']['indexed']['diff'] = $report['rank_diff_msn'];
$websiteInfo['bing']['indexed']['date'] = $toTimeDate;
// directory submission stats
$websiteInfo['dirsub']['total'] = $dirCtrler->__getTotalSubmitInfo($websiteInfo['id']);
$websiteInfo['dirsub']['active'] = $dirCtrler->__getTotalSubmitInfo($websiteInfo['id'], true);
$websiteInfo['dirsub']['date'] = $toTimeDate;
// pagespeed reports
$report = $pagespeedCtrler->__getWebsitePageSpeedReport($websiteInfo['id'], $fromTime, $toTime);
$report = $report[0];
$websiteInfo['google']['pagespeed']['desktop_speed'] = empty($report['desktop_speed_score']) ? "-" : $report['desktop_speed_score'];
$websiteInfo['google']['pagespeed']['ds_diff'] = empty($report['rank_diff_desktop_speed_score']) ? "-" : $report['rank_diff_desktop_speed_score'];
$websiteInfo['google']['pagespeed']['mobile_speed'] = empty($report['mobile_speed_score']) ? "-" : $report['mobile_speed_score'];
$websiteInfo['google']['pagespeed']['ms_diff'] = empty($report['rank_diff_mobile_speed_score']) ? "-" : $report['rank_diff_mobile_speed_score'];
$websiteInfo['google']['pagespeed']['mobile_usability'] = empty($report['mobile_usability_score']) ? "-" : $report['mobile_usability_score'];
$websiteInfo['google']['pagespeed']['mu_diff'] = empty($report['rank_diff_mobile_usability_score']) ? "-" : $report['rank_diff_mobile_usability_score'];
$websiteInfo['google']['pagespeed']['date'] = $toTimeDate;
return $websiteInfo;
}
/**
* function to get website report using website id
* @param Array $info The input details to process the api
* $info['id'] The id of the website - Mandatory
* $info['from_time'] The from time of report in (yyyy-mm-dd) Eg: 2014-12-24 - Optional - (default => Yesterday)
* $info['to_time'] The to time of report in (yyyy-mm-dd) Eg: 2014-12-28 - Optional - (default => Today)
* @return Array $returnInfo Contains informations about website reports
*/
function getReportById($info) {
$fromTime = getFromTime($info);
$toTime = getToTime($info);
$websiteInfo = $this->ctrler->__getWebsiteInfo($info['id']);
// if website not exists
if (empty($websiteInfo['id'])) {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid website id provided";
} else {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $this->getFormattedReport($websiteInfo, $fromTime, $toTime);
}
return $returnInfo;
}
/**
* function to get website report using user id
* @param Array $info The input details to process the api
* $info['id'] The id of the user - Mandatory
* $info['from_time'] The from time of report in (yyyy-mm-dd) Eg: 2014-12-24 - Optional - (default => Yesterday)
* $info['to_time'] The to time of report in (yyyy-mm-dd) Eg: 2014-12-28 - Optional - (default => Today)
* @return Array $returnInfo Contains informations about website reports
*/
function getReportByUserId($info) {
// if not valid user
$userId = intval($info['id']);
if (empty($userId)) {
return array(
'response' => 'Error',
'result' => 'Invalid user id'
);
}
// get all active websites
$wbList = $this->ctrler->__getAllWebsites($userId);
$fromTime = getFromTime($info);
$toTime = getToTime($info);
// loop through websites
$websiteList = array();
foreach ($wbList as $websiteInfo) {
$websiteList[$websiteInfo['id']] = $this->getFormattedReport($websiteInfo, $fromTime, $toTime);
}
// if position information is not empty
if (empty($websiteList)) {
$returnInfo['response'] = 'Error';
$returnInfo['result'] = "No reports found!";
} else {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $websiteList;
}
return $returnInfo;
}
/**
* function to get website information
* @param Array $info The input details to process the api
* $info['id'] The id of the website - Mandatory
* @return Array $returnInfo Contains informations about website
*/
function getWebsiteInfo($info) {
$websiteId = intval($info['id']);
$returnInfo = array();
// validate the website ifd and website info
if (!empty($websiteId)) {
if ($websiteInfo = $this->ctrler->__getWebsiteInfo($websiteId)) {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $websiteInfo;
return $returnInfo;
}
}
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid website id provided";
return $returnInfo;
}
/**
* function to get user websites
* @param Array $info The input details to process the api
* $info['id'] The id of the user - Mandatory
* $info['status'] The status of the websites[0/1]
* $info['search'] The search keyword
* @return Array $returnInfo Contains informations about website
*/
function getUserWebsites($info) {
$userId = intval($info['id']);
$returnInfo = array();
// validate the website ifd and website info
if (!empty($userId)) {
$websiteList = $this->ctrler->__getUserWebsites($userId, $info);
$returnInfo['response'] = 'success';
$returnInfo['result'] = $websiteList;
return $returnInfo;
}
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid user id provided";
return $returnInfo;
}
/**
* function to create website
* @param Array $info The input details to process the api
* $info['name'] The name of the website - Mandatory
* $info['url'] The url of the website - Mandatory
* $info['user_id'] The user id of website - Mandatory
* $info['title'] The title of the website - Optional
* $info['description'] The description of website - Optional
* $info['keywords'] The keyword of the website - Optional
* $info['status'] The status of the website - default[1] - Optional
* @return Array $returnInfo Contains details about the operation succes or not
*/
function createWebsite($info) {
$websiteInfo = $info;
// check for user id
if (empty($info['user_id'])) {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = 'Invalid user id';
return $returnInfo;
}
$websiteInfo['userid'] = $info['user_id'];
$this->ctrler->spTextWeb = $this->ctrler->getLanguageTexts('website', SP_API_LANG_CODE);
$return = $this->ctrler->createWebsite($websiteInfo, true);
// if website creation is success
if ($return[0] == 'success') {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $return[1];
$returnInfo['website_id'] = $this->ctrler->db->getMaxId('websites');
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = $return[1];
}
return $returnInfo;
}
/**
* function to update website
* @param Array $info The input details to process the api
* $info['id'] The id of the website - Mandatory
* $info['name'] The name of the website - Optional
* $info['url'] The url of the website - Optional
* $info['title'] The title of the website - Optional
* $info['description'] The description of website - Optional
* $info['keywords'] The keyword of the website - Optional
* $info['user_id'] The user id of website - Optional
* $info['status'] The status of the website - default[1] - Optional
* @return Array $returnInfo Contains details about the operation succes or not
*/
function updateWebsite($info) {
$websiteId = intval($info['id']);
// if website exists
if ($websiteInfo = $this->ctrler->__getWebsiteInfo($websiteId)) {
$websiteInfo['oldName'] = $websiteInfo['name'];
// loop through inputs
foreach ($info as $key => $val) {
$websiteInfo[$key] = $val;
}
// update website call as api call
$this->ctrler->spTextWeb = $this->ctrler->getLanguageTexts('website', SP_API_LANG_CODE);
$return = $this->ctrler->updateWebsite($websiteInfo, true);
// if website creation is success
if ($return[0] == 'success') {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $return[1];
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = $return[1];
}
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid website id provided";
}
return $returnInfo;
}
/**
* function to delete website
* @param Array $info The input details to process the api
* $info['id'] The id of the website - Mandatory
* @return Array $returnInfo Contains details about the operation success or not
*/
function deleteWebsite($info) {
$websiteId = intval($info['id']);
// if website exists
if ($websiteInfo = $this->ctrler->__getWebsiteInfo($websiteId)) {
$this->ctrler->__deleteWebsite($websiteId);
$returnInfo['response'] = 'success';
$returnInfo['result'] = "Successfully deleted website and related data.";
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid website id provided";
}
return $returnInfo;
}
}
?>