/** * 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]); }