Ejemplo n.º 1
0
function rex_medienpool_registerFile($physical_filename, $org_filename, $filename, $category_id, $title, $filesize, $filetype)
{
    global $REX, $REX_USER;
    $abs_file = $REX['MEDIAFOLDER'] . '/' . $physical_filename;
    if (!file_exists($abs_file)) {
        return false;
    }
    if (empty($filesize)) {
        $filesize = filesize($abs_file);
    }
    if (empty($filetype) && function_exists('mime_content_type')) {
        $filetype = mime_content_type($abs_file);
    }
    @chmod($abs_file, $REX['FILEPERM']);
    $filename = rex_medienpool_filename($filename, false);
    $org_filename = strtolower($org_filename);
    // Ggf Alte Datei umbennen
    rename($abs_file, $REX['MEDIAFOLDER'] . '/' . $filename);
    $abs_file = $REX['MEDIAFOLDER'] . '/' . $filename;
    // get widht height
    $size = @getimagesize($abs_file);
    $FILESQL = new rex_sql();
    // $FILESQL->debugsql=1;
    $FILESQL->setTable($REX['TABLE_PREFIX'] . "file");
    $FILESQL->setValue('filename', $filename);
    $FILESQL->setValue('originalname', $org_filename);
    $FILESQL->setValue('category_id', $category_id);
    $FILESQL->setValue('title', $title);
    $FILESQL->setValue('filesize', $filesize);
    $FILESQL->setValue('filetype', $filetype);
    $FILESQL->setValue('width', $size[0]);
    $FILESQL->setValue('height', $size[1]);
    // TODO Hier Update + Create zugleich?
    $FILESQL->addGlobalUpdateFields();
    $FILESQL->addGlobalCreateFields();
    $FILESQL->insert();
    return $FILESQL->getError() == '';
}
/**
 * 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_medienpool_saveMedia($FILE, $rex_file_category, $FILEINFOS, $userlogin = null)
{
    global $REX, $I18N;
    $rex_file_category = (int) $rex_file_category;
    $gc = new rex_sql();
    $gc->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'file_category WHERE id=' . $rex_file_category);
    if ($gc->getRows() != 1) {
        $rex_file_category = 0;
    }
    $FILENAME = $FILE['name'];
    $FILESIZE = $FILE['size'];
    $FILETYPE = $FILE['type'];
    $NFILENAME = rex_medienpool_filename($FILENAME);
    $message = '';
    // ----- neuer filename
    $dstFile = $REX['MEDIAFOLDER'] . '/' . $NFILENAME;
    // ----- dateiupload
    $upload = true;
    if (!@move_uploaded_file($FILE['tmp_name'], $dstFile) && !@copy($FILE['tmp_name'], $dstFile)) {
        $message .= $I18N->msg("pool_file_movefailed");
        $ok = 0;
        $upload = false;
    }
    if ($upload) {
        chmod($dstFile, $REX['FILEPERM']);
        // get widht height
        $size = @getimagesize($dstFile);
        $FILESQL = new rex_sql();
        $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);
        $FILESQL->setValue('width', $size[0]);
        $FILESQL->setValue('height', $size[1]);
        $FILESQL->setValue('category_id', $rex_file_category);
        // TODO Create + Update zugleich?
        $FILESQL->addGlobalCreateFields($userlogin);
        $FILESQL->addGlobalUpdateFields($userlogin);
        $FILESQL->insert();
        $ok = 1;
        $message .= $I18N->msg("pool_file_added");
    }
    $RETURN['title'] = $FILEINFOS['title'];
    $RETURN['width'] = $size[0];
    $RETURN['height'] = $size[1];
    $RETURN['type'] = $FILETYPE;
    $RETURN['msg'] = $message;
    $RETURN['ok'] = $ok;
    $RETURN['filename'] = $NFILENAME;
    $RETURN['old_filename'] = $FILENAME;
    return $RETURN;
}
/**
 * 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_medienpool_saveMedia($FILE, $rex_file_category, $FILEINFOS, $userlogin = null)
{
    global $REX, $I18N;
    $rex_file_category = (int) $rex_file_category;
    $gc = new rex_sql();
    $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']);
    $FILENAME = $FILE['name'];
    $FILESIZE = $FILE['size'];
    $FILETYPE = $FILE['type'];
    $NFILENAME = rex_medienpool_filename($FILENAME, $isFileUpload);
    $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 = new rex_sql();
        $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);
        // TODO Create + Update zugleich?
        $FILESQL->addGlobalCreateFields($userlogin);
        $FILESQL->addGlobalUpdateFields($userlogin);
        $FILESQL->insert();
        $message .= $I18N->msg("pool_file_added");
    }
    $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;
}