Subversion Repositories cheapmusic

Rev

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;
        }
        
}
?>