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 keyword API
*
* @author Seo panel
*
*/
class KeywordAPI extends Seopanel{
/**
* the main controller to get details for api
* @var Object
*/
var $ctrler;
/**
* The report controller to get details of keyword reports
* @var Object
*/
var $reportCtrler;
/**
* The list contains search engine details
* @var Array
*/
var $seList;
/**
* The constructor of API
*/
function __construct() {
include_once(SP_CTRLPATH . "/keyword.ctrl.php");
include_once(SP_CTRLPATH . "/report.ctrl.php");
$this->ctrler = new KeywordController();
$this->reportCtrler = New ReportController();
$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;
}
}
/**
* function to get keyword report and format it
* @param array $keywordInfo The information about keyword
* @param int $fromTime The time stamp of from time
* @param int $toTime The time stamp of to time
* @return $keywordInfo The formatted keyword info with position details
*/
function getFormattedReport($keywordInfo, $fromTime, $toTime) {
$positionInfo = $this->reportCtrler->__getKeywordSearchReport($keywordInfo['id'], $fromTime, $toTime, true);
// loop through and add search engine name
foreach ($positionInfo as $seId => $info) {
$positionInfo[$seId]['search_engine'] = $this->seList[$seId]['domain'];
$positionInfo[$seId]['date'] = date('Y-m-d', $toTime);
}
$keywordInfo['position_info'] = $positionInfo;
return $keywordInfo;
}
/**
* function to get keyword report using keyword id
* @param Array $info The input details to process the api
* $info['id'] The id of the keyword - 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 keyword reports
*/
function getReportById($info) {
$fromTime = getFromTime($info);
$toTime = getToTime($info);
$keywordInfo = $this->ctrler->__getKeywordInfo($info['id']);
$positionInfo = $this->getFormattedReport($keywordInfo, $fromTime, $toTime);
// if position information is not empty
if (empty($positionInfo)) {
$returnInfo['response'] = 'Error';;
$returnInfo['result'] = "No reports found!";
} else {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $positionInfo;
}
return $returnInfo;
}
/**
* function to get keyword 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 keyword reports
*/
function getReportByWebsiteId($info) {
$websiteId = intval($info['id']);
if (empty($websiteId)) {
return array(
'response' => 'Error',
'result' => 'Invalid website id'
);
}
$fromTime = getFromTime($info);
$toTime = getToTime($info);
$list = $this->ctrler->__getAllKeywords('', $websiteId);
// lopp through keywords
$keywordList = array();
foreach ($list as $keywordInfo) {
$keywordList[$keywordInfo['id']] = $this->getFormattedReport($keywordInfo, $fromTime, $toTime);
}
// if position information is not empty
if (empty($keywordList)) {
$returnInfo['response'] = 'Error';
$returnInfo['result'] = "No reports found!";
} else {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $keywordList;
}
return $returnInfo;
}
/**
* function to get keyword 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 keyword reports
*/
function getReportByUserId($info) {
$userId = intval($info['id']);
if (empty($userId)) {
return array(
'response' => 'Error',
'result' => 'Invalid user id'
);
}
$fromTime = getFromTime($info);
$toTime = getToTime($info);
// get all active websites
$websiteController = New WebsiteController();
$websiteList = $websiteController->__getAllWebsitesWithActiveKeywords($userId, true);
// loop through websites
$keywordList = array();
foreach ($websiteList as $websiteInfo) {
$websiteId = $websiteInfo['id'];
$list = $this->ctrler->__getAllKeywords('', $websiteId);
// loop through keywords
foreach ($list as $keywordInfo) {
$keywordList[$keywordInfo['id']] = $this->getFormattedReport($keywordInfo, $fromTime, $toTime);
}
}
// if position information is not empty
if (empty($keywordList)) {
$returnInfo['response'] = 'Error';
$returnInfo['result'] = "No reports found!";
} else {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $keywordList;
}
return $returnInfo;
}
/**
* function to get keyword information
* @param Array $info The input details to process the api
* $info['id'] The id of the keyword - Mandatory
* @return Array $returnInfo Contains informations about keyword
*/
function getKeywordInfo($info) {
$keywordId = intval($info['id']);
$returnInfo = array();
// validate the keyword id and keyword info
if (!empty($keywordId)) {
if ($keywordInfo = $this->ctrler->__getKeywordInfo($keywordId)) {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $keywordInfo;
return $returnInfo;
}
}
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid keyword id provided";
return $returnInfo;
}
/**
* function to get website keywords
* @param Array $info The input details to process the api
* $info['id'] The id of the website - Mandatory
* $info['status'] The status of the keyword
* $info['search'] The search keyword
* @return Array $returnInfo Contains informations about keyword
*/
function getWebsiteKeywords($info) {
$websiteId = intval($info['id']);
$returnInfo = array();
// validate the website id
if (!empty($websiteId)) {
$keywordList = $this->ctrler->__getWebisteKeywords($websiteId, $info);
$returnInfo['response'] = 'success';
$returnInfo['result'] = $keywordList;
return $returnInfo;
}
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid website id provided";
return $returnInfo;
}
/**
* function to create keyword
* @param Array $info The input details to process the api
* $info['name'] The name of the keyword - Mandatory
* $info['website_id'] The website id of keyword - Mandatory
* $info['searchengines'] The search engine ids of the keyword - Mandatory[id1:id2]
* $info['lang_code'] The language code of the keyword - Optional[de]
* $info['country_code'] The country code of the keyword - Optional[ar]
* $info['status'] The status of the keyword - default[1] - Optional
* @return Array $returnInfo Contains details about the operation succes or not
*/
function createKeyword($info) {
// if empty website id provided
if (empty($info['website_id'])) {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "Please provide valid website id.";
return $returnInfo;
}
$keywordInfo = $info;
$keywordInfo['userid'] = $info['user_id'];
$this->ctrler->spTextKeyword = $this->ctrler->getLanguageTexts('keyword', SP_API_LANG_CODE);
$keywordInfo['searchengines'] = explode(':', $keywordInfo['searchengines']);
$return = $this->ctrler->createKeyword($keywordInfo, true);
// if keyword creation is success
if ($return[0] == 'success') {
$returnInfo['response'] = 'success';
$returnInfo['result'] = $return[1];
$returnInfo['keyword_id'] = $this->ctrler->db->getMaxId('keywords');
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = $return[1];
}
return $returnInfo;
}
/**
* function to update keyword
* @param Array $info The input details to process the api
* $info['id'] The id of the keyword - Mandatory
* $info['name'] The name of the keyword - Optional
* $info['lang_code'] The language code of the keyword - Optional[de,fr]
* $info['country_code'] The country code of the keyword - Optional[ar,in]
* $info['website_id'] The description of keyword - Optional
* $info['searchengines'] The search engine ids of the keyword - Optional[id1:id2]
* $info['status'] The status of the keyword - default[1] - Optional
* @return Array $returnInfo Contains details about the operation succes or not
*/
function updateKeyword($info) {
$keywordId = intval($info['id']);
// if keyword exists
if ($keywordInfo = $this->ctrler->__getKeywordInfo($keywordId)) {
$keywordInfo['oldName'] = $keywordInfo['name'];
// loop through inputs
foreach ($info as $key => $val) {
$keywordInfo[$key] = $val;
}
// update keyword call as api call
$keywordInfo['searchengines'] = explode(':', $keywordInfo['searchengines']);
$this->ctrler->spTextKeyword = $this->ctrler->getLanguageTexts('keyword', SP_API_LANG_CODE);
$return = $this->ctrler->updateKeyword($keywordInfo, true);
// if keyword 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 keyword id provided";
}
return $returnInfo;
}
/**
* function to delete keyword
* @param Array $info The input details to process the api
* $info['id'] The id of the keyword - Mandatory
* @return Array $returnInfo Contains details about the operation succes or not
*/
function deleteKeyword($info) {
$keywordId = intval($info['id']);
// if keyword exists
if ($keywordInfo = $this->ctrler->__getKeywordInfo($keywordId)) {
// update keyword call as api call
$this->ctrler->__deleteKeyword($keywordId);
$returnInfo['response'] = 'success';
$returnInfo['result'] = "Successfully deleted keyword";
} else {
$returnInfo['response'] = 'Error';
$returnInfo['error_msg'] = "The invalid keyword id provided";
}
return $returnInfo;
}
}
?>