177 Zeilen
5.1 KiB
PHP
177 Zeilen
5.1 KiB
PHP
<?php
|
|
/**
|
|
* File:
|
|
* class.layout.php
|
|
*
|
|
* Description:
|
|
* cApi class
|
|
*
|
|
* @package Core
|
|
* @subpackage cApi
|
|
* @version $Rev$
|
|
* @since 2.0
|
|
* @author Ortwin Pinke <o.pinke@conlite.org>
|
|
* @copyright (c) 2015, conlite.org
|
|
* @license http://www.gnu.de/documents/gpl.en.html GPL v3 (english version)
|
|
* @license http://www.gnu.de/documents/gpl.de.html GPL v3 (deutsche Version)
|
|
* @link http://www.conlite.org ConLite.org
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
if (!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
cInclude('includes', 'functions.upl.php');
|
|
|
|
class cApiLayoutCollection extends ItemCollection {
|
|
|
|
public function __construct() {
|
|
global $cfg;
|
|
parent::__construct($cfg["tab"]["lay"], "idlay");
|
|
$this->_setItemClass("cApiLayout");
|
|
}
|
|
|
|
public function create($title) {
|
|
global $client;
|
|
$item = parent::createNewItem();
|
|
$item->set("name", $title);
|
|
$item->set("idclient", $client);
|
|
$item->store();
|
|
return ($item);
|
|
}
|
|
|
|
}
|
|
|
|
class cApiLayout extends Item {
|
|
|
|
protected $_sLayPath;
|
|
|
|
protected $_bFromFile = FALSE;
|
|
|
|
|
|
/**
|
|
* Configuration Array of LayFileEdit
|
|
* array is set with entries in local config file
|
|
*
|
|
* @var array
|
|
*/
|
|
private $_aLayFileEditConf = array(
|
|
'use'=>false,
|
|
'layFolderName'=>'data/layouts'
|
|
);
|
|
|
|
private $_sLayoutAlias;
|
|
|
|
/**
|
|
* Constructor Function
|
|
* @param mixed $mId Specifies the ID of item to load
|
|
*/
|
|
public function __construct($mId = false) {
|
|
$cfg = cRegistry::getConfig();
|
|
parent::__construct($cfg["tab"]["lay"], "idlay");
|
|
$this->setFilters(array(), array());
|
|
|
|
if(isset($cfg['dceLayEdit']) && is_array($cfg['dceLayEdit'])) {
|
|
$this->_aLayFileEditConf = array_merge($this->_aLayFileEditConf, $cfg['dceLayEdit']);
|
|
$this->_setLayPath();
|
|
}
|
|
|
|
$oClient = new cApiClient(cRegistry::getClientId());
|
|
$aClientProp = $oClient->getPropertiesByType('layfileedit');
|
|
if(count($aClientProp) > 0) {
|
|
$this->_aLayFileEditConf = array_merge($this->_aLayFileEditConf, $aClientProp);
|
|
}
|
|
//print_r($this->_aLayFileEditConf);
|
|
if ($mId !== false) {
|
|
$this->loadByPrimaryKey($mId);
|
|
}
|
|
}
|
|
|
|
public function getLayout() {
|
|
if($this->_aLayFileEditConf['use'] === TRUE) {
|
|
$sLayFile = $this->_aLayFileEditConf['layPath']
|
|
.$this->_sLayoutAlias."/".$this->_sLayoutAlias."html";
|
|
$this->_setCodeFromFile($sLayFile);
|
|
}
|
|
return $this->get("code");
|
|
}
|
|
|
|
|
|
protected function _getLayPath() {
|
|
return $this->_aLayFileEditConf['layPath'];
|
|
}
|
|
|
|
protected function _setLayPath() {
|
|
global $cfgClient, $client;
|
|
if(!isset($this->_aLayFileEditConf['layPath'])
|
|
|| empty($this->_aLayFileEditConf['layPath'])) {
|
|
$this->_aLayFileEditConf['layPath'] = $cfgClient[$client]["path"]["frontend"]
|
|
.$this->_aLayFileEditConf['layFolderName']."/";
|
|
}
|
|
}
|
|
|
|
protected function _getLayoutAlias() {
|
|
if(empty($this->_sLayoutAlias)) {
|
|
if($this->virgin) {
|
|
return false;
|
|
} else {
|
|
$this->_setLayoutAlias();
|
|
}
|
|
}
|
|
return $this->_sLayoutAlias;
|
|
}
|
|
|
|
protected function _setLayoutAlias() {
|
|
$this->_sLayoutAlias = strtolower(uplCreateFriendlyName($this->get('name')));
|
|
}
|
|
|
|
protected function _onLoad() {
|
|
if($this->virgin !== TRUE) {
|
|
$this->_setLayoutAlias();
|
|
$this->_setLayPath();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* read file and set an object field
|
|
*
|
|
* @param string $sFile
|
|
* @param string $sField
|
|
* @return boolean
|
|
*/
|
|
private function _setCodeFromFile($sFile) {
|
|
if(FALSE === strstr($sFile, $this->_aLayFileEditConf['layPath'])) {
|
|
$sFile = $this->_aLayFileEditConf['layPath'].$sFile;
|
|
}
|
|
$sLayDirPath = $this->_aLayFileEditConf['layPath'].$this->_sLayoutAlias."/";
|
|
|
|
if(is_dir($sLayDirPath) && is_writable($sLayDirPath)
|
|
&& file_exists($sLayDirPath.$this->_sLayoutAlias.".html")) {
|
|
$sFile = $sLayDirPath.$this->_sLayoutAlias.".html";
|
|
}
|
|
|
|
if(is_file($sFile) && is_readable($sFile)) {
|
|
$iFileSize = (int) filesize($sFile);
|
|
if($iFileSize > 0 && $fh = fopen($sFile, 'r')) {
|
|
$this->set("code", fread($fh, $iFileSize), false);
|
|
fclose($fh);
|
|
$this->_bFromFile = TRUE;
|
|
$this->_displayNoteFromFile();
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private function _displayNoteFromFile($bIsOldPath = FALSE) {
|
|
global $frame, $area;
|
|
if($frame == 4 && $area == 'lay_edit') {
|
|
$sAddMess = '';
|
|
$oNote = new Contenido_Notification();
|
|
$oNote->displayNotification('warning', i18n("Layout uses LayFromFile. Editing and Saving may not be possible in backend."));
|
|
}
|
|
}
|
|
}
|
|
?>
|