file = ""; $this->displayName = ""; $this->setDirectory(FILE_DIR); $this->useAbsoluteUrl(false); } /** @see BuildingBlock::install() */ //----------------------------------------------- function install(){ //----------------------------------------------- $query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_fileblock ( id INT not null AUTO_INCREMENT, file VARCHAR(100) not null, displayName VARCHAR(100) not null, PRIMARY KEY(id) )"); dbQuery($query); } /** @see BuildingBlock::load() */ //------------------------------------------------- function load(){ //------------------------------------------------- $query = sprintf("SELECT * FROM bruckm_fileblock WHERE id = %d", $this->id); $result = dbQuery($query); $line = mysqli_fetch_array($result, MYSQLI_ASSOC); $this->file = $line['file']; $this->displayName = $line['displayName']; } /** @see BuildingBlock::doSave() */ //----------------------------------------------- function doSave(){ //----------------------------------------------- $query = sprintf("UPDATE bruckm_fileblock SET file = %s, displayName = %s WHERE id = %d", sqlstring($this->file), sqlstring($this->displayName), $this->id); dbQuery($query); } /** @see BuildingBlock::doCreate() */ //----------------------------------------------- function doCreate(){ //----------------------------------------------- $query = sprintf("INSERT INTO bruckm_fileblock (file, displayName) VALUES (%s, %s)", sqlstring($this->file), sqlstring($this->displayName)); dbQuery($query); return mysql_insert_id(); } /** @see BuildingBlock::delete() */ //------------------------------------------------- function delete(){ //------------------------------------------------- $query = sprintf("DELETE FROM bruckm_fileblock WHERE id = %d", $this->id); dbQuery($query); @unlink($this->fileDir.$this->file); } /** @see BuildingBlock::update() */ //----------------------------------------------- function update(){ //----------------------------------------------- if(isset($_FILES["fileblock_file".$this->id]) && $_FILES["fileblock_file".$this->id]['error'] == UPLOAD_ERR_OK){ $this->file = $this->findName($this->fileDir, $_FILES["fileblock_file".$this->id]['name']); move_uploaded_file($_FILES["fileblock_file".$this->id]["tmp_name"], $this->fileDir.$this->file); } $this->displayName = trim($_POST["fileblock_name".$this->id]); if(empty($this->displayName)){ $this->displayName = $this->file; } } /** @see BuildingBlock::printContent() */ //----------------------------------------------- function printContent($position){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."fileblock.html"); $t->setVar("ID", $this->id); $t->setVar("POSITION", $position); $t->setVar("DISPLAYNAME", htmlspecialchars($this->displayName)); if(!empty($this->file)){ $t->setVar("PATH", $this->fileDir.$this->file); $t->removeBlock("UPLOAD"); } else{ $t->removeBlock("FILE"); } return $t->toString(); } /** @see BuildingBlock::publish() */ //---------------------------------------------- function publish(){ //---------------------------------------------- if(!file_exists($this->fileDir.$this->file)){ logError(3, "File ".$this->file." doesn't exist", __FILE__, __LINE__); return ""; } if($this->absoluteUrl){ $f = '
'; return $f; } else { $f = new Template(TEMPLATE_DIR."subparts/file.html"); $f->setVar("ID", $this->id); $f->setVar("PATH", $this->fileDir.$this->file); $f->setVar("DISPLAY_NAME", htmlspecialchars($this->displayName)); return $f->toString(); } } /** @see BuildingBlock::publishAsPlainText() */ //---------------------------------------------- function publishAsPlainText(){ //---------------------------------------------- return "[Dateilink] http://www.bruckmuehle.at/newsletter/" . $this->file . "\r\n\r\n"; } /** @see BuildingBlock::publishForNewsletter() */ //---------------------------------------------- function publishForNewsletter(){ //---------------------------------------------- $p = new Template(NEWSLETTER_DIR . "subparts/file.html"); $p->setVar("SRC", $this->file); $p->setVar("ALT", htmlspecialchars($this->displayName)); return $p->toString(); } // === ADDITIONAL METHODS ========================================================== // /** finds a path that does not exist * @param dir target directory * @param name name of the source image * @return filename in the target directory that does not exist */ //----------------------------------------------- function findName($dir, $name){ //----------------------------------------------- $name = strtolower($name); $name = str_replace("ä", "ae", $name); $name = str_replace("ö", "oe", $name); $name = str_replace("ü", "ue", $name); $name = str_replace("ß", "sz", $name); $name = ereg_replace("[^A-Za-z0-9\.-_]", "", $name); if(!file_exists($dir.$name)){ return $name; } //extract file extension $dot = strrpos($name, "."); $ext = substr($name, $dot+1); $name = substr($name, 0, $dot); //add 3-digit number $count = 1; while(file_exists(sprintf("%s%s%03d.%s", $dir, $name, $count, $ext))){ $count++; } return sprintf("%s%03d.%s", $name, $count, $ext); } /** sets flag for switching between relative paths and absolute url * @param useAbsoluteUrl true to use absolute url * false to use relative paths */ //--------------------------------------------- function useAbsoluteUrl($useAbsoluteUrl){ //--------------------------------------------- $this->absoluteUrl = $useAbsoluteUrl; } /** sets the output directory */ //----------------------------------------------- function setDirectory($fileDir){ //----------------------------------------------- $this->fileDir = $fileDir; } /** @see BuildingBlock::publishForPdf() */ //---------------------------------------------- function publishForPdf($pdf){ //---------------------------------------------- $url = "http://www.kulturhaus-bruckmuehle.at/files/" . $this->file; $pdf->SetFont("Arial", "I", 12); $pdf->SetTextColor(0, 0, 127); $pdf->Write(5, "» " . $this->displayName, $url); $pdf->Ln(); $pdf->Ln(); } }; ?>