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 controller functions
class Controller extends Seopanel{
var $view;
var $session;
var $validate;
var $dbHelper;
var $db;
var $spider;
var $paging;
var $layout = 'default';
var $sessionCats = array('common','login','button','label');
function __construct(){
# create database object
$dbObj = New Database(DB_ENGINE);
$this->dbHelper = $dbObj;
$this->db = $dbObj->dbConnect();
$this->view = New View();
$this->session = New Session();
$this->validate = New Validation();
$this->spider = New Spider();
$this->paging = New Paging();
# to define all system variables
$force = false;
if (!empty($_GET['lang_code'])) {
$_GET['lang_code'] = addslashes($_GET['lang_code']);
$this->assignLangCode(trim($_GET['lang_code']));
$_GET['lang_code'] = '';
$force = true;
}
# func to assign texts to session
$_SESSION['lang_code'] = empty($_SESSION['lang_code']) ? SP_DEFAULTLANG : $_SESSION['lang_code'];
$this->assignTextsToSession($_SESSION['lang_code'], $force);
}
# func to assign lang code
function assignLangCode($langCode) {
$sql = "select count(*) count from languages where lang_code='$langCode' and translated=1";
$info = $this->db->select($sql, true);
$langCode = empty($info['count']) ? 'en' : $langCode;
$_SESSION['lang_code'] = $langCode;
if ($userId = isLoggedIn()) {
$sql = "update users set lang_code='$langCode' where id=$userId";
$res = $this->db->query($sql);
@Session::setSession('text', '');
}
}
# func to get all system settings
function __getAllSettings($showCheck=false, $showVal=1, $category='system') {
$condition = $showCheck ? " where `display`=$showVal and set_category='$category'" : "";
$sql = "select * from settings $condition order by id";
$settingsList = $this->db->select($sql);
return $settingsList;
}
# to define all system settings
function defineAllSystemSettings() {
$settingsList = $this->__getAllSettings();
foreach($settingsList as $settingsInfo){
if(!defined($settingsInfo['set_name'])){
define($settingsInfo['set_name'], $settingsInfo['set_val']);
}
}
}
# func to restore data
function restoreData() {
$dbFile = SP_DATAPATH."/seopanel.sql";
$this->db->importDatabaseFile($dbFile);
}
# func set variable to ctp
function set($varName, $varValue){
$this->data[$varName] = $varValue;
}
# normal render function
function render($viewFile='home', $layout='default'){
if(empty($layout) || ($layout == 'default')){
if(!empty($this->layout)){
$layout = $this->layout;
}
if ($layout == 'default') {
$this->set('translatorInfo', $this->getTranslatorInfo());
}
}
$this->view->data = $this->data;
$this->view->render($viewFile, $layout);
}
# function to get translator info
function getTranslatorInfo() {
$translatorInfo = '';
if ($_SESSION['lang_code'] != 'en') {
$sql = "select t.*,lang_show from translators t,languages l where l.lang_code=t.lang_code and t.lang_code='{$_SESSION['lang_code']}'";
$list = $this->db->select($sql);
if (count($list) > 0) {
$trname = $list[0]['lang_show']." ". $_SESSION['text']['label']['translation by']. " ";
$trlink = "";
foreach ($list as $i => $info) {
$trname .= $i ? " and ".$info['trans_name'] : $info['trans_name'];
$trlink .= " | <a href='{$info['trans_website']}' target='_blank' style='font-size:12px;'>{$info['trans_company']}</a>";
}
$translatorInfo .= " | $trname $trlink";
}
}
return $translatorInfo;
}
# plugin render function
function pluginRender($viewFile='home', $layout='default'){
if(empty($layout) || ($layout == 'default')){
if(!empty($this->layout)){
$layout = $this->layout;
}
}
$this->view->data = $this->data;
$this->view->pluginRender($viewFile, $layout);
}
# normal plugingetViewContent function
function getPluginViewContent($viewFile){
$this->view->data = $this->data;
return $this->view->getPluginViewContent($viewFile);
}
# func to getting language texts
function getLanguageTexts($category, $langCode='en') {
$langTexts = array();
$sql = "select label,content from texts where category='$category' and lang_code='$langCode' and content!='' order by label";
$textList = $this->db->select($sql);
foreach ($textList as $listInfo) {
$langTexts[$listInfo['label']] = stripslashes($listInfo['content']);
}
# if langauge is not english
if ($langCode != 'en') {
$defaultTexts = $this->getLanguageTexts($category, 'en');
foreach ($defaultTexts as $label => $content) {
if (empty($langTexts[$label])) {
$langTexts[$label] = $content;
}
}
}
return $langTexts;
}
# func to assign language to session
function assignTextsToSession($langCode='en', $force=false) {
if (SP_LANGTESTING || empty($_SESSION['text']) || $force ) {
$_SESSION['text'] = array();
foreach ($this->sessionCats as $category) {
$_SESSION['text'][$category] = $this->getLanguageTexts($category, $langCode);
}
}
}
# function to check whether user is keyword owner or not
function checkUserIsObjectOwner($objId, $objName='website') {
if (!isAdmin()) {
$userId = isLoggedIn();
switch ($objName) {
case "keyword":
$sql = "select k.id from keywords k,websites w where k.website_id=w.id and w.user_id='".intval($userId)."' and k.id='".intval($objId)."'";
break;
case "website":
$sql = "select id from websites where id='".intval($objId)."' and user_id='".intval($userId)."'";
break;
}
$info = $this->db->select($sql, true);
if (empty($info['id'])) {
showErrorMsg("You are not allowed to access this page!");
}
}
}
# to create component object
function createComponent($compName) {
include_once(SP_CTRLPATH."/components/".strtolower($compName).".php");
$componentObj = new $compName();
return $componentObj;
}
# to create cotroller object
function createController($ctrlName) {
include_once(SP_CTRLPATH."/".strtolower($ctrlName).".ctrl.php");
$ctrlName .= "Controller";
$controllerObj = new $ctrlName();
return $controllerObj;
}
# function to create mysql connect again
function checkDBConn($force=false) {
if($force || !is_object($this->db)){
$dbObj = New Database(DB_ENGINE);
$this->db = $dbObj->dbConnect();
}
}
# normal getViewContent function
function getViewContent($viewFile){
$this->view->data = $this->data;
return $this->view->getViewContent($viewFile);
}
}
?>