// process uploads
 foreach ($_FILES as $file) {
     if (!is_array($file['name'])) {
         continue;
     }
     for ($i = 0; isset($file['name'][$i]); ++$i) {
         ++$total;
         // check file
         if ($file['error'][$i] != 0 || !is_uploaded_file($file['tmp_name'][$i])) {
             continue;
         }
         // prepare options
         $picOpts = array('file_path' => $file['tmp_name'][$i], 'file_name' => $file['name'][$i], 'target_path' => $stor, 'jpg_quality' => 95, 'resize' => array('mode' => 'fit', 'keep_smaller' => true, 'pad' => false, 'x' => _galuploadresize_w, 'y' => _galuploadresize_h));
         _extend('call', 'admin.gallery.picture', array('opts' => &$picOpts));
         // process
         $picUid = _pictureProcess($picOpts, $picError, $picFormat);
         if (false === $picUid) {
             continue;
         }
         $done[] = $picUid . '.' . $picFormat;
     }
 }
 // save to database
 if (!empty($done)) {
     // get order number
     if (isset($_POST['moveords'])) {
         // move
         $ord = 0;
         DB::query('UPDATE `' . _mysql_prefix . '-images` SET ord=ord+' . count($done) . ' WHERE home=' . $g);
     } else {
         // get max + 1
Ejemplo n.º 2
0
     $web = "";
 } else {
     $web = DB::esc($web);
 }
 // avatar
 $avatar = $query['avatar'];
 if (_uploadavatar) {
     // smazani avataru
     if (_checkboxLoad("removeavatar") && isset($avatar)) {
         @unlink(_indexroot . 'pictures/avatars/' . $avatar . '.jpg');
         $avatar = null;
     }
     // upload avataru
     if (isset($_FILES['avatar']) && is_uploaded_file($_FILES['avatar']['tmp_name'])) {
         // zpracovani
         $avatarUid = _pictureProcess(array('file_path' => $_FILES['avatar']['tmp_name'], 'file_name' => $_FILES['avatar']['name'], 'limit' => array('filesize' => 1048576, 'dimensions' => array('x' => 1400, 'y' => 1400)), 'resize' => array('mode' => 'zoom', 'x' => 96, 'y' => 128), 'target_path' => _indexroot . 'pictures/avatars/', 'target_format' => 'jpg', 'jpg_quality' => 95), $avatarError);
         if (false !== $avatarUid) {
             // smazani stareho avataru
             if (null !== $avatar) {
                 @unlink(_indexroot . 'pictures/avatars/' . $avatar . '.jpg');
             }
             // ok
             $avatar = $avatarUid;
         } else {
             $errors[] = $_lang['global.avatar'] . ' - ' . $avatarError;
         }
     }
 }
 // password
 $passwordchange = false;
 if ($_POST['currentpassword'] != "" or $_POST['newpassword'] != "" or $_POST['newpassword-confirm'] != "") {
 }
 if ($newdata['home2'] == $newdata['home3'] or $newdata['home1'] == $newdata['home3']) {
     $newdata['home3'] = -1;
 }
 // autor
 if (DB::result(DB::query("SELECT COUNT(id) FROM `" . _mysql_prefix . "-users` WHERE id=" . $newdata['author'] . " AND (id=" . _loginid . " OR (SELECT level FROM `" . _mysql_prefix . "-groups` WHERE id=`" . _mysql_prefix . "-users`.`group`)<" . _loginright_level . ")"), 0) == 0) {
     $error_log[] = $_lang['admin.content.articles.edit.error3'];
 }
 // obrazek
 $newdata['picture_uid'] = $query['picture_uid'];
 if (isset($_FILES['picture']) && is_uploaded_file($_FILES['picture']['tmp_name'])) {
     // priprava moznosti zmeny velikosti
     $picOpts = array('file_path' => $_FILES['picture']['tmp_name'], 'file_name' => $_FILES['picture']['name'], 'target_path' => _indexroot . 'pictures/articles/', 'target_format' => 'jpg', 'resize' => array('mode' => 'fit', 'keep_smaller' => true, 'pad' => false, 'x' => _article_pic_w, 'y' => _article_pic_h));
     _extend('call', 'admin.article.picture', array('opts' => &$picOpts));
     // zpracovani
     $picUid = _pictureProcess($picOpts, $picError);
     if (false !== $picUid) {
         // uspech
         if (isset($query['picture_uid'])) {
             // odstraneni stareho
             @unlink(_pictureStorageGet(_indexroot . 'pictures/articles/', null, $query['picture_uid'], 'jpg'));
         }
         $newdata['picture_uid'] = $picUid;
     } else {
         // chyba
         $error_log[] = $_lang['admin.content.form.picture'] . ' - ' . $picError;
     }
 } elseif (isset($query['picture_uid']) && _checkboxLoad('picture-delete')) {
     // smazani obrazku
     @unlink(_pictureStorageGet(_indexroot . 'pictures/articles/', null, $query['picture_uid'], 'jpg'));
     $newdata['picture_uid'] = null;
Ejemplo n.º 4
0
/**
 * Vygenerovat cachovanou miniaturu obrazku
 * @param string $source cesta ke zdrojovemu obrazku
 * @param array $resize_opts volby pro zmenu velikosti, viz _pictureResize() (mode je prednastaven na zoom)
 * @param $use_error_image vratit chybovy obrazek pri neuspechu namisto false
 * @param string &$error promenna, kam bude ulozena pripadna chybova hlaska
 * @return string|bool cesta k miniature nebo chybovemu obrazku nebo false pri neuspechu
 */
function _pictureThumb($source, array $resize_opts, $use_error_image = true, &$error = null)
{
    // zjistit priponu
    $ext = strtolower(pathinfo($source, PATHINFO_EXTENSION));
    if (!in_array($ext, SL::$imageExt)) {
        return $use_error_image ? SL::$imageError : false;
    }
    // sestavit cestu do adresare
    $path = _indexroot . 'pictures/thumb/';
    // extend pro nastaveni velikosti
    _extend('call', 'sys.thumb.resize', array('options' => &$resize_opts));
    // vychozi nastaveni zmenseni
    $resize_opts += array('mode' => 'zoom', 'trans' => 'png' === $ext || 'gif' === $ext, 'trans_format' => $ext);
    // normalizovani nastaveni zmenseni
    if (!isset($resize_opts['x']) || 0 == $resize_opts['x']) {
        $resize_opts['x'] = null;
    } else {
        $resize_opts['x'] = intval($resize_opts['x']);
    }
    if (!isset($resize_opts['y']) || 0 == $resize_opts['y']) {
        $resize_opts['y'] = null;
    } else {
        $resize_opts['y'] = intval($resize_opts['y']);
    }
    // vygenerovat hash
    ksort($resize_opts);
    if (isset($resize_opts['bgcolor'])) {
        ksort($resize_opts['bgcolor']);
    }
    $hash = md5(realpath($source) . '$' . serialize($resize_opts));
    // sestavit cestu k obrazku
    $image_path = $path . $hash . '.' . $ext;
    // zkontrolovat cache
    if (file_exists($image_path)) {
        // obrazek j*z existuje
        if (time() - filemtime($image_path) >= _thumb_touch_threshold) {
            touch($image_path);
        }
        return $image_path;
    } else {
        // obrazek neexistuje
        $options = array('file_path' => $source, 'resize' => $resize_opts, 'target_path' => $path, 'target_uid' => $hash);
        // extend
        _extend('call', 'sys.thumb.process', array('options' => &$options));
        // vygenerovat
        if (false !== _pictureProcess($options, $error)) {
            // uspech
            return $image_path;
        } else {
            // chyba
            return $use_error_image ? SL::$imageError : false;
        }
    }
}