325 Zeilen
Kein EOL
7,5 KiB
PHP
325 Zeilen
Kein EOL
7,5 KiB
PHP
<?php
|
|
/**
|
|
* Project:
|
|
* Contenido Content Management System
|
|
*
|
|
* Description:
|
|
* Template Config Object
|
|
*
|
|
* Requirements:
|
|
* @con_php_req 5.0
|
|
*
|
|
*
|
|
* @package Contenido Backend classes
|
|
* @version 1.0.2
|
|
* @author Marco Jahn
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
* @link http://www.4fb.de
|
|
* @link http://www.contenido.org
|
|
* @since file available since contenido release <= 4.6
|
|
*
|
|
* {@internal
|
|
* created unknown
|
|
* modified 2008-06-30, Frederic Schneider, add security fix
|
|
* modified 2009-12-16, Dominik Ziegler, fixed sql table name
|
|
*
|
|
* $Id$:
|
|
* }}
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* Object of a contenido template configuration
|
|
*
|
|
* Class to get template configurations for the current article or the current category
|
|
*
|
|
* Example (article configuration):
|
|
*
|
|
* $tplCfg = new templateConfig($idart); //get template configuration for current article
|
|
* $exampleAr = $tplCfg->getData(20); //get all informations for container 20 for this template
|
|
*
|
|
* Example (category configuration):
|
|
* $tplCfg = new templateConfig(); //leave empty cause you only want a category configuration
|
|
* $tplCfg->getDataForIdcat ($idcat);
|
|
* $exampleAr = $tplCfg->getData(20); //get all informations for container 20 for this template
|
|
*
|
|
* $exampleAr:
|
|
* $exampleAr[0] => ""
|
|
*
|
|
* "0" specifies the CMS_VALUE set in modules
|
|
* "" contains the configuration data
|
|
*
|
|
* @author Marco Jahn <marco.jahn@4fb.de>
|
|
* @version 1.0
|
|
* @copyright four for business 2003
|
|
* @package Contenido_API
|
|
*/
|
|
|
|
if(!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
class TemplateConfig
|
|
{
|
|
/**
|
|
* stores configuration data
|
|
* @var array
|
|
*/
|
|
var $data = array();
|
|
|
|
/**
|
|
* database object
|
|
* @var object
|
|
*/
|
|
var $db;
|
|
|
|
/**
|
|
* global config variables
|
|
* @var array
|
|
*/
|
|
var $cfg;
|
|
|
|
/**
|
|
* language id
|
|
* @var int
|
|
*/
|
|
var $lang;
|
|
|
|
/**
|
|
* client id
|
|
* @var int
|
|
*/
|
|
var $client;
|
|
|
|
/**
|
|
* constructor
|
|
*
|
|
* @return void
|
|
*/
|
|
function templateConfig($idart = 0)
|
|
{
|
|
global $cfg, $lang, $client;
|
|
|
|
$this->db = new DB_ConLite;
|
|
|
|
$this->cfg = &$cfg;
|
|
$this->lang = &$lang;
|
|
$this->client = &$client;
|
|
$this->idart = $idart;
|
|
|
|
if ($idart != 0)
|
|
{
|
|
$idtplcfg = $this->_getTplCfgByArtId($idart);
|
|
$this->data = $this->_getContainersByTplCfg($idtplcfg);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* reset data array
|
|
*
|
|
* @return void
|
|
*/
|
|
function resetData()
|
|
{
|
|
unset($this->data);
|
|
}
|
|
|
|
/**
|
|
* get cms_values
|
|
* returns false if no configuration was found
|
|
*
|
|
* @param integer $idcontainer id for the container which settings should be returned
|
|
*
|
|
* @return array array with the settings for each cms_value of the specified container
|
|
*/
|
|
function getData ($idcontainer)
|
|
{
|
|
if ($this->data[$idcontainer])
|
|
{
|
|
$tmpVar = explode("&",trim($this->data[$idcontainer],"&"));
|
|
foreach ($tmpVar as $string)
|
|
{
|
|
$tmpData = explode("=", $string);
|
|
$tmpArray[$tmpData[0]] = urldecode($tmpData[1]);
|
|
}
|
|
return $tmpArray;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get data
|
|
*/
|
|
function getDataForIdcat ($idcat)
|
|
{
|
|
$idtplcfg = $this->_getTplCfgByCatId($idcat);
|
|
$this->data = $this->_getContainersByTplCfg($idtplcfg);
|
|
}
|
|
|
|
/**
|
|
* get values from template pre configuration
|
|
* returns false if no pre configuration values were found
|
|
*
|
|
* @param integer $idart id of the article
|
|
* @param integer $containerid id for the container of which the settings should be returned
|
|
*
|
|
* @return array containing pre configuration values
|
|
*/
|
|
|
|
function getPreConfigurationValues ($idart,$containerid) {
|
|
|
|
global $cfg;
|
|
|
|
$idtplcfg = $this->_getTplCfgByArtId($idart);
|
|
if ((!$idtplcfg) || ($idtplcfg==0)) {
|
|
$idcat = $this->_getIdCatByIdArt($idart);
|
|
$idtplcfg = $this->_getTplCfgByCatId($idcat);
|
|
}
|
|
|
|
if ($idtplcfg) {
|
|
#Article or cat is assigned to a template
|
|
$sql = "SELECT * FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg = '".Contenido_Security::toInteger($idtplcfg)."'";
|
|
$this->db->query($sql);
|
|
if ($this->db->next_record()) {
|
|
$idtpl = $this->db->f("idtpl");
|
|
$sql = "SELECT * FROM ".$cfg["tab"]["tpl"]." WHERE idtpl = '".Contenido_Security::toInteger($idtpl)."'";
|
|
$this->db->query($sql);
|
|
if ($this->db->next_record()) {
|
|
$idtplcfg = $this->db->f("idtplcfg");
|
|
$this->_getContainersByTplCfg($idtplcfg);
|
|
$arrData = $this->getData ($containerid);
|
|
return $arrData;
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* get template config id by article id
|
|
* returns false if the article has no configuration
|
|
*
|
|
* returns the template configuration for the current article
|
|
* if the article has not a template configuration it will return the configuration
|
|
* for the current category
|
|
*
|
|
* @param integer $idart id of the article which configuration should be get
|
|
*
|
|
* @return string returns the template configuration
|
|
*/
|
|
function _getTplCfgByArtId($idart)
|
|
{
|
|
$sql = "
|
|
SELECT
|
|
idtplcfg
|
|
FROM ".$this->cfg['tab']['art_lang']."
|
|
WHERE
|
|
idart='".Contenido_Security::toInteger($idart)."'
|
|
AND
|
|
idlang='".Contenido_Security::toInteger($this->lang)."'";
|
|
|
|
//query
|
|
$this->db->query($sql);
|
|
|
|
if (!$this->db->next_record())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if ($this->db->f("idtplcfg") != 0)
|
|
{
|
|
return $this->db->f("idtplcfg");
|
|
}
|
|
else
|
|
{
|
|
$idcat = $this->_getIdCatByIdArt($idart);
|
|
return $this->_getTplCfgByCatId($idcat);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* get category id by article id
|
|
*
|
|
* returns false if the specified article doesn't belong to a category
|
|
*
|
|
* @param integer $idart id of the current article
|
|
*
|
|
* @return int returns the idcat for the current article
|
|
*/
|
|
|
|
function _getIdCatByIdArt($idart)
|
|
{
|
|
$sql = "SELECT idcat FROM ".$this->cfg['tab']['cat_art']." WHERE idart='".Contenido_Security::toInteger($idart)."' ORDER BY idcat ASC LIMIT 1";
|
|
$this->db->query($sql);
|
|
if ($this->db->next_record())
|
|
{
|
|
return $this->db->f("idcat");
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get template config id by category id
|
|
* returns false if the category specified has not a template configuration
|
|
*
|
|
* @param integer $idcat id of the category which template config should be read out
|
|
*
|
|
* @return string template configuration for the selected category
|
|
*/
|
|
function _getTplCfgByCatId ($idcat)
|
|
{
|
|
$sql = "SELECT idtplcfg FROM ".$this->cfg['tab']['cat_lang']." WHERE idcat='".Contenido_Security::toInteger($idcat)."'
|
|
AND idlang='".Contenido_Security::toInteger($this->lang)."'";
|
|
$this->db->query($sql);
|
|
if ($this->db->next_record())
|
|
{
|
|
return $this->db->f("idtplcfg");
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get containers for a specified template configuration
|
|
* returns false if no configuratin was found
|
|
*
|
|
* @param integer $idtplcfg id of the template
|
|
*
|
|
* @return array array with all containers and their values
|
|
*/
|
|
function _getContainersByTplCfg($idtplcfg)
|
|
{
|
|
$sql = "
|
|
SELECT
|
|
number, container
|
|
FROM ".$this->cfg['tab']['container_conf']."
|
|
WHERE idtplcfg='".Contenido_Security::toInteger($idtplcfg)."'
|
|
ORDER BY
|
|
number ASC";
|
|
$this->db->query($sql);
|
|
|
|
if ($this->db->nf() == 0)
|
|
{ //nothing found
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//get all results
|
|
while ($this->db->next_record())
|
|
{
|
|
$this->data[$this->db->f("number")] = $this->db->f("container");
|
|
}
|
|
|
|
//return data array
|
|
return $this->data;
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|