示例#1
0
/**
 * 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;
}
示例#4
0
function rex_medienpool_filename($FILENAME, $doSubindexing = true)
{
    return rex_mediapool_filename($FILENAME, $doSubindexing);
}