/** * Holt ein upgeloadetes File und legt es in den Medienpool * Dabei wird kontrolliert ob das File schon vorhanden ist und es * wird eventuell angepasst, weiterhin werden die Fileinformationen übergeben. * * @param array $FILE * @param int $rex_file_category * @param array $FILEINFOS * @param string $userlogin * @param bool $doSubindexing * * @return array */ function rex_mediapool_saveMedia($FILE, $rex_file_category, $FILEINFOS, $userlogin = null, $doSubindexing = true) { $rex_file_category = (int) $rex_file_category; $gc = rex_sql::factory(); $gc->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'media_category WHERE id=' . $rex_file_category); if ($gc->getRows() != 1) { $rex_file_category = 0; } $isFileUpload = isset($FILE['tmp_name']); if ($isFileUpload) { $doSubindexing = true; } $FILENAME = $FILE['name']; $FILESIZE = $FILE['size']; $FILETYPE = $FILE['type']; $NFILENAME = rex_mediapool_filename($FILENAME, $doSubindexing); $message = []; // ----- alter/neuer filename $srcFile = rex_path::media($FILENAME); $dstFile = rex_path::media($NFILENAME); $success = true; if ($isFileUpload) { // Fileupload? if (!@move_uploaded_file($FILE['tmp_name'], $dstFile)) { $message[] = rex_i18n::msg('pool_file_movefailed'); $success = false; } } else { // Filesync? if (!@rename($srcFile, $dstFile)) { $message[] = rex_i18n::msg('pool_file_movefailed'); $success = false; } } if ($success) { @chmod($dstFile, rex::getFilePerm()); // get widht height $size = @getimagesize($dstFile); if ($FILETYPE == '' && isset($size['mime'])) { $FILETYPE = $size['mime']; } $FILESQL = rex_sql::factory(); $FILESQL->setTable(rex::getTablePrefix() . 'media'); $FILESQL->setValue('filetype', $FILETYPE); $FILESQL->setValue('title', $FILEINFOS['title']); $FILESQL->setValue('filename', $NFILENAME); $FILESQL->setValue('originalname', $FILENAME); $FILESQL->setValue('filesize', $FILESIZE); if ($size) { $FILESQL->setValue('width', $size[0]); $FILESQL->setValue('height', $size[1]); } $FILESQL->setValue('category_id', $rex_file_category); $FILESQL->addGlobalCreateFields($userlogin); $FILESQL->addGlobalUpdateFields($userlogin); $FILESQL->insert(); if ($isFileUpload) { $message[] = rex_i18n::msg('pool_file_added'); } if ($NFILENAME != $FILENAME) { $message[] = rex_i18n::rawMsg('pool_file_renamed', $FILENAME, $NFILENAME); } rex_media_cache::deleteList($rex_file_category); } $RETURN['title'] = $FILEINFOS['title']; $RETURN['type'] = $FILETYPE; $RETURN['msg'] = implode('<br />', $message); // Aus BC gruenden hier mit int 1/0 $RETURN['ok'] = $success ? 1 : 0; $RETURN['filename'] = $NFILENAME; $RETURN['old_filename'] = $FILENAME; if ($size) { $RETURN['width'] = $size[0]; $RETURN['height'] = $size[1]; } // ----- EXTENSION POINT if ($success) { rex_extension::registerPoint(new rex_extension_point('MEDIA_ADDED', '', $RETURN)); } return $RETURN; }
/** * Returns array('success'=>true) or array('error'=>'error message') */ function handleUpload($uploadDirectory, $replaceOldFile = FALSE) { if (!is_writable($uploadDirectory)) { return array('error' => "Fehler: Upload-Verzeichnis hat keine Schreibrechte."); } if (!$this->file) { return array('error' => 'Fehler: Es wurden keine Dateien hochgeladen.'); } $size = $this->file->getSize(); if ($size == 0) { return array('error' => 'Fehler: Die Datei ist leer'); } if ($size > $this->sizeLimit) { return array('error' => 'Fehler: Die Datei ist zu groß'); } $pathinfo = pathinfo($this->file->getName()); $filename = $pathinfo['filename']; //$filename = md5(uniqid()); if (!isset($pathinfo['extension'])) { $pathinfo['extension'] = ''; } $ext = $pathinfo['extension']; if ($this->allowedExtensions && in_array(strtolower($ext), $this->allowedExtensions)) { $these = implode(', ', $this->allowedExtensions); return array('error' => 'Fehler: Die Datei hat eine ungültige Endung, verboten sind: ' . $these . '.'); } if (!$replaceOldFile) { $final_name = rex_mediapool_filename($filename . '.' . $ext); } if ($this->file->save($uploadDirectory . $final_name)) { rex_mediapool_syncFile($final_name, rex_get('mediaCat', 'int'), ''); rex_set_session('media[rex_file_category]', rex_get('mediaCat', 'int')); return array('success' => true, 'filename' => '' . $final_name . '', 'mediaCatId' => rex_get('mediaCat', 'int'), 'fileId' => rex_media::get($final_name)->getId(), 'originalname' => '' . $filename . '.' . $ext . '', 'timestamp' => time()); } else { return array('error' => 'Die Datei konnte nicht gespeichert werden.' . 'Der Upload wurde abgebrochen, oder es handelt sich um einen internen Fehler'); } }
/** * Holt ein upgeloadetes File und legt es in den Medienpool * Dabei wird kontrolliert ob das File schon vorhanden ist und es * wird eventuell angepasst, weiterhin werden die Fileinformationen übergeben * * @param $FILE * @param $rex_file_category * @param $FILEINFOS * @param $userlogin */ function rex_mediapool_saveMedia($FILE, $rex_file_category, $FILEINFOS, $userlogin = null, $doSubindexing = TRUE) { global $REX, $I18N; $rex_file_category = (int) $rex_file_category; $gc = rex_sql::factory(); $gc->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'file_category WHERE id=' . $rex_file_category); if ($gc->getRows() != 1) { $rex_file_category = 0; } $isFileUpload = isset($FILE['tmp_name']); if ($isFileUpload) { $doSubindexing = TRUE; } $FILENAME = $FILE['name']; $FILESIZE = $FILE['size']; $FILETYPE = $FILE['type']; $NFILENAME = rex_mediapool_filename($FILENAME, $doSubindexing); $message = ''; // ----- alter/neuer filename $srcFile = $REX['MEDIAFOLDER'] . '/' . $FILENAME; $dstFile = $REX['MEDIAFOLDER'] . '/' . $NFILENAME; $success = true; if ($isFileUpload) { if (!@move_uploaded_file($FILE['tmp_name'], $dstFile)) { $message .= $I18N->msg("pool_file_movefailed"); $success = false; } } else { if (!@rename($srcFile, $dstFile)) { $message .= $I18N->msg("pool_file_movefailed"); $success = false; } } if ($success) { @chmod($dstFile, $REX['FILEPERM']); // get widht height $size = @getimagesize($dstFile); if ($FILETYPE == '' && isset($size['mime'])) { $FILETYPE = $size['mime']; } $FILESQL = rex_sql::factory(); $FILESQL->setTable($REX['TABLE_PREFIX'] . 'file'); $FILESQL->setValue('filetype', $FILETYPE); $FILESQL->setValue('title', $FILEINFOS['title']); $FILESQL->setValue('filename', $NFILENAME); $FILESQL->setValue('originalname', $FILENAME); $FILESQL->setValue('filesize', $FILESIZE); if ($size) { $FILESQL->setValue('width', $size[0]); $FILESQL->setValue('height', $size[1]); } $FILESQL->setValue('category_id', $rex_file_category); $FILESQL->addGlobalCreateFields($userlogin); $FILESQL->addGlobalUpdateFields($userlogin); $FILESQL->insert(); $message .= $I18N->msg("pool_file_added"); rex_deleteCacheMediaList($rex_file_category); } $RETURN['title'] = $FILEINFOS['title']; $RETURN['type'] = $FILETYPE; $RETURN['msg'] = $message; // Aus BC gruenden hier mit int 1/0 $RETURN['ok'] = $success ? 1 : 0; $RETURN['filename'] = $NFILENAME; $RETURN['old_filename'] = $FILENAME; if ($size) { $RETURN['width'] = $size[0]; $RETURN['height'] = $size[1]; } // ----- EXTENSION POINT if ($success) { rex_register_extension_point('MEDIA_ADDED', '', $RETURN); } return $RETURN; }
function rex_medienpool_filename($FILENAME, $doSubindexing = true) { return rex_mediapool_filename($FILENAME, $doSubindexing); }