Example #1
0
 /**
  * Displays upload form and processes the upload command
  *
  * @param String $view View to return to if canceled
  */
 public function upload_action($view)
 {
     PageLayout::setTitle(_('Neues Smiley hochladen'));
     if (!Request::submitted('upload')) {
         $this->view = $view;
         return;
     }
     // File submitted?
     $upload = $_FILES['smiley_file'];
     if (empty($upload) or empty($upload['name'])) {
         $error = _('Sie haben keine Datei zum Hochladen ausgewählt!');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Error upon upload?
     if ($upload['error']) {
         $error = _('Es gab einen Fehler beim Upload. Bitte versuchen Sie es erneut.');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Correct mime-type?
     $no_image = !empty($upload['type']) && substr($upload['type'], 0, 5) != 'image';
     if (!$no_image) {
         $image_info = getimagesize($upload['tmp_name']);
         // Used later on!
         $no_gif = $image_info[2] != IMAGETYPE_GIF;
     }
     if ($no_image) {
         $error = _('Die Datei ist keine Bilddatei');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Extract smiley information
     $smiley_file = $upload['name'];
     $smiley_name = substr($smiley_file, 0, strrpos($smiley_file, '.'));
     // Replace smiley?
     $smiley = Smiley::getByName($smiley_name);
     $replace = Request::int('replace');
     if ($smiley->id && !$replace) {
         $error = sprintf(_('Es ist bereits eine Bildatei mit dem Namen "%s" vorhanden.'), $smiley_file);
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Copy file into file system
     $destination = Smiley::getFilename($smiley_file);
     if (!move_uploaded_file($upload['tmp_name'], $destination)) {
         $error = _('Es ist ein Fehler beim Kopieren der Datei aufgetreten. Das Bild wurde nicht hochgeladen!');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // set permissions for uploaded file
     chmod($destination, 0666 & ~umask());
     // Import smiley into database
     Smiley::refresh($destination);
     // Output appropriate wurde message
     $message = $replace ? sprintf(_('Die Bilddatei "%s" wurde erfolgreich ersetzt.'), $smiley_file) : sprintf(_('Die Bilddatei "%s" wurde erfolgreich hochgeladen.'), $smiley_file);
     PageLayout::postMessage(MessageBox::success($message));
     // Return to index and display the view the uploaded smiley is in
     $this->redirect('admin/smileys?view=' . $smiley_file[0]);
 }