name = "[unbenannte Kopie]";
$this->originalId = 0;
}
/** @see CmsObject::load()
*/
//-----------------------------------------------
function load($path=array()){
//-----------------------------------------------
parent::load($path);
if(!$this->classId){
return;
}
$query = sprintf("SELECT * FROM bruckm_stdpagecopy WHERE id = %d", $this->classId);
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$this->template = $line['template'];
$this->originalId = $line['originalId'];
$query = sprintf("SELECT * FROM bruckm_stdpage WHERE id = %d", $this->originalId);
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$this->buildingBlocks = array();
if(strlen($line['buildingBlocks']) > 0){
$buildingBlocks = explode("\t", $line['buildingBlocks']);
foreach($buildingBlocks as $b){
$block = BuildingBlockFactory::instance($b);
$block->load();
$this->buildingBlocks[] = $block;
}
}
}
/** @see Page::doSave()
*/
//----------------------------------------------
function doSave(){
//----------------------------------------------
$query = sprintf("UPDATE bruckm_stdpagecopy SET template = %s, originalId = %d WHERE id = %d",
sqlstring($this->template),
sqlnum($this->originalId),
sqlnum($this->classId));
dbQuery($query);
$buildingBlocks = array();
foreach($this->buildingBlocks as $i=>$block){
$this->buildingBlocks[$i]->save();
$buildingBlocks[] = $this->buildingBlocks[$i]->getReference();
}
$query = sprintf("UPDATE bruckm_stdpage SET buildingBlocks = %s WHERE id = %d",
sqlstring(implode("\t", $buildingBlocks)),
sqlnum($this->originalId));
dbQuery($query);
Page::doSave();
}
/** @see Page::doCreate()
*/
//----------------------------------------------
function doCreate(){
//----------------------------------------------
$query = sprintf("INSERT INTO bruckm_stdpagecopy (template) VALUES (%s)",
sqlstring($this->template));
dbQuery($query);
$this->classId = mysql_insert_id();
Page::doCreate();
}
/** @see Page::canBeDeleted()
*/
//----------------------------------------------
function canBeDeleted(){
//----------------------------------------------
return true;
}
/** @see Page::doDelete()
*/
//-----------------------------------------------
function doDelete(){
//-----------------------------------------------
parent::doDelete();
$query = sprintf("DELETE FROM bruckm_stdpagecopy WHERE id = %d LIMIT 1", $this->classId);
dbQuery($query);
}
/** @see Page::install()
*/
//-----------------------------------------------
function install(){
//-----------------------------------------------
$query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_stdpagecopy (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
originalId INT UNSIGNED NOT NULL,
template VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
)");
dbQuery($query);
}
/** @see CmsObject::update()
*/
//-----------------------------------------------
function update(){
//-----------------------------------------------
if(isset($_POST['stdpage']) && $_POST['stdpage'] != $this->originalId){
$this->originalId = $_POST['stdpage'];
$this->doLoadPageContents();
Page::update();
}
else{
parent::update();
}
if(isset($_POST['template'])){
$this->template = $_POST['template'];
}
}
/** @see CmsObject::doPrintClassContent()
*/
//-----------------------------------------------
function doPrintClassContent(){
//-----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."stdpagecopy.html");
$pages = "";
$query = sprintf("SELECT id,classId,name FROM bruckm_index WHERE class = %s ORDER BY name ASC",
sqlstring("StdPage"));
$result = dbQuery($query);
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
if($line['classId'] == $this->originalId){
$pages .= "";
}
else{
$pages .= "";
}
}
$t->setVar("PAGES", $pages);
if($this->isEditable()){
$t->setVar("PAGES_DISABLED", "");
}
else{
$t->setVar("PAGES_DISABLED", "disabled=\"disabled\"");
}
$templates = "";
$templateFiles = array();
$dir = opendir(TEMPLATE_DIR);
while($file = readdir($dir)){
if(is_file(TEMPLATE_DIR.$file)){
$templateFiles[] = $file;
}
}
sort($templateFiles);
foreach($templateFiles as $file){
if($file == $this->template){
$templates .= "";
}
else{
$templates .= "\n";
}
}
$t->setVar("TEMPLATES", $templates);
$out = $t->toString();
$out .= $this->doPrintBuildingBlockInsertBar(0);
foreach($this->buildingBlocks as $i=>$block){
$out .= $this->buildingBlocks[$i]->printContent($i);
$out .= $this->doPrintBuildingBlockInsertBar($i+1);
}
return $out;
}
/** @see CmsObject::publish()
*/
//---------------------------------------------
function publish(){
//---------------------------------------------
if($original = StdPageCopy::getOriginalOf($this->originalId)){
$original->load();
$original->setTemplate($this->template);
$out = $original->publish();
$original->unloadParent();
$original->unload();
return $out;
}
logError(4, "Original StdPage not found (id: ".$this->id.", classId: ".$this->classId.")", __FILE__, __LINE__);
$this->addError("Die Originalseite kann nicht gefunden werden!");
return false;
}
/** @see Element::getCssClass()
*/
//------------------------------------------------
function getCssClass(){
//------------------------------------------------
return "itemStdPageCopy";
}
// === ADDITIONAL METHODS ================================================================= //
/** loads the page contents when a new original page is selected
*/
//------------------------------------------------
function doLoadPageContents(){
//------------------------------------------------
$query = sprintf("SELECT * FROM bruckm_stdpage WHERE id = %d", $this->originalId);
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$this->template = $line['template'];
$this->buildingBlocks = array();
if(strlen($line['buildingBlocks']) > 0){
$buildingBlocks = explode("\t", $line['buildingBlocks']);
foreach($buildingBlocks as $b){
$block = BuildingBlockFactory::instance($b);
$block->load();
$this->buildingBlocks[] = $block;
}
}
}
/** returns all copies of an original StdPage
* @param originalId classId of the original
* @return array with copies
*/
//------------------------------------------------
function getCopiesOf($originalId){
//------------------------------------------------
$query = sprintf("SELECT id FROM bruckm_stdpagecopy WHERE originalId = %d",
sqlnum($originalId));
$result = dbQuery($query);
$copies = array();
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$query = sprintf("SELECT id FROM bruckm_index WHERE class = 'StdPageCopy' AND classId = %d LIMIT 1", $line['id']);
$result2 = dbQuery($query);
$line2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
$copies[] = FlexiconFactory::instanceById($line2['id']);
}
return $copies;
}
/** returns the original StdPage
* @param copyId classId of a copy
* @return StdPage
*/
//----------------------------------------------
function getOriginalOf($copyId){
//----------------------------------------------
$query = sprintf("SELECT id FROM bruckm_index WHERE class = %s AND classId = %d LIMIT 1",
sqlstring("StdPage"),
sqlnum($copyId));
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
return FlexiconFactory::instanceById($line['id']);
}
/** publishes only the copy, not the original
*/
//---------------------------------------------
function publishCopy(){
//---------------------------------------------
$out = $this->doPublish();
$query = sprintf("UPDATE bruckm_index SET cache = %s WHERE id = %d",
sqlstring($out),
sqlnum($this->id));
dbQuery($query);
}
};
?>