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 keyforeach ($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 nameforeach ($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 emptyif (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 emptyif (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 keywordsforeach ($list as $keywordInfo) {$keywordList[$keywordInfo['id']] = $this->getFormattedReport($keywordInfo, $fromTime, $toTime);}}// if position information is not emptyif (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 infoif (!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 idif (!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 providedif (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 successif ($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 existsif ($keywordInfo = $this->ctrler->__getKeywordInfo($keywordId)) {$keywordInfo['oldName'] = $keywordInfo['name'];// loop through inputsforeach ($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 successif ($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 existsif ($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;}}?>