Bilder Resize-Funktion bei Upload in der Dateiverwaltung
Verfasst: Sa 1. Dez 2007, 13:07
				
				Vorab:
Das ist nicht auf meinen Mist gewachsen.
Es ist von @swelpot (mit einem Patch von @HerrB)
Der Ursprungsthread bei Contenido 4.4:
http://contenido.org/forum/viewtopic.php?t=6540
Aber diese schöne und sinnvolle Funktion findet dort kaum einer.
Diese Version läuft unter 4.6.x (getestet mit 4.6.23 mr)
Zuerst im Verzeichnis: contenido/plugins/chains/includes/
eine Datei anlegen mit dem Namen: include.chain.upload.upload_preprocess.php
Diesen Inhalt in die Datei einfügen:
Dann in die Datei contenido/plugins/chains/includes/config.plugin.php
folgende 2 Zeilen einfügen:
Und danach bei Administration -> Mandant -> Mandanteneinstellung diese 2 Werte einfügen:

Die Werte 600 bzw. 800 sind individuell von jedem selber festzulegen.
Und nun noch für jeden User festlegen ob ein resize erfolgen soll oder nicht:
Administration -> Benutzer -> Name auswählen -> Eigenschaften

true -> resize anwenden
false -> resize ignorieren
Diese Beschreibung steht auch in kurzform in der Chain-Datei.
PS: das wäre eine Funktion die ich mir "in the box", mit Beschreibung, wünschen würde.
			Das ist nicht auf meinen Mist gewachsen.
Es ist von @swelpot (mit einem Patch von @HerrB)
Der Ursprungsthread bei Contenido 4.4:
http://contenido.org/forum/viewtopic.php?t=6540
Aber diese schöne und sinnvolle Funktion findet dort kaum einer.
Diese Version läuft unter 4.6.x (getestet mit 4.6.23 mr)
Zuerst im Verzeichnis: contenido/plugins/chains/includes/
eine Datei anlegen mit dem Namen: include.chain.upload.upload_preprocess.php
Diesen Inhalt in die Datei einfügen:
Code: Alles auswählen
<?php 
/** 
 * include.chain.upload.upload_preprocess.php 
 * 
 * Automatische Bildskalierung beim Upload von Bildern in der Dateiverwaltung 
 * 
 * maximale Bildbreite/-höhe über die Mandanteneigenschaften 
 *   - upload, automaticImageScaleWidth, maximale Bildbreite 
 *   - upload, automaticImageScaleHeight, maximale Bildhöhe 
 * Einschalten der Bildskalierung über die Benutzer- bzw. Gruppeneinstellungen 
 *   - upload, automaticImageScale, true 
 * 
 * Einbinden der Chain in Datei "contenido/plugins/chains/includes/config.plugin.php": 
 * cInclude("plugins", "chains/includes/include.chain.upload.upload_preprocess.php"); 
 * $_cecRegistry->addChainFunction("Contenido.Upload.UploadPreprocess", "cecUploadUploadPreprocess"); 
 * 
 * @version 1.0 
 * @author Stefan Welpot 
 * 28.12.2005 
 * Original von hier
 * http://contenido.org/forum/viewtopic.php?t=6540
 * @version 1.0.1
 * Patch von HerrB - nur Bilddateien resizen - ist eingearbeitet
 */ 
cInclude('classes', 'contenido/class.client.php'); 
function cecUploadUploadPreprocess ($tmp_name, $path) 
{ 
  global $auth, $cfgClient, $client; 
  $defaultBildbreite = 640; 
  $defaultBildhoehe = 480; 
  
  // nur wenn ImageScale für den Benutzer aktiviert ist 
  $currentuser = new User; 
  $currentuser->loadUserByUserID($auth->auth["uid"]); 
  if($currentuser->getUserProperty("upload", "automaticImageScale", true)) { 
  
    // maximale Bildgröße über Mandanteneinstellungen 
    /* 
    $properties = new PropertyCollection; 
    $maxBildbreite = $properties->getValue("clientsetting", $client, "upload", "automaticImageScaleWidth"); 
    $maxBildhoehe = $properties->getValue("clientsetting", $client, "upload", "automaticImageScaleHeight"); 
    */ 
    $cApiClient = new cApiClient($client); 
    $maxBildbreite = $cApiClient->getProperty("upload", "automaticImageScaleWidth"); 
    $maxBildhoehe = $cApiClient->getProperty("upload", "automaticImageScaleHeight"); 
    
    
    if(!is_numeric($maxBildbreite)) { 
      $maxBildbreite = $defaultBildbreite; 
    } 
    if(!is_numeric($maxBildhoehe)) { 
      $maxBildhoehe = $defaultBildhoehe; 
    } 
    
    $newFilename = ""; 
    /*
// damit werden alle Dateien mit resize bearbeitet
// diese Funktion ist geloescht
// damit werden alle Datein mit resize bearbeitet
  */
// nur Bilddateien mit resize bearbeiten, keine anderen Dateien - Patch HerrB
$filetype = strtolower(substr($tmp_name, strlen($tmp_name) -4, 4)); 
    if(strcmp(".gif", $filetype) == 0 || 
       strcmp(".png", $filetype) == 0 || 
       strcmp(".jpg", $filetype) == 0 || 
       strcmp("jpeg", $filetype) == 0 
    ) { 
       $newFilename = capiImgScale($tmp_name, $maxBildbreite, $maxBildhoehe, false, false, 1, true); 
    $newFilename = str_replace($cfgClient[$client]["path"]["htmlpath"], $cfgClient[$client]["path"]["frontend"], $newFilename); 
    } else { 
       $newFilename = $tmp_name; 
    } 
    return $newFilename; 
  }
// nur Bilddateien mit resize bearbeiten, keine anderen Dateien
  return false; 
} 
?>folgende 2 Zeilen einfügen:
Code: Alles auswählen
 cInclude("plugins", "chains/includes/include.chain.upload.upload_preprocess.php"); 
 $_cecRegistry->addChainFunction("Contenido.Upload.UploadPreprocess", "cecUploadUploadPreprocess"); 
Die Werte 600 bzw. 800 sind individuell von jedem selber festzulegen.
Und nun noch für jeden User festlegen ob ein resize erfolgen soll oder nicht:
Administration -> Benutzer -> Name auswählen -> Eigenschaften

true -> resize anwenden
false -> resize ignorieren
Diese Beschreibung steht auch in kurzform in der Chain-Datei.
PS: das wäre eine Funktion die ich mir "in the box", mit Beschreibung, wünschen würde.