name = "[unbenannte Presseinfo]"; $this->thumb = ""; $this->pdf = ""; $this->visible = 1; $this->buttonDelete = true; $this->buttonMove = true; } /** @see CmsObject::load() */ //----------------------------------------------- function load($path=array()){ //----------------------------------------------- parent::load($path); if(!$this->classId){ return; } $query = sprintf("SELECT * FROM bruckm_pressinfo WHERE id = %d", $this->classId); $result = dbQuery($query); $line = mysqli_fetch_array($result, MYSQLI_ASSOC); if($line['pdf']){ if(file_exists(PRESS_THUMB_DIR.$this->pdf)){ $this->pdf = $line['pdf']; } else{ logError(4, "PressInfo PDF doesn't exist anymore: $line[pdf]", __FILE__, __LINE__); } } if($line['thumb']){ if(file_exists(PRESS_THUMB_DIR.$this->thumb)){ $this->thumb = $line['thumb']; } else{ logError(4, "PressInfo thumbnail doesn't exist anymore: $line[thumb]", __FILE__, __LINE__); } } } /** @see Page::doSave() */ //---------------------------------------------- function doSave(){ //---------------------------------------------- $query = sprintf("UPDATE bruckm_pressinfo SET thumb = %s, pdf = %s WHERE id = %d", sqlstring($this->thumb), sqlstring($this->pdf), sqlnum($this->classId)); dbQuery($query); parent::doSave(); } /** @see Page::doCreate() */ //---------------------------------------------- function doCreate(){ //---------------------------------------------- $query = sprintf("INSERT INTO bruckm_pressinfo (thumb, pdf) VALUES ('', '')"); dbQuery($query); $this->classId = mysql_insert_id(); parent::doCreate(); $this->childObjects[] = FlexiconFactory::instanceByClass("PressPage", $this); parent::doSave(); } /** @see Page::doDelete() */ //----------------------------------------------- function doDelete(){ //----------------------------------------------- parent::doDelete(); $query = sprintf("DELETE FROM bruckm_pressinfo WHERE id = %d LIMIT 1", $this->classId); dbQuery($query); if(!empty($this->thumb) && file_exists(PRESS_THUMB_DIR.$this->thumb)){ @unlink(PRESS_THUMB_DIR.$this->thumb); } if(!empty($this->pdf) && file_exists(PRESS_THUMB_DIR.$this->pdf)){ @unlink(PRESS_THUMB_DIR.$this->pdf); } } /** @see Page::install() */ //----------------------------------------------- function install(){ //----------------------------------------------- $query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_pressinfo ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, thumb VARCHAR(10) NOT NULL DEFAULT '', pdf VARCHAR(10) NOT NULL DEFAULT '', PRIMARY KEY (id) )"); dbQuery($query); } /** @see CmsObject::update() */ //----------------------------------------------- function update(){ //----------------------------------------------- parent::update(); if($_POST['pressname'] != "[unbenannte Presseinfo]"){ $this->name= $_POST['pressname']; } $this->childObjects[0]->setName($this->name); if(isset($_FILES['thumb']) && $_FILES['thumb']['error'] == UPLOAD_ERR_OK){ $this->thumb = $this->uploadPreviewImage($_FILES['thumb']); } if(isset($_FILES['pdf']) && $_FILES['pdf']['error'] == UPLOAD_ERR_OK){ $this->pdf = $this->uploadFile($_FILES['pdf']); } } /** @see CmsObject::doPrintClassContent() */ //----------------------------------------------- function doPrintClassContent(){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."pressinfo.html"); $t->setVar("NAME", htmlspecialchars($this->name)); if(empty($this->thumb) || !file_exists(PRESS_THUMB_DIR.$this->thumb)){ $t->removeBlock("THUMB"); } else{ $t->setVar("THUMB", PRESS_THUMB_DIR.$this->thumb."?random=".time()); } if(empty($this->pdf) || !file_exists(PRESS_THUMB_DIR.$this->pdf)){ $t->removeBlock("PDF"); } else{ $t->setVar("PDF", PRESS_THUMB_DIR.$this->pdf); } return $t->toString(); } /** @see CmsObject::preview() */ //--------------------------------------------- function preview(){ //--------------------------------------------- $child = clone($this->childObjects[0]); $child->load(); return $child->preview(); } /** @see CmsObject::publish() */ //--------------------------------------------- function publish(){ //--------------------------------------------- $load = !$this->childObjects[0]->isLoaded(); if($load){ $this->childObjects[0]->load(); } $this->childObjects[0]->publish(); if($load){ $this->childObjects[0]->unload(); } } /** @see Page::canBePublished() */ //---------------------------------------------- function canBePublished(){ //---------------------------------------------- $ok = true; if(empty($this->name)){ $this->addError("Bitte geben Sie einen Titel für die Presseinfo ein!"); $ok = false; } if(sizeof($this->childObjects) == 0){ $this->addError("Bitte legen Sie zuerst eine Seite für die Presseinfo an!"); $ok = false; } else if(!$this->childObjects[0]->canBePublished()){ $this->addError("Die Presseseite ist fehlerhaft!"); $this->addError($this->childObjects[0]->getErrors()); $ok = false; } return $ok; } /** @see Element::getCssClass() */ //------------------------------------------------ function getCssClass(){ //------------------------------------------------ return "itemPressInfo"; } // === ADDITIONAL METHODS ========================================================= // /** uploads a preview image file * @param file $_FILES file date */ //------------------------------------------------ function uploadPreviewImage($file){ //------------------------------------------------ //remove old image if(!empty($this->thumb) && file_exists(PRESS_THUMB_DIR.$this->thumb)){ @unlink(PRESS_THUMB_DIR.$this->thumb); } //create target path $imgSize = getImageSize($file['tmp_name']); switch($imgSize[2]){ case 1: //gif $path = $this->id.".gif"; break; case 2: //jpg $path = $this->id.".jpg"; break; case 3: //png $path = $this->id.".png"; break; default: logError(3, "Unsupported mime type: $file[name] ($imgSize[2])", __FILE__, __LINE__); $this->addError("Das Bild verwendet ein nicht unterstütztes Dateiformat oder es ist beschädigt!"); return ""; } //resize image if($imgSize[0] > $this->thumbWidth || $imgSize[1] > $this->thumbHeight){ switch($imgSize[2]){ case 1: //gif $original = imageCreateFromGif($file['tmp_name']); break; case 2: //jpg $original = imageCreateFromJpeg($file['tmp_name']); break; case 3: //png $original = imageCreateFromPng($file['tmp_name']); break; } $origWidth = $imgSize[0]; $origHeight = $imgSize[1]; $width = $this->thumbWidth; $height = $this->thumbHeight; $origX = 0; $origY = 0; //clip image if(!$this->thumbStretch){ if($origWidth > $origHeight){ $origX = ($origWidth - $origHeight)/2; $origWidth = $origHeight; } else{ $origY = ($origHeight - $origWidth)/2; $origHeight = $origWidth; } } $small = imageCreateTrueColor($width, $height); imageCopyResampled($small, $original, 0, 0, $origX, $origY, $width, $height, $origWidth, $origHeight); switch($imgSize[2]){ case 1: if(!@imageGif($small, PRESS_THUMB_DIR.$path)){ logError(4, "Could not create gif image: $path", __FILE__, __LINE__); $this->addError("Das Bild konnte nicht erzeugt werden!"); return ""; } break; case 2: if(!@imageJpeg($small, PRESS_THUMB_DIR.$path, 100)){ logError(4, "Could not create jpg image: $path", __FILE__, __LINE__); $this->addError("Das Bild konnte nicht erzeugt werden!"); return ""; } break; case 3: if(!@imagePng($small, PRESS_THUMB_DIR.$path)){ logError(4, "Could not create png image: $path", __FILE__, __LINE__); $this->addError("Das Bild konnte nicht erzeugt werden!"); return ""; } break; } imageDestroy($small); imageDestroy($original); @chmod(PRESS_THUMB_DIR.$path, 0777); } //copy image in original size else{ if(@move_uploaded_file($file['tmp_name'], PRESS_THUMB_DIR.$path)){ @chmod(PRESS_THUMB_DIR.$path, 0777); } else{ logError(4, "Could not copy image: $file[tmp_name] => $path)", __FILE__, __LINE__); $this->addError("Das Bild konnte nicht erzeugt werden!"); return ""; } } return $path; } /** uploads the pdf file */ //------------------------------------------ function uploadFile($file) { //------------------------------------------ //remove old pdf if(!empty($this->pdf) && file_exists(PRESS_THUMB_DIR.$this->pdf)){ @unlink(PRESS_THUMB_DIR.$this->pdf); } $path = $this->id . ".pdf"; move_uploaded_file($file["tmp_name"], PRESS_THUMB_DIR . $path); return $path; } /** returns the html template that is selected in the PersonList * @return template */ //------------------------------------------ function getTemplate(){ //------------------------------------------ if(!$this->parentObj){ $this->parentObj = FlexiconFactory::instanceById($this->parentId); } if(!$this->parentObj->isLoaded()){ $this->parentObj->load(); } return $this->parentObj->getTemplate(); } /** returns the Menu object * @return Menu */ //------------------------------------------ function getMenu(){ //------------------------------------------ if(!$this->parentObj){ $this->parentObj = FlexiconFactory::instanceById($this->parentId); } if(!$this->parentObj->isLoaded()){ $this->parentObj->load(); } return $this->parentObj->getMenu(); } /** prints as list item in PressList * @param alt flag for alternating template * @return string */ //---------------------------------------- function publishForPressList($alt){ //---------------------------------------- $t = new Template(TEMPLATE_DIR."subparts/pressinfo$alt.html"); $t->setVar("ID", $this->id); $t->setVar("NAME", htmlspecialchars($this->name)); if(!empty($this->thumb) && file_exists(PRESS_THUMB_DIR.$this->thumb)){ $t->setVar("THUMB", $this->thumb); } else{ $t->setVar("THUMB", "default$alt.jpg"); } return $t->toString(); } /** provides a pdf version of the page as download */ //------------------------------------------- function downloadPdf(){ //------------------------------------------- // there exists and uploaded pdf file if ($this->pdf) { header("Location: " . PRESS_THUMB_DIR . $this->pdf); return; } // generate a pdf file on the fly $load = !$this->childObjects[0]->isLoaded(); if($load){ $this->childObjects[0]->load(); } $this->childObjects[0]->downloadPdf($this->name . ".pdf"); } }; ?>