
Öffentliche Methoden | |
| File ($objectid='') | |
| full_filename () | |
| filenameWithExtension () | |
| getProperties () | |
| getFileObjectIdsByExtension ($extension) | |
| getObjectIdsByExtension ($extension) | |
| mimeType () | |
| getImageSize () | |
| imageResize ($newWidth, $newHeight, $factor, $oldformat, $newformat, $jpegquality) | |
| load () | |
| delete () | |
| isImage () | |
| extension () | |
| parse_filename ($filename) | |
| save () | |
| copyValueFromFile ($otherfileid) | |
| loadValue () | |
| saveValue ($value= '') | |
| write () | |
| add () | |
| publish () | |
| tmpfile () | |
| setTimestamp () | |
Öffentliche Attribute | |
| $fileid | |
| $size = 0 | |
| $value = '' | |
| $extension = '' | |
| $log_filenames = array() | |
| $fullFilename = '' | |
| $publish = null | |
| $mime_type = '' | |
| $width = null | |
| $height = null | |
| $tmpfile | |
| $storeValueAsBase64 = false | |
Definiert in Zeile 34 der Datei File.class.php.
| File::add | ( | ) |
Definiert in Zeile 588 der Datei File.class.php.
Benutzt $db, db_connection(), extension(), Object::objectAdd() und saveValue().
00589 { 00590 $db = db_connection(); 00591 00592 $this->objectAdd(); 00593 00594 $sql = new Sql('SELECT MAX(id) FROM {t_file}'); 00595 $this->fileid = intval($db->getOne($sql->query))+1; 00596 00597 $sql = new Sql('INSERT INTO {t_file}'. 00598 ' (id,objectid,extension,size,value)'. 00599 " VALUES( {fileid},{objectid},{extension},0,'' )" ); 00600 $sql->setInt ('fileid' ,$this->fileid ); 00601 $sql->setInt ('objectid' ,$this->objectid ); 00602 $sql->setString('extension',$this->extension ); 00603 00604 $db->query( $sql->query ); 00605 00606 $this->saveValue(); 00607 }
| File::copyValueFromFile | ( | $ | otherfileid | ) |
Kopieren des Inhaltes von einer anderen Datei
| ID | der Datei, von der der Inhalt kopiert werden soll |
Definiert in Zeile 513 der Datei File.class.php.
Benutzt File() und saveValue().
00514 { 00515 $of = new File( $otherfileid ); 00516 $this->value = $of->loadValue(); 00517 $this->saveValue(); 00518 }
| File::delete | ( | ) |
Definiert in Zeile 436 der Datei File.class.php.
Benutzt $db, db_connection() und Object::objectDelete().
00437 { 00438 $db = db_connection(); 00439 00440 // Datei l?schen 00441 $sql = new Sql( 'DELETE FROM {t_file} '. 00442 ' WHERE objectid={objectid}' ); 00443 $sql->setInt( 'objectid',$this->objectid ); 00444 $db->query( $sql->query ); 00445 00446 $this->objectDelete(); 00447 }
| File::extension | ( | ) |
Definiert in Zeile 459 der Datei File.class.php.
Benutzt load().
Wird benutzt von add(), filenameWithExtension(), full_filename(), getProperties(), imageResize(), load(), mimeType(), parse_filename() und save().
00460 { 00461 if ($this->extension != '') 00462 return $this->extension; 00463 00464 $this->load(); 00465 return $this->extension; 00466 }
| File::File | ( | $ | objectid = '' |
) |
Konstruktor
| Objekt-Id |
Definiert in Zeile 66 der Datei File.class.php.
Benutzt $conf, $db, Object::$objectid, $SESS, Session::getDatabase() und Object::Object().
Wird benutzt von copyValueFromFile().
00067 { 00068 global $conf,$SESS; 00069 00070 $db = Session::getDatabase(); 00071 $this->storeValueAsBase64 = $db->conf['base64']; 00072 00073 $this->Object( $objectid ); 00074 $this->isFile = true; 00075 }
| File::filenameWithExtension | ( | ) |
Ermitteln des Dateinamens dieser Datei (ohne Pfadangabe)
Definiert in Zeile 105 der Datei File.class.php.
Benutzt extension() und Object::filename().
00106 { 00107 if ( $this->extension != '' ) 00108 return $this->filename.'.'.$this->extension; 00109 else return $this->filename; 00110 }
| File::full_filename | ( | ) |
Ermitteln des Dateinamens dieser Datei
Erneute Implementation von Object.
Definiert in Zeile 84 der Datei File.class.php.
Benutzt Object::$filename und extension().
Wird benutzt von publish().
00085 { 00086 if ( !empty($this->fullFilename) ) 00087 return $this->fullFilename; 00088 00089 $filename = parent::full_filename(); 00090 00091 if ( !empty($this->extension) ) 00092 $filename .= '.'.$this->extension; 00093 00094 $this->fullFilename = $filename; 00095 return $filename; 00096 }
| File::getFileObjectIdsByExtension | ( | $ | extension | ) |
Definiert in Zeile 133 der Datei File.class.php.
Benutzt $db, $extension, $SESS und db_connection().
00134 { 00135 global $SESS; 00136 $db = db_connection(); 00137 00138 $sqlquery = 'SELECT * FROM {t_object} '; 00139 00140 if ( $extension != '' ) 00141 { 00142 $sqlquery .= " WHERE extension='"; 00143 00144 $ext = explode(',',$extension); 00145 $sqlquery .= implode( "' OR extension='",$ext ); 00146 $sqlquery .= "' AND is_file=1 AND projectid={projectid}"; 00147 } 00148 else 00149 { 00150 $sqlquery .= " WHERE is_file=1 AND projectid={projectid}"; 00151 } 00152 00153 $sql = new Sql( $sqlquery ); 00154 $sql->setInt( 'projectid',$SESS['projectid'] ); 00155 00156 return $db->getCol( $sql->query ); 00157 }
| File::getImageSize | ( | ) |
Ermittelt Breite und H�he des Bildes.
Die Werte lassen sich anschlie�end �ber die Eigenschaften "width" und "height" ermitteln.
Definiert in Zeile 227 der Datei File.class.php.
Benutzt $size, tmpfile() und write().
00228 { 00229 if ( is_null($this->width) ) 00230 { 00231 $this->write(); // Datei schreiben 00232 00233 // Bildinformationen ermitteln 00234 $size = getimagesize( $this->tmpfile() ); 00235 00236 // Breite und Hoehe des aktuellen Bildes 00237 $this->width = $size[0]; 00238 $this->height = $size[1]; 00239 } 00240 }
| File::getObjectIdsByExtension | ( | $ | extension | ) |
Es werden Objekte zu einer Dateierweiterung ermittelt
| String | Dateierweiterung ohne fuehrenden Punkt (z.B. 'jpeg') |
Definiert in Zeile 167 der Datei File.class.php.
Benutzt $db, $extension und db_connection().
00168 { 00169 $db = db_connection(); 00170 00171 $sql = new Sql( 'SELECT {t_file}.objectid FROM {t_file} '. 00172 ' LEFT JOIN {t_object} '. 00173 ' ON {t_object}.id={t_file}.objectid'. 00174 ' WHERE {t_file}.extension={extension}'. 00175 ' AND {t_object}.projectid={projectid}' ); 00176 $sql->setInt ( 'projectid',$this->projectid ); 00177 $sql->setString( 'extension',$extension ); 00178 00179 return $db->getCol( $sql->query ); 00180 }
| File::getProperties | ( | ) |
Ermitteln aller Eigenschaften
Erneute Implementation von Object.
Definiert in Zeile 119 der Datei File.class.php.
Benutzt extension().
Wird benutzt von publish().
00120 { 00121 return array_merge( parent::getProperties(), 00122 array('full_filename'=>$this->fullFilename, 00123 'extension' =>$this->extension, 00124 'size' =>$this->size, 00125 'mimetype' =>$this->mimetype() ) ); 00126 }
| File::imageResize | ( | $ | newWidth, | |
| $ | newHeight, | |||
| $ | factor, | |||
| $ | oldformat, | |||
| $ | newformat, | |||
| $ | jpegquality | |||
| ) |
Veraendert die Bildgroesse eines Bildes
Diese Methode sollte natuerlich nur bei Bildern ausgefuehrt werden.
| Neue | Breite | |
| Neue | Hoehe | |
| Bildgr��enfaktor | ||
| Altes | Format als Integer-Konstante IMG_xxx | |
| Neues | Format als Integer-Konstante IMG_xxx | |
| Jpeg-Qualitaet | (sofern neues Format = Jpeg) |
Definiert in Zeile 256 der Datei File.class.php.
Benutzt $conf, $size, extension(), tmpfile() und write().
00257 { 00258 global $conf; 00259 00260 $this->write(); // Datei schreiben 00261 00262 // Bildinformationen ermitteln 00263 $size = getimagesize( $this->tmpfile() ); 00264 00265 // Breite und Hoehe des aktuellen Bildes 00266 $oldWidth = $size[0]; 00267 $oldHeight = $size[1]; 00268 $aspectRatio = $oldHeight / $oldWidth; // Seitenverhaeltnis 00269 00270 // Wenn Breite und Hoehe fehlen, dann Bildgroesse beibehalten 00271 if ( $newWidth == 0 && $newHeight == 0) 00272 { 00273 if ( $factor != 0 && $factor != 1 ) 00274 { 00275 $newWidth = $oldWidth * $factor; 00276 $newHeight = $oldHeight * $factor; 00277 $resizing = true; 00278 } 00279 else 00280 { 00281 $newWidth = $oldWidth; 00282 $newHeight = $oldHeight; 00283 $resizing = false; 00284 } 00285 } 00286 else 00287 { 00288 $resizing = true; 00289 } 00290 00291 // Wenn nur Breite oder Hoehe angegeben ist, dann 00292 // das Seitenverhaeltnis beibehalten 00293 if ( $newWidth == 0 ) 00294 $newWidth = $newHeight / $aspectRatio; 00295 00296 if ( $newHeight == 0 ) 00297 $newHeight = $newWidth * $aspectRatio; 00298 00299 00300 switch( $oldformat ) 00301 { 00302 case IMG_GIF: // GIF 00303 00304 $oldImage = ImageCreateFromGIF( $this->tmpfile ); 00305 break; 00306 00307 case IMG_JPG: // JPEG 00308 00309 $oldImage = ImageCreateFromJPEG($this->tmpfile); 00310 break; 00311 00312 case IMG_PNG: // PNG 00313 00314 $oldImage = imagecreatefrompng($this->tmpfile); 00315 break; 00316 00317 default: 00318 die('unsupported image format "'.$this->extension.'", cannot load image. resize failed'); 00319 } 00320 00321 // Ab Version 2 der GD-Bibliothek sind TrueColor-Umwandlungen moeglich. 00322 global $conf; 00323 $hasTrueColor = $conf['image']['truecolor']; 00324 00325 switch( $newformat ) 00326 { 00327 case IMG_GIF: // GIF 00328 00329 if ( $resizing ) 00330 { 00331 $newImage = ImageCreate($newWidth,$newHeight); 00332 ImageCopyResized($newImage,$oldImage,0,0,0,0,$newWidth, 00333 $newHeight,$oldWidth,$oldHeight); 00334 } 00335 else 00336 { 00337 $newImage = &$oldImage; 00338 } 00339 00340 ImageGIF($newImage, $this->tmpfile() ); 00341 $this->extension = 'gif'; 00342 00343 break; 00344 00345 case IMG_JPG: // JPEG 00346 00347 if ( !$resizing ) 00348 { 00349 $newImage = &$oldImage; 00350 } 00351 elseif ( $hasTrueColor ) 00352 { 00353 // Verwende TrueColor (GD2) 00354 $newImage = imageCreateTrueColor( $newWidth,$newHeight ); 00355 ImageCopyResampled($newImage,$oldImage,0,0,0,0,$newWidth, 00356 $newHeight,$oldWidth,$oldHeight); 00357 } 00358 else 00359 { 00360 // GD Version 1.x unterstuetzt kein TrueColor 00361 $newImage = ImageCreate($newWidth,$newHeight); 00362 00363 ImageCopyResized($newImage,$oldImage,0,0,0,0,$newWidth, 00364 $newHeight,$oldWidth,$oldHeight); 00365 } 00366 00367 ImageJPEG($newImage, $this->tmpfile,$jpegquality ); 00368 $this->extension = 'jpeg'; 00369 00370 break; 00371 00372 case IMG_PNG: // PNG 00373 00374 if ( !$resizing ) 00375 { 00376 $newImage = &$oldImage; 00377 } 00378 elseif ( $hasTrueColor ) 00379 { 00380 // Verwende TrueColor (GD2) 00381 $newImage = imageCreateTrueColor( $newWidth,$newHeight ); 00382 00383 ImageCopyResampled($newImage,$oldImage,0,0,0,0,$newWidth, 00384 $newHeight,$oldWidth,$oldHeight); 00385 } 00386 else 00387 { 00388 // GD Version 1.x unterstuetzt kein TrueColor 00389 $newImage = ImageCreate($newWidth,$newHeight); 00390 00391 ImageCopyResized($newImage,$oldImage,0,0,0,0,$newWidth, 00392 $newHeight,$oldWidth,$oldHeight); 00393 } 00394 00395 imagepng( $newImage,$this->tmpfile() ); 00396 $this->extension = 'png'; 00397 00398 break; 00399 00400 default: 00401 die('unsupported image format "'.$newformat.'", cannot resize'); 00402 } 00403 00404 $f = fopen( $this->tmpfile(), "r" ); 00405 $this->value = fread( $f,filesize($this->tmpfile()) ); 00406 fclose( $f ); 00407 00408 imagedestroy( $oldImage ); 00409 //imagedestroy( $newImage ); 00410 }
| File::isImage | ( | ) |
Stellt anhand der Dateiendung fest, ob es sich bei dieser Datei um ein Bild handelt
Definiert in Zeile 453 der Datei File.class.php.
Benutzt mimeType().
00454 { 00455 return substr($this->mimeType(),0,6)=='image/'; 00456 }
| File::load | ( | ) |
Laden des Objektes
Erneute Implementation von Object.
Definiert in Zeile 414 der Datei File.class.php.
Benutzt $db, db_connection(), extension() und Object::objectLoad().
Wird benutzt von extension().
00415 { 00416 $db = db_connection(); 00417 00418 $sql = new Sql( 'SELECT id,extension,size'. 00419 ' FROM {t_file}'. 00420 ' WHERE objectid={objectid}' ); 00421 $sql->setInt( 'objectid',$this->objectid ); 00422 $row = $db->getRow( $sql->query ); 00423 00424 if ( count($row)!=0 ) 00425 { 00426 $this->fileid = $row['id' ]; 00427 $this->extension = $row['extension']; 00428 $this->size = $row['size' ]; 00429 } 00430 00431 $this->objectLoad(); 00432 }
| File::loadValue | ( | ) |
Lesen der Datei aus der Datenbank.
Definiert in Zeile 524 der Datei File.class.php.
Benutzt $db, db_connection() und tmpfile().
Wird benutzt von write().
00525 { 00526 if ( is_file($this->tmpfile())) 00527 return implode('',file($this->tmpfile())); // From cache 00528 00529 $db = db_connection(); 00530 00531 $sql = new Sql( 'SELECT size,value'. 00532 ' FROM {t_file}'. 00533 ' WHERE objectid={objectid}' ); 00534 $sql->setInt( 'objectid',$this->objectid ); 00535 $row = $db->getRow( $sql->query ); 00536 00537 if ( count($row) != 0 ) 00538 { 00539 $this->value = $row['value']; 00540 $this->size = $row['size' ]; 00541 } 00542 00543 if ( $this->storeValueAsBase64 ) 00544 $this->value = base64_decode( $this->value ); 00545 00546 // Store in cache. 00547 $f = fopen( $this->tmpfile(),'w' ); 00548 fwrite( $f,$this->value ); 00549 fclose( $f ); 00550 00551 return $this->value; 00552 }
| File::mimeType | ( | ) |
Ermittelt den Mime-Type zu dieser Datei
Definiert in Zeile 189 der Datei File.class.php.
Benutzt $conf, extension() und Object::filename().
Wird benutzt von isImage().
00190 { 00191 if ( !empty( $this->mime_type ) ) 00192 return $this->mime_type; 00193 00194 global $conf; 00195 $mime_types = $conf['mime-types']; 00196 00197 if ( !empty($this->extension)) 00198 { 00199 $ext = $this->extension; 00200 } 00201 else 00202 { 00203 $pos = strrpos($this->filename,'.'); 00204 if ( $pos === false ) 00205 $ext = ''; 00206 else 00207 $ext = substr($this->filename,$pos+1); 00208 } 00209 00210 $ext = strtolower($ext); 00211 00212 if ( !empty($mime_types[$ext]) ) 00213 $this->mime_type = $mime_types[$ext]; 00214 else 00215 // Wenn kein Mime-Type gefunden, dann Standartwert setzen 00216 $this->mime_type = OR_FILE_DEFAULT_MIMETYPE; 00217 00218 return( $this->mime_type ); 00219 }
| File::parse_filename | ( | $ | filename | ) |
Definiert in Zeile 470 der Datei File.class.php.
Benutzt Object::$filename, extension() und Object::filename().
00471 { 00472 $filename = basename($filename); 00473 00474 $p = strrpos($filename, '.'); 00475 if ($p !== false) 00476 { 00477 $this->extension = substr($filename, $p +1); 00478 $this->filename = substr($filename, 0, $p); 00479 } 00480 else 00481 { 00482 $this->extension = ''; 00483 $this->filename = $filename; 00484 } 00485 }
| File::publish | ( | ) |
Definiert in Zeile 610 der Datei File.class.php.
Benutzt full_filename(), getProperties(), tmpfile() und write().
00611 { 00612 if ( ! is_object($this->publish) ) 00613 $this->publish = new Publish(); 00614 00615 $this->write(); 00616 $this->publish->copy( $this->tmpfile(),$this->full_filename() ); 00617 00618 $this->publish->publishedObjects[] = $this->getProperties(); 00619 }
| File::save | ( | ) |
Definiert in Zeile 488 der Datei File.class.php.
Benutzt $db, $SESS, db_connection(), extension() und Object::objectSave().
00489 { 00490 global $SESS; 00491 $db = db_connection(); 00492 00493 $sql = new Sql( <<<EOF 00494 UPDATE {t_file} SET 00495 size = {size}, 00496 extension = {extension} 00497 WHERE objectid={objectid} 00498 EOF 00499 ); 00500 $sql->setString('size' ,$this->size ); 00501 $sql->setString('extension',$this->extension ); 00502 $sql->setString('objectid' ,$this->objectid ); 00503 $db->query( $sql->query ); 00504 00505 $this->objectSave(); 00506 }
| File::saveValue | ( | $ | value = '' |
) |
Speichert den Inhalt in der Datenbank.
Definiert in Zeile 558 der Datei File.class.php.
Benutzt $db und db_connection().
Wird benutzt von add() und copyValueFromFile().
00559 { 00560 $db = db_connection(); 00561 00562 $sql = new Sql( 'UPDATE {t_file}'. 00563 ' SET value={value}, '. 00564 ' size={size} '. 00565 ' WHERE objectid={objectid}' ); 00566 $sql->setString( 'objectid' ,$this->objectid ); 00567 $sql->setInt ( 'size' ,strlen($this->value) ); 00568 00569 if ( $this->storeValueAsBase64 ) 00570 $sql->setString( 'value',base64_encode($this->value) ); 00571 else 00572 $sql->setString( 'value',$this->value ); 00573 00574 $db->query( $sql->query ); 00575 }
| File::setTimestamp | ( | ) |
Aenderungsdatum auf Systemzeit setzen
Erneute Implementation von Object.
Definiert in Zeile 636 der Datei File.class.php.
Benutzt tmpfile().
00637 { 00638 @unlink( $this->tmpfile() ); 00639 00640 parent::setTimestamp(); 00641 }
| File::tmpfile | ( | ) |
Ermittelt einen tempor�ren Dateinamen f�r diese Datei.
Definiert in Zeile 625 der Datei File.class.php.
Benutzt $db, db_connection() und Object::getTempDir().
Wird benutzt von getImageSize(), imageResize(), loadValue(), publish(), setTimestamp() und write().
00626 { 00627 if ( $this->tmpfile == '' ) 00628 { 00629 $db = db_connection(); 00630 $this->tmpfile = $this->getTempDir().'/openrat_db'.$db->id.'_'.$this->objectid.'.tmp'; 00631 } 00632 return $this->tmpfile; 00633 }
| File::write | ( | ) |
Lesen der Datei aus der Datenbank und schreiben in temporaere Datei
Definiert in Zeile 581 der Datei File.class.php.
Benutzt loadValue() und tmpfile().
Wird benutzt von getImageSize(), imageResize() und publish().
| File::$extension = '' |
Definiert in Zeile 40 der Datei File.class.php.
Wird benutzt von getFileObjectIdsByExtension() und getObjectIdsByExtension().
| File::$fileid |
Definiert in Zeile 36 der Datei File.class.php.
| File::$fullFilename = '' |
Definiert in Zeile 42 der Datei File.class.php.
| File::$height = null |
Definiert in Zeile 46 der Datei File.class.php.
| File::$log_filenames = array() |
Definiert in Zeile 41 der Datei File.class.php.
| File::$mime_type = '' |
Definiert in Zeile 44 der Datei File.class.php.
| File::$publish = null |
Definiert in Zeile 43 der Datei File.class.php.
| File::$size = 0 |
| File::$storeValueAsBase64 = false |
Um Probleme mit BLOB-Feldern und Datenbank-Besonderheiten zu vermeiden, kann der Binaerinhalt BASE64-kodiert gespeichert werden. Boolean
Definiert in Zeile 57 der Datei File.class.php.
| File::$tmpfile |
Dateiname der temporaeren Datei String
Erneute Implementation von Object.
Definiert in Zeile 48 der Datei File.class.php.
| File::$value = '' |
Definiert in Zeile 39 der Datei File.class.php.
| File::$width = null |
Definiert in Zeile 45 der Datei File.class.php.
1.5.8