Dotclear


Ignore:
Timestamp:
01/31/18 12:11:05 (8 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

PHP 7.2 compliance (deprecated create_function() replaced by closure)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • admin/media.php

    r3633 r3691  
    1313/* HTML page 
    1414-------------------------------------------------------- */ 
    15 require dirname(__FILE__).'/../inc/admin/prepend.php'; 
     15require dirname(__FILE__) . '/../inc/admin/prepend.php'; 
    1616 
    1717dcPage::check('media,media_admin'); 
     
    1919$post_id = !empty($_REQUEST['post_id']) ? (integer) $_REQUEST['post_id'] : null; 
    2020if ($post_id) { 
    21      $post = $core->blog->getPosts(array('post_id'=>$post_id,'post_type'=>'')); 
    22      if ($post->isEmpty()) { 
    23           $post_id = null; 
    24      } 
    25      $post_title = $post->post_title; 
    26      $post_type = $post->post_type; 
    27      unset($post); 
    28 } 
    29 $d = isset($_REQUEST['d']) ? $_REQUEST['d'] : null; 
     21    $post = $core->blog->getPosts(array('post_id' => $post_id, 'post_type' => '')); 
     22    if ($post->isEmpty()) { 
     23        $post_id = null; 
     24    } 
     25    $post_title = $post->post_title; 
     26    $post_type = $post->post_type; 
     27    unset($post); 
     28} 
     29$d         = isset($_REQUEST['d']) ? $_REQUEST['d'] : null; 
    3030$plugin_id = isset($_REQUEST['plugin_id']) ? html::sanitizeURL($_REQUEST['plugin_id']) : ''; 
    31 $dir = null; 
     31$dir       = null; 
    3232 
    3333// Attachement type if any 
    3434$link_type = !empty($_REQUEST['link_type']) ? html::escapeHTML($_REQUEST['link_type']) : null; 
    3535 
    36 $page = !empty($_GET['page']) ? max(1,(integer) $_GET['page']) : 1; 
     36$page        = !empty($_GET['page']) ? max(1, (integer) $_GET['page']) : 1; 
    3737$nb_per_page = ((integer) $core->auth->user_prefs->interface->media_by_page ?: 30); 
    3838 
    3939# We are on home not comming from media manager 
    4040if ($d === null && isset($_SESSION['media_manager_dir'])) { 
    41      # We get session information 
    42      $d = $_SESSION['media_manager_dir']; 
     41    # We get session information 
     42    $d = $_SESSION['media_manager_dir']; 
    4343} 
    4444 
    4545if (!isset($_GET['page']) && isset($_SESSION['media_manager_page'])) { 
    46      $page = $_SESSION['media_manager_page']; 
     46    $page = $_SESSION['media_manager_page']; 
    4747} 
    4848 
    4949# We set session information about directory, page and display mode 
    5050if ($d) { 
    51      $_SESSION['media_manager_dir'] = $d; 
     51    $_SESSION['media_manager_dir'] = $d; 
    5252} else { 
    53      unset($_SESSION['media_manager_dir']); 
     53    unset($_SESSION['media_manager_dir']); 
    5454} 
    5555if ($page != 1) { 
    56      $_SESSION['media_manager_page'] = $page; 
     56    $_SESSION['media_manager_page'] = $page; 
    5757} else { 
    58      unset($_SESSION['media_manager_page']); 
     58    unset($_SESSION['media_manager_page']); 
    5959} 
    6060 
     
    6464# Sort combo 
    6565$sort_combo = array( 
    66      __('By names, in ascending order') => 'name-asc', 
    67      __('By names, in descending order') => 'name-desc', 
    68      __('By dates, in ascending order') => 'date-asc', 
    69      __('By dates, in descending order') => 'date-desc' 
    70      ); 
     66    __('By names, in ascending order') => 'name-asc', 
     67    __('By names, in descending order') => 'name-desc', 
     68    __('By dates, in ascending order') => 'date-asc', 
     69    __('By dates, in descending order') => 'date-desc' 
     70); 
    7171 
    7272if (!empty($_GET['file_mode'])) { 
    73      $_SESSION['media_file_mode'] = $_GET['file_mode']; 
     73    $_SESSION['media_file_mode'] = $_GET['file_mode']; 
    7474} 
    7575$file_mode = !empty($_SESSION['media_file_mode']) ? $_SESSION['media_file_mode'] : 'grid'; 
     
    7777$file_sort = null; 
    7878if (!empty($_GET['file_sort'])) { 
    79      $file_sort = $_SESSION['media_file_sort'] = $_GET['file_sort']; 
    80      setcookie('dc_media_sort',json_encode($file_sort)); 
     79    $file_sort = $_SESSION['media_file_sort'] = $_GET['file_sort']; 
     80    setcookie('dc_media_sort', json_encode($file_sort)); 
    8181} elseif (isset($_COOKIE['dc_media_sort'])) { 
    82      $file_sort = json_decode($_COOKIE['dc_media_sort']); 
     82    $file_sort = json_decode($_COOKIE['dc_media_sort']); 
    8383} elseif (!empty($_SESSION['media_file_sort'])) { 
    84      $file_sort = $_SESSION['media_file_sort']; 
    85 } 
    86 $file_sort =  in_array($file_sort,$sort_combo) ? $file_sort : null; 
    87  
    88 $nb_per_page = !empty($_SESSION['nb_per_page']) ? (integer)$_SESSION['nb_per_page'] : $nb_per_page; 
    89 if (!empty($_GET['nb_per_page']) && (integer)$_GET['nb_per_page'] > 0) { 
    90      $nb_per_page = $_SESSION['nb_per_page'] = (integer)$_GET['nb_per_page']; 
    91 } 
    92  
    93 $popup = (integer) !empty($_REQUEST['popup']); 
    94 $select = !empty($_REQUEST['select']) ? (integer)$_REQUEST['select'] : 0;  // 0 : none, 1 : single media, >1 : multiple medias 
    95  
    96 $page_url_params = new ArrayObject(array('popup' => $popup,'select' => $select,'post_id' => $post_id,'link_type' => $link_type)); 
     84    $file_sort = $_SESSION['media_file_sort']; 
     85} 
     86$file_sort = in_array($file_sort, $sort_combo) ? $file_sort : null; 
     87 
     88$nb_per_page = !empty($_SESSION['nb_per_page']) ? (integer) $_SESSION['nb_per_page'] : $nb_per_page; 
     89if (!empty($_GET['nb_per_page']) && (integer) $_GET['nb_per_page'] > 0) { 
     90    $nb_per_page = $_SESSION['nb_per_page'] = (integer) $_GET['nb_per_page']; 
     91} 
     92 
     93$popup  = (integer) !empty($_REQUEST['popup']); 
     94$select = !empty($_REQUEST['select']) ? (integer) $_REQUEST['select'] : 0; // 0 : none, 1 : single media, >1 : multiple medias 
     95 
     96$page_url_params = new ArrayObject(array('popup' => $popup, 'select' => $select, 'post_id' => $post_id, 'link_type' => $link_type)); 
    9797if ($d) { 
    98      $page_url_params['d'] = $d; 
     98    $page_url_params['d'] = $d; 
    9999} 
    100100if ($plugin_id != '') { 
    101      $page_url_params['plugin_id'] = $plugin_id; 
     101    $page_url_params['plugin_id'] = $plugin_id; 
    102102} 
    103103if ($q) { 
    104      $page_url_params['q'] = $q; 
    105 } 
    106  
    107 $core->callBehavior('adminMediaURLParams',$page_url_params); 
     104    $page_url_params['q'] = $q; 
     105} 
     106 
     107$core->callBehavior('adminMediaURLParams', $page_url_params); 
    108108$page_url_params = (array) $page_url_params; 
    109109 
    110110if ($popup) { 
    111      $open_f = array('dcPage','openPopup'); 
    112      $close_f = array('dcPage','closePopup'); 
     111    $open_f  = array('dcPage', 'openPopup'); 
     112    $close_f = array('dcPage', 'closePopup'); 
    113113} else { 
    114      $open_f = array('dcPage','open'); 
    115      $close_f = create_function('',"dcPage::helpBlock('core_media'); dcPage::close();"); 
     114    $open_f  = array('dcPage', 'open'); 
     115    $close_f = function () { 
     116        dcPage::helpBlock('core_media'); 
     117        dcPage::close(); 
     118    }; 
    116119} 
    117120 
    118121$core_media_writable = false; 
    119122try { 
    120      $core->media = new dcMedia($core); 
    121      if ($file_sort) { 
    122           $core->media->setFileSort($file_sort); 
    123      } 
    124      $query = false; 
    125      if ($q) { 
    126           $query = $core->media->searchMedia($q); 
    127      } 
    128      if (!$query) { 
    129           $try_d = $d; 
    130           // Reset current dir 
    131           $d = null; 
    132           // Change directory (may cause an exception if directory doesn't exist) 
    133           $core->media->chdir($try_d); 
    134           // Restore current dir variable 
    135           $d = $try_d; 
    136           $core->media->getDir(); 
    137      } else { 
    138           $d = null; 
    139           $core->media->chdir($d); 
    140      } 
    141      $core_media_writable = $core->media->writable(); 
    142      $dir =& $core->media->dir; 
    143      if (!$core_media_writable) { 
    144 //        throw new Exception('you do not have sufficient permissions to write to this folder: '); 
    145      } 
     123    $core->media = new dcMedia($core); 
     124    if ($file_sort) { 
     125        $core->media->setFileSort($file_sort); 
     126    } 
     127    $query = false; 
     128    if ($q) { 
     129        $query = $core->media->searchMedia($q); 
     130    } 
     131    if (!$query) { 
     132        $try_d = $d; 
     133        // Reset current dir 
     134        $d = null; 
     135        // Change directory (may cause an exception if directory doesn't exist) 
     136        $core->media->chdir($try_d); 
     137        // Restore current dir variable 
     138        $d = $try_d; 
     139        $core->media->getDir(); 
     140    } else { 
     141        $d = null; 
     142        $core->media->chdir($d); 
     143    } 
     144    $core_media_writable = $core->media->writable(); 
     145    $dir                 = &$core->media->dir; 
     146    if (!$core_media_writable) { 
     147//        throw new Exception('you do not have sufficient permissions to write to this folder: '); 
     148    } 
    146149} catch (Exception $e) { 
    147      $core->error->add($e->getMessage()); 
     150    $core->error->add($e->getMessage()); 
    148151} 
    149152 
    150153// Local functions 
    151154 
    152 $mediaItemLine = function($f,$i,$query,$table=false) 
    153 { 
    154      global $core, $page_url, $popup, $select, $post_id, $plugin_id, $page_url_params, $link_type; 
    155  
    156      $fname = $f->basename; 
    157      $file = $query ? $f->relname : $f->basename; 
    158  
    159      $class = $table ? '' : 'media-item media-col-'.($i%2); 
    160  
    161      if ($f->d) { 
    162           // Folder 
    163           $link = $core->adminurl->get('admin.media',array_merge($page_url_params,array('d' => html::sanitizeURL($f->relname) ))); 
    164           if ($f->parent) { 
    165                $fname = '..'; 
    166                $class .= ' media-folder-up'; 
    167           } else { 
    168                $class .= ' media-folder'; 
    169           } 
    170      } else { 
    171           // Item 
    172           $params = new ArrayObject( 
    173                array( 
    174                     'id' => $f->media_id, 
    175                     'plugin_id' => $plugin_id, 
    176                     'popup' => $popup, 
    177                     'select' => $select, 
    178                     'post_id' => $post_id, 
    179                     'link_type' => $link_type 
    180                ) 
    181           ); 
    182           $core->callBehavior('adminMediaURLParams',$params); 
    183           $params = (array) $params; 
    184           $link = $core->adminurl->get( 
    185                'admin.media.item', $params 
    186           ); 
    187      } 
    188  
    189      $maxchars = 36; 
    190      if (strlen($fname) > $maxchars) { 
    191           $fname = substr($fname, 0, $maxchars-4).'...'.($f->d ? '' : files::getExtension($fname)); 
    192      } 
    193  
    194      $act = ''; 
    195      if (!$f->d) { 
    196           if ($select > 0) { 
    197                if ($select == 1) { 
    198                     // Single media selection button 
    199                     $act .= '<a href="'.$link.'"><img src="images/plus.png" alt="'.__('Select this file').'" '. 
    200                     'title="'.__('Select this file').'" /></a> '; 
    201                } else { 
    202                     // Multiple media selection checkbox 
    203                     $act .= form::checkbox(array('medias[]', 'media_'.rawurlencode($file)),$file); 
    204                } 
    205           } else { 
    206                // Item 
    207                if ($post_id) { 
    208                     // Media attachment button 
    209                     $act .= 
    210                     '<a class="attach-media" title="'.__('Attach this file to entry').'" href="'. 
    211                     $core->adminurl->get("admin.post.media", 
    212                          array('media_id' => $f->media_id, 'post_id' => $post_id,'attach' => 1,'link_type' => $link_type)). 
    213                     '">'. 
    214                     '<img src="images/plus.png" alt="'.__('Attach this file to entry').'"/>'. 
    215                     '</a>'; 
    216                } 
    217                if ($popup) { 
    218                     // Media insertion button 
    219                     $act .= '<a href="'.$link.'"><img src="images/plus.png" alt="'.__('Insert this file into entry').'" '. 
    220                     'title="'.__('Insert this file into entry').'" /></a> '; 
    221                } 
    222           } 
    223      } 
    224      if ($f->del) { 
    225           // Deletion button or checkbox 
    226           if (!$popup && !$f->d) { 
    227                if ($select < 2) { 
    228                     // Already set for multiple media selection 
    229                     $act .= form::checkbox(array('medias[]', 'media_'.rawurlencode($file)),$file); 
    230                } 
    231           } else { 
    232                $act .= '<a class="media-remove" '. 
    233                'href="'.html::escapeURL($page_url). 
    234                '&amp;plugin_id='.$plugin_id. 
    235                '&amp;d='.rawurlencode($GLOBALS['d']). 
    236                '&amp;q='.rawurlencode($GLOBALS['q']). 
    237                '&amp;remove='.rawurlencode($file).'">'. 
    238                '<img src="images/trash.png" alt="'.__('Delete').'" title="'.__('delete').'" /></a>'; 
    239           } 
    240      } 
    241  
    242      $file_type = explode('/',$f->type); 
    243      $class_open = 'class="modal-'.$file_type[0].'" '; 
    244  
    245      // Render markup 
    246      if (!$table) { 
    247           $res = 
    248           '<div class="'.$class.'"><p><a class="media-icon media-link" href="'.rawurldecode($link).'">'. 
    249           '<img src="'.$f->media_icon.'" alt="" />'.($query ? $file : $fname).'</a></p>'; 
    250  
    251           $lst = ''; 
    252           if (!$f->d) { 
    253                $lst .= 
    254                '<li>'.$f->media_title.'</li>'. 
    255                '<li>'. 
    256                $f->media_dtstr.' - '. 
    257                files::size($f->size).' - '. 
    258                '<a '.$class_open.'href="'.$f->file_url.'">'.__('open').'</a>'. 
    259                '</li>'; 
    260           } 
    261           $lst .= ($act != '' ? '<li class="media-action">&nbsp;'.$act.'</li>' : ''); 
    262  
    263           // Show player if relevant 
    264           if ($file_type[0] == 'audio') 
    265           { 
    266                $lst .= '<li>'.dcMedia::audioPlayer($f->type,$f->file_url,$core->adminurl->get("admin.home",array('pf' => 'player_mp3.swf')),null,$core->blog->settings->system->media_flash_fallback,false).'</li>'; 
    267           } 
    268  
    269           $res .=   ($lst != '' ? '<ul>'.$lst.'</ul>' : ''); 
    270           $res .= '</div>'; 
    271      } else { 
    272           $res = '<tr class="'.$class.'">'; 
    273           $res .= '<td class="media-action">'.$act.'</td>'; 
    274           $res .= '<td class="maximal" scope="row"><a class="media-flag media-link" href="'.rawurldecode($link).'">'. 
    275                     '<img src="'.$f->media_icon.'" alt="" />'.($query ? $file : $fname).'</a>'. 
    276                     '<br />'.($f->d ? '' : $f->media_title).'</td>'; 
    277           $res .= '<td class="nowrap count">'.($f->d ? '' : $f->media_dtstr).'</td>'; 
    278           $res .= '<td class="nowrap count">'.($f->d ? '' : files::size($f->size).' - '. 
    279                '<a '.$class_open.'href="'.$f->file_url.'">'.__('open').'</a>').'</td>'; 
    280           $res .= '</tr>'; 
    281      } 
    282  
    283      return $res; 
     155$mediaItemLine = function ($f, $i, $query, $table = false) { 
     156    global $core, $page_url, $popup, $select, $post_id, $plugin_id, $page_url_params, $link_type; 
     157 
     158    $fname = $f->basename; 
     159    $file  = $query ? $f->relname : $f->basename; 
     160 
     161    $class = $table ? '' : 'media-item media-col-' . ($i % 2); 
     162 
     163    if ($f->d) { 
     164        // Folder 
     165        $link = $core->adminurl->get('admin.media', array_merge($page_url_params, array('d' => html::sanitizeURL($f->relname)))); 
     166        if ($f->parent) { 
     167            $fname = '..'; 
     168            $class .= ' media-folder-up'; 
     169        } else { 
     170            $class .= ' media-folder'; 
     171        } 
     172    } else { 
     173        // Item 
     174        $params = new ArrayObject( 
     175            array( 
     176                'id'        => $f->media_id, 
     177                'plugin_id' => $plugin_id, 
     178                'popup'     => $popup, 
     179                'select'    => $select, 
     180                'post_id'   => $post_id, 
     181                'link_type' => $link_type 
     182            ) 
     183        ); 
     184        $core->callBehavior('adminMediaURLParams', $params); 
     185        $params = (array) $params; 
     186        $link   = $core->adminurl->get( 
     187            'admin.media.item', $params 
     188        ); 
     189    } 
     190 
     191    $maxchars = 36; 
     192    if (strlen($fname) > $maxchars) { 
     193        $fname = substr($fname, 0, $maxchars - 4) . '...' . ($f->d ? '' : files::getExtension($fname)); 
     194    } 
     195 
     196    $act = ''; 
     197    if (!$f->d) { 
     198        if ($select > 0) { 
     199            if ($select == 1) { 
     200                // Single media selection button 
     201                $act .= '<a href="' . $link . '"><img src="images/plus.png" alt="' . __('Select this file') . '" ' . 
     202                'title="' . __('Select this file') . '" /></a> '; 
     203            } else { 
     204                // Multiple media selection checkbox 
     205                $act .= form::checkbox(array('medias[]', 'media_' . rawurlencode($file)), $file); 
     206            } 
     207        } else { 
     208            // Item 
     209            if ($post_id) { 
     210                // Media attachment button 
     211                $act .= 
     212                '<a class="attach-media" title="' . __('Attach this file to entry') . '" href="' . 
     213                $core->adminurl->get("admin.post.media", 
     214                    array('media_id' => $f->media_id, 'post_id' => $post_id, 'attach' => 1, 'link_type' => $link_type)) . 
     215                '">' . 
     216                '<img src="images/plus.png" alt="' . __('Attach this file to entry') . '"/>' . 
     217                    '</a>'; 
     218            } 
     219            if ($popup) { 
     220                // Media insertion button 
     221                $act .= '<a href="' . $link . '"><img src="images/plus.png" alt="' . __('Insert this file into entry') . '" ' . 
     222                'title="' . __('Insert this file into entry') . '" /></a> '; 
     223            } 
     224        } 
     225    } 
     226    if ($f->del) { 
     227        // Deletion button or checkbox 
     228        if (!$popup && !$f->d) { 
     229            if ($select < 2) { 
     230                // Already set for multiple media selection 
     231                $act .= form::checkbox(array('medias[]', 'media_' . rawurlencode($file)), $file); 
     232            } 
     233        } else { 
     234            $act .= '<a class="media-remove" ' . 
     235            'href="' . html::escapeURL($page_url) . 
     236            '&amp;plugin_id=' . $plugin_id . 
     237            '&amp;d=' . rawurlencode($GLOBALS['d']) . 
     238            '&amp;q=' . rawurlencode($GLOBALS['q']) . 
     239            '&amp;remove=' . rawurlencode($file) . '">' . 
     240            '<img src="images/trash.png" alt="' . __('Delete') . '" title="' . __('delete') . '" /></a>'; 
     241        } 
     242    } 
     243 
     244    $file_type  = explode('/', $f->type); 
     245    $class_open = 'class="modal-' . $file_type[0] . '" '; 
     246 
     247    // Render markup 
     248    if (!$table) { 
     249        $res = 
     250        '<div class="' . $class . '"><p><a class="media-icon media-link" href="' . rawurldecode($link) . '">' . 
     251        '<img src="' . $f->media_icon . '" alt="" />' . ($query ? $file : $fname) . '</a></p>'; 
     252 
     253        $lst = ''; 
     254        if (!$f->d) { 
     255            $lst .= 
     256            '<li>' . $f->media_title . '</li>' . 
     257            '<li>' . 
     258            $f->media_dtstr . ' - ' . 
     259            files::size($f->size) . ' - ' . 
     260            '<a ' . $class_open . 'href="' . $f->file_url . '">' . __('open') . '</a>' . 
     261                '</li>'; 
     262        } 
     263        $lst .= ($act != '' ? '<li class="media-action">&nbsp;' . $act . '</li>' : ''); 
     264 
     265        // Show player if relevant 
     266        if ($file_type[0] == 'audio') { 
     267            $lst .= '<li>' . dcMedia::audioPlayer($f->type, $f->file_url, $core->adminurl->get("admin.home", array('pf' => 'player_mp3.swf')), null, $core->blog->settings->system->media_flash_fallback, false) . '</li>'; 
     268        } 
     269 
     270        $res .= ($lst != '' ? '<ul>' . $lst . '</ul>' : ''); 
     271        $res .= '</div>'; 
     272    } else { 
     273        $res = '<tr class="' . $class . '">'; 
     274        $res .= '<td class="media-action">' . $act . '</td>'; 
     275        $res .= '<td class="maximal" scope="row"><a class="media-flag media-link" href="' . rawurldecode($link) . '">' . 
     276        '<img src="' . $f->media_icon . '" alt="" />' . ($query ? $file : $fname) . '</a>' . 
     277            '<br />' . ($f->d ? '' : $f->media_title) . '</td>'; 
     278        $res .= '<td class="nowrap count">' . ($f->d ? '' : $f->media_dtstr) . '</td>'; 
     279        $res .= '<td class="nowrap count">' . ($f->d ? '' : files::size($f->size) . ' - ' . 
     280            '<a ' . $class_open . 'href="' . $f->file_url . '">' . __('open') . '</a>') . '</td>'; 
     281        $res .= '</tr>'; 
     282    } 
     283 
     284    return $res; 
    284285}; 
    285286 
     
    287288 
    288289# Zip download 
    289 if (!empty($_GET['zipdl']) && $core->auth->check('media_admin',$core->blog->id)) 
    290 { 
    291      try 
    292      { 
    293           if (strpos(realpath($core->media->root.'/'.$d),realpath($core->media->root)) === 0) { 
    294                // Media folder or one of it's sub-folder(s) 
    295                @set_time_limit(300); 
    296                $fp = fopen('php://output','wb'); 
    297                $zip = new fileZip($fp); 
    298                $zip->addExclusion('#(^|/).(.*?)_(m|s|sq|t).jpg$#'); 
    299                $zip->addDirectory($core->media->root.'/'.$d,'',true); 
    300  
    301                header('Content-Disposition: attachment;filename='.date('Y-m-d').'-'.$core->blog->id.'-'.($d ?: 'media').'.zip'); 
    302                header('Content-Type: application/x-zip'); 
    303                $zip->write(); 
    304                unset($zip); 
    305                exit; 
    306           } else { 
    307                $d = null; 
    308                $core->media->chdir($d); 
    309                throw new Exception(__('Not a valid directory')); 
    310           } 
    311      } 
    312      catch (Exception $e) 
    313      { 
    314           $core->error->add($e->getMessage()); 
    315      } 
     290if (!empty($_GET['zipdl']) && $core->auth->check('media_admin', $core->blog->id)) { 
     291    try 
     292    { 
     293        if (strpos(realpath($core->media->root . '/' . $d), realpath($core->media->root)) === 0) { 
     294            // Media folder or one of it's sub-folder(s) 
     295            @set_time_limit(300); 
     296            $fp  = fopen('php://output', 'wb'); 
     297            $zip = new fileZip($fp); 
     298            $zip->addExclusion('#(^|/).(.*?)_(m|s|sq|t).jpg$#'); 
     299            $zip->addDirectory($core->media->root . '/' . $d, '', true); 
     300 
     301            header('Content-Disposition: attachment;filename=' . date('Y-m-d') . '-' . $core->blog->id . '-' . ($d ?: 'media') . '.zip'); 
     302            header('Content-Type: application/x-zip'); 
     303            $zip->write(); 
     304            unset($zip); 
     305            exit; 
     306        } else { 
     307            $d = null; 
     308            $core->media->chdir($d); 
     309            throw new Exception(__('Not a valid directory')); 
     310        } 
     311    } catch (Exception $e) { 
     312        $core->error->add($e->getMessage()); 
     313    } 
    316314} 
    317315 
     
    319317$fav_dirs = null; 
    320318if (!empty($_GET['fav'])) { 
    321      if (!$q) { // Ignore search results 
    322           $fav_dir = rtrim($d,'/'); 
    323           $core->auth->user_prefs->addWorkspace('interface'); 
    324           $nb_last_dirs = (integer)($core->auth->user_prefs->interface->media_nb_last_dirs); 
    325           if ($nb_last_dirs > 0) { 
    326                $fav_dirs = $core->auth->user_prefs->interface->media_fav_dirs; 
    327                if (!is_array($fav_dirs)) { 
    328                     $fav_dirs = array(); 
    329                } 
    330                if (!in_array($fav_dir,$fav_dirs) && $_GET['fav'] == 'y') { 
    331                     // Add directory in favorites 
    332                     array_unshift($fav_dirs,$fav_dir); 
    333                } elseif (in_array($fav_dir,$fav_dirs) && $_GET['fav'] == 'n') { 
    334                     // Remove directory from favorites 
    335                     unset($fav_dirs[array_search($fav_dir,$fav_dirs)]); 
    336                } 
    337                // Store new list 
    338                $core->auth->user_prefs->interface->put('media_fav_dirs',$fav_dirs,'array'); 
    339                $core->adminurl->redirect('admin.media',$page_url_params); 
    340           } 
    341      } 
     319    if (!$q) { 
     320        // Ignore search results 
     321        $fav_dir = rtrim($d, '/'); 
     322        $core->auth->user_prefs->addWorkspace('interface'); 
     323        $nb_last_dirs = (integer) ($core->auth->user_prefs->interface->media_nb_last_dirs); 
     324        if ($nb_last_dirs > 0) { 
     325            $fav_dirs = $core->auth->user_prefs->interface->media_fav_dirs; 
     326            if (!is_array($fav_dirs)) { 
     327                $fav_dirs = array(); 
     328            } 
     329            if (!in_array($fav_dir, $fav_dirs) && $_GET['fav'] == 'y') { 
     330                // Add directory in favorites 
     331                array_unshift($fav_dirs, $fav_dir); 
     332            } elseif (in_array($fav_dir, $fav_dirs) && $_GET['fav'] == 'n') { 
     333                // Remove directory from favorites 
     334                unset($fav_dirs[array_search($fav_dir, $fav_dirs)]); 
     335            } 
     336            // Store new list 
     337            $core->auth->user_prefs->interface->put('media_fav_dirs', $fav_dirs, 'array'); 
     338            $core->adminurl->redirect('admin.media', $page_url_params); 
     339        } 
     340    } 
    342341} 
    343342 
    344343# Recent media dirs 
    345344$last_dirs = null; 
    346 if (!$q) {     // Ignore search results 
    347      $recent_dir = rtrim($d,'/'); 
    348      $core->auth->user_prefs->addWorkspace('interface'); 
    349      $nb_last_dirs = (integer)($core->auth->user_prefs->interface->media_nb_last_dirs); 
    350      if ($nb_last_dirs > 0) { 
    351           $last_dirs = $core->auth->user_prefs->interface->media_last_dirs; 
    352           if (!is_array($last_dirs)) { 
    353                $last_dirs = array(); 
    354           } 
    355           if (!in_array($recent_dir,$last_dirs)) { 
    356                // Add new dir at the top of the list 
    357                array_unshift($last_dirs,$recent_dir); 
    358                // Remove oldest dir(s) 
    359                while (count($last_dirs) > $nb_last_dirs) { 
    360                     array_pop($last_dirs); 
    361                } 
    362           } else { 
    363                // Move current dir at the top of list 
    364                unset($last_dirs[array_search($recent_dir,$last_dirs)]); 
    365                array_unshift($last_dirs,$recent_dir); 
    366           } 
    367           // Store new list 
    368           $core->auth->user_prefs->interface->put('media_last_dirs',$last_dirs,'array'); 
    369      } 
     345if (!$q) { 
     346    // Ignore search results 
     347    $recent_dir = rtrim($d, '/'); 
     348    $core->auth->user_prefs->addWorkspace('interface'); 
     349    $nb_last_dirs = (integer) ($core->auth->user_prefs->interface->media_nb_last_dirs); 
     350    if ($nb_last_dirs > 0) { 
     351        $last_dirs = $core->auth->user_prefs->interface->media_last_dirs; 
     352        if (!is_array($last_dirs)) { 
     353            $last_dirs = array(); 
     354        } 
     355        if (!in_array($recent_dir, $last_dirs)) { 
     356            // Add new dir at the top of the list 
     357            array_unshift($last_dirs, $recent_dir); 
     358            // Remove oldest dir(s) 
     359            while (count($last_dirs) > $nb_last_dirs) { 
     360                array_pop($last_dirs); 
     361            } 
     362        } else { 
     363            // Move current dir at the top of list 
     364            unset($last_dirs[array_search($recent_dir, $last_dirs)]); 
     365            array_unshift($last_dirs, $recent_dir); 
     366        } 
     367        // Store new list 
     368        $core->auth->user_prefs->interface->put('media_last_dirs', $last_dirs, 'array'); 
     369    } 
    370370} 
    371371 
    372372# New directory 
    373 if ($dir && !empty($_POST['newdir'])) 
    374 { 
    375      try { 
    376           $core->media->makeDir($_POST['newdir']); 
    377           dcPage::addSuccessNotice(sprintf( 
    378                __('Directory "%s" has been successfully created.'), 
    379                html::escapeHTML($_POST['newdir'])) 
    380           ); 
    381           $core->adminurl->redirect('admin.media',$page_url_params); 
    382      } catch (Exception $e) { 
    383           $core->error->add($e->getMessage()); 
    384      } 
     373if ($dir && !empty($_POST['newdir'])) { 
     374    try { 
     375        $core->media->makeDir($_POST['newdir']); 
     376        dcPage::addSuccessNotice(sprintf( 
     377            __('Directory "%s" has been successfully created.'), 
     378            html::escapeHTML($_POST['newdir'])) 
     379        ); 
     380        $core->adminurl->redirect('admin.media', $page_url_params); 
     381    } catch (Exception $e) { 
     382        $core->error->add($e->getMessage()); 
     383    } 
    385384} 
    386385 
    387386# Adding a file 
    388387if ($dir && !empty($_FILES['upfile'])) { 
    389      // only one file per request : @see option singleFileUploads in admin/js/jsUpload/jquery.fileupload 
    390      $upfile = array('name' => $_FILES['upfile']['name'][0], 
    391           'type' => $_FILES['upfile']['type'][0], 
    392           'tmp_name' => $_FILES['upfile']['tmp_name'][0], 
    393           'error' => $_FILES['upfile']['error'][0], 
    394           'size' => $_FILES['upfile']['size'][0], 
    395           'title' => html::escapeHTML($_FILES['upfile']['name'][0]) 
    396           ); 
    397  
    398      if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
    399           header('Content-type: application/json'); 
    400           $message = array(); 
    401  
    402           try { 
    403                files::uploadStatus($upfile); 
    404                $new_file_id = $core->media->uploadFile($upfile['tmp_name'],$upfile['name'],$upfile['title']); 
    405  
    406                $message['files'][] = array( 
    407                     'name' => $upfile['name'], 
    408                     'size' => $upfile['size'], 
    409                     'html' => $mediaItemLine($core->media->getFile($new_file_id),1,$query) 
    410                ); 
    411           } catch (Exception $e) { 
    412                $message['files'][] = array('name' => $upfile['name'], 
    413                     'size' => $upfile['size'], 
    414                     'error' => $e->getMessage() 
    415                     ); 
    416           } 
    417           echo json_encode($message); 
    418           exit(); 
    419      } else { 
    420           try { 
    421                files::uploadStatus($upfile); 
    422  
    423                $f_title = (isset($_POST['upfiletitle']) ? html::escapeHTML($_POST['upfiletitle']) : ''); 
    424                $f_private = (isset($_POST['upfilepriv']) ? $_POST['upfilepriv'] : false); 
    425  
    426                $core->media->uploadFile($upfile['tmp_name'],$upfile['name'],$f_title,$f_private); 
    427  
    428                dcPage::addSuccessNotice(__('Files have been successfully uploaded.')); 
    429                $core->adminurl->redirect('admin.media',$page_url_params); 
    430           } catch (Exception $e) { 
    431                $core->error->add($e->getMessage()); 
    432           } 
    433      } 
     388    // only one file per request : @see option singleFileUploads in admin/js/jsUpload/jquery.fileupload 
     389    $upfile = array('name' => $_FILES['upfile']['name'][0], 
     390        'type'                => $_FILES['upfile']['type'][0], 
     391        'tmp_name'            => $_FILES['upfile']['tmp_name'][0], 
     392        'error'                => $_FILES['upfile']['error'][0], 
     393        'size'                => $_FILES['upfile']['size'][0], 
     394        'title'                => html::escapeHTML($_FILES['upfile']['name'][0]) 
     395    ); 
     396 
     397    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
     398        header('Content-type: application/json'); 
     399        $message = array(); 
     400 
     401        try { 
     402            files::uploadStatus($upfile); 
     403            $new_file_id = $core->media->uploadFile($upfile['tmp_name'], $upfile['name'], $upfile['title']); 
     404 
     405            $message['files'][] = array( 
     406                'name' => $upfile['name'], 
     407                'size' => $upfile['size'], 
     408                'html' => $mediaItemLine($core->media->getFile($new_file_id), 1, $query) 
     409            ); 
     410        } catch (Exception $e) { 
     411            $message['files'][] = array('name' => $upfile['name'], 
     412                'size'                            => $upfile['size'], 
     413                'error'                            => $e->getMessage() 
     414            ); 
     415        } 
     416        echo json_encode($message); 
     417        exit(); 
     418    } else { 
     419        try { 
     420            files::uploadStatus($upfile); 
     421 
     422            $f_title  = (isset($_POST['upfiletitle']) ? html::escapeHTML($_POST['upfiletitle']) : ''); 
     423            $f_private = (isset($_POST['upfilepriv']) ? $_POST['upfilepriv'] : false); 
     424 
     425            $core->media->uploadFile($upfile['tmp_name'], $upfile['name'], $f_title, $f_private); 
     426 
     427            dcPage::addSuccessNotice(__('Files have been successfully uploaded.')); 
     428            $core->adminurl->redirect('admin.media', $page_url_params); 
     429        } catch (Exception $e) { 
     430            $core->error->add($e->getMessage()); 
     431        } 
     432    } 
    434433} 
    435434 
    436435# Removing items 
    437436if ($dir && !empty($_POST['medias']) && !empty($_POST['delete_medias'])) { 
    438      try { 
    439           foreach ($_POST['medias'] as $media) { 
    440                $core->media->removeItem(rawurldecode($media)); 
    441           } 
    442           dcPage::addSuccessNotice( 
    443                sprintf(__('Successfully delete one media.', 
    444                             'Successfully delete %d medias.', 
    445                             count($_POST['medias']) 
    446                             ), 
    447                             count($_POST['medias']) 
    448                ) 
    449           ); 
    450           $core->adminurl->redirect('admin.media',$page_url_params); 
    451      } catch (Exception $e) { 
    452           $core->error->add($e->getMessage()); 
    453      } 
     437    try { 
     438        foreach ($_POST['medias'] as $media) { 
     439            $core->media->removeItem(rawurldecode($media)); 
     440        } 
     441        dcPage::addSuccessNotice( 
     442            sprintf(__('Successfully delete one media.', 
     443                'Successfully delete %d medias.', 
     444                count($_POST['medias']) 
     445            ), 
     446                count($_POST['medias']) 
     447            ) 
     448        ); 
     449        $core->adminurl->redirect('admin.media', $page_url_params); 
     450    } catch (Exception $e) { 
     451        $core->error->add($e->getMessage()); 
     452    } 
    454453} 
    455454 
    456455# Removing item from popup only 
    457 if ($dir && !empty($_POST['rmyes']) && !empty($_POST['remove'])) 
    458 { 
    459      $_POST['remove'] = rawurldecode($_POST['remove']); 
    460  
    461      try { 
    462           if (is_dir(path::real($core->media->getPwd().'/'.path::clean($_POST['remove'])))) { 
    463                $msg = __('Directory has been successfully removed.'); 
    464           } else { 
    465                $msg = __('File has been successfully removed.'); 
    466           } 
    467           $core->media->removeItem($_POST['remove']); 
    468           dcPage::addSuccessNotice($msg); 
    469           $core->adminurl->redirect('admin.media',$page_url_params); 
    470      } catch (Exception $e) { 
    471           $core->error->add($e->getMessage()); 
    472      } 
     456if ($dir && !empty($_POST['rmyes']) && !empty($_POST['remove'])) { 
     457    $_POST['remove'] = rawurldecode($_POST['remove']); 
     458 
     459    try { 
     460        if (is_dir(path::real($core->media->getPwd() . '/' . path::clean($_POST['remove'])))) { 
     461            $msg = __('Directory has been successfully removed.'); 
     462        } else { 
     463            $msg = __('File has been successfully removed.'); 
     464        } 
     465        $core->media->removeItem($_POST['remove']); 
     466        dcPage::addSuccessNotice($msg); 
     467        $core->adminurl->redirect('admin.media', $page_url_params); 
     468    } catch (Exception $e) { 
     469        $core->error->add($e->getMessage()); 
     470    } 
    473471} 
    474472 
    475473# Rebuild directory 
    476 if ($dir && $core->auth->isSuperAdmin() && !empty($_POST['rebuild'])) 
    477 { 
    478      try { 
    479           $core->media->rebuild($d); 
    480  
    481           dcPage::success(sprintf( 
    482                __('Directory "%s" has been successfully rebuilt.'), 
    483                html::escapeHTML($d)) 
    484           ); 
    485           $core->adminurl->redirect('admin.media',$page_url_params); 
    486      } catch (Exception $e) { 
    487           $core->error->add($e->getMessage()); 
    488      } 
     474if ($dir && $core->auth->isSuperAdmin() && !empty($_POST['rebuild'])) { 
     475    try { 
     476        $core->media->rebuild($d); 
     477 
     478        dcPage::success(sprintf( 
     479            __('Directory "%s" has been successfully rebuilt.'), 
     480            html::escapeHTML($d)) 
     481        ); 
     482        $core->adminurl->redirect('admin.media', $page_url_params); 
     483    } catch (Exception $e) { 
     484        $core->error->add($e->getMessage()); 
     485    } 
    489486} 
    490487 
    491488# DISPLAY confirm page for rmdir & rmfile 
    492 if ($dir && !empty($_GET['remove']) && empty($_GET['noconfirm'])) 
    493 { 
    494      call_user_func($open_f,__('Media manager'),'', 
    495           dcPage::breadcrumb( 
    496                array( 
    497                     html::escapeHTML($core->blog->name) => '', 
    498                     __('Media manager') => '', 
    499                     __('confirm removal') => '' 
    500                ), 
    501                array('home_link' => !$popup) 
    502           ) 
    503      ); 
    504  
    505      echo 
    506      '<form action="'.html::escapeURL($core->adminurl->get('admin.media')).'" method="post">'. 
    507      '<p>'.sprintf(__('Are you sure you want to remove %s?'), 
    508           html::escapeHTML($_GET['remove'])).'</p>'. 
    509      '<p><input type="submit" value="'.__('Cancel').'" /> '. 
    510      ' &nbsp; <input type="submit" name="rmyes" value="'.__('Yes').'" />'. 
    511      form::hidden('d',$d). 
    512      form::hidden('q',$q). 
    513      $core->adminurl->getHiddenFormFields('admin.media',$page_url_params). 
    514      $core->formNonce(). 
    515      form::hidden('remove',html::escapeHTML($_GET['remove'])).'</p>'. 
    516      '</form>'; 
    517  
    518      call_user_func($close_f); 
    519      exit; 
     489if ($dir && !empty($_GET['remove']) && empty($_GET['noconfirm'])) { 
     490    call_user_func($open_f, __('Media manager'), '', 
     491        dcPage::breadcrumb( 
     492            array( 
     493                html::escapeHTML($core->blog->name) => '', 
     494                __('Media manager')                 => '', 
     495                __('confirm removal')               => '' 
     496            ), 
     497            array('home_link' => !$popup) 
     498        ) 
     499    ); 
     500 
     501    echo 
     502    '<form action="' . html::escapeURL($core->adminurl->get('admin.media')) . '" method="post">' . 
     503    '<p>' . sprintf(__('Are you sure you want to remove %s?'), 
     504        html::escapeHTML($_GET['remove'])) . '</p>' . 
     505    '<p><input type="submit" value="' . __('Cancel') . '" /> ' . 
     506    ' &nbsp; <input type="submit" name="rmyes" value="' . __('Yes') . '" />' . 
     507    form::hidden('d', $d) . 
     508    form::hidden('q', $q) . 
     509    $core->adminurl->getHiddenFormFields('admin.media', $page_url_params) . 
     510    $core->formNonce() . 
     511    form::hidden('remove', html::escapeHTML($_GET['remove'])) . '</p>' . 
     512        '</form>'; 
     513 
     514    call_user_func($close_f); 
     515    exit; 
    520516} 
    521517 
     
    526522 
    527523if (!isset($core->media)) { 
    528      $breadcrumb = dcPage::breadcrumb( 
    529           array( 
    530                html::escapeHTML($core->blog->name) => '', 
    531                __('Media manager') => '' 
    532           ), 
    533           array('home_link' => !$popup) 
    534      ); 
     524    $breadcrumb = dcPage::breadcrumb( 
     525        array( 
     526            html::escapeHTML($core->blog->name) => '', 
     527            __('Media manager')                => '' 
     528        ), 
     529        array('home_link' => !$popup) 
     530    ); 
    535531} else { 
    536      $home_params = $page_url_params; 
    537      $home_params['d']=''; 
    538      $home_params['q']=''; 
    539      if ($query || (!$query && $q)) { 
    540           $count = $query ? count($dir['files']) : 0; 
    541           $breadcrumb = dcPage::breadcrumb( 
    542                array( 
    543                     html::escapeHTML($core->blog->name) => '', 
    544                     __('Media manager') => $core->adminurl->get('admin.media',$home_params), 
    545                     __('Search:').' '.$q.' ('.sprintf(__('%s file found','%s files found',$count),$count).')' => '' 
    546                ), 
    547                array('home_link' => !$popup) 
    548           ); 
    549      } else { 
    550           $temp_params = $page_url_params; 
    551           $temp_params['d']='%s'; 
    552           $bc_template = $core->adminurl->get('admin.media',$temp_params,'&amp;',true); 
    553           $breadcrumb_media = $core->media->breadCrumb($bc_template,'<span class="page-title">%s</span>'); 
    554           if ($breadcrumb_media == '') { 
    555                $breadcrumb = dcPage::breadcrumb( 
    556                     array( 
    557                          html::escapeHTML($core->blog->name) => '', 
    558                          __('Media manager') => $core->adminurl->get('admin.media',$home_params) 
    559                     ), 
    560                     array('home_link' => !$popup) 
    561                ); 
    562           } else { 
    563                $home_params = $page_url_params; 
    564                $home_params['d']=''; 
    565  
    566                $breadcrumb = dcPage::breadcrumb( 
    567                     array( 
    568                          html::escapeHTML($core->blog->name) => '', 
    569                          __('Media manager') => $core->adminurl->get('admin.media',$home_params), 
    570                          $breadcrumb_media => '' 
    571                     ), 
    572                     array( 
    573                          'home_link' => !$popup, 
    574                          'hl' => false 
    575                     ) 
    576                ); 
    577           } 
    578      } 
     532    $home_params      = $page_url_params; 
     533    $home_params['d'] = ''; 
     534    $home_params['q'] = ''; 
     535    if ($query || (!$query && $q)) { 
     536        $count      = $query ? count($dir['files']) : 0; 
     537        $breadcrumb = dcPage::breadcrumb( 
     538            array( 
     539                html::escapeHTML($core->blog->name)                                                                    => '', 
     540                __('Media manager')                                                                                    => $core->adminurl->get('admin.media', $home_params), 
     541                __('Search:') . ' ' . $q . ' (' . sprintf(__('%s file found', '%s files found', $count), $count) . ')' => '' 
     542            ), 
     543            array('home_link' => !$popup) 
     544        ); 
     545    } else { 
     546        $temp_params      = $page_url_params; 
     547        $temp_params['d'] = '%s'; 
     548        $bc_template      = $core->adminurl->get('admin.media', $temp_params, '&amp;', true); 
     549        $breadcrumb_media = $core->media->breadCrumb($bc_template, '<span class="page-title">%s</span>'); 
     550        if ($breadcrumb_media == '') { 
     551            $breadcrumb = dcPage::breadcrumb( 
     552                array( 
     553                    html::escapeHTML($core->blog->name) => '', 
     554                    __('Media manager')                 => $core->adminurl->get('admin.media', $home_params) 
     555                ), 
     556                array('home_link' => !$popup) 
     557            ); 
     558        } else { 
     559            $home_params      = $page_url_params; 
     560            $home_params['d'] = ''; 
     561 
     562            $breadcrumb = dcPage::breadcrumb( 
     563                array( 
     564                    html::escapeHTML($core->blog->name) => '', 
     565                    __('Media manager')                 => $core->adminurl->get('admin.media', $home_params), 
     566                    $breadcrumb_media                  => '' 
     567                ), 
     568                array( 
     569                    'home_link' => !$popup, 
     570                    'hl'        => false 
     571                ) 
     572            ); 
     573        } 
     574    } 
    579575} 
    580576 
    581577// Recent media folders 
    582 $last_folders = ''; 
     578$last_folders      = ''; 
    583579$last_folders_item = ''; 
    584 $fav_url = ''; 
    585 $fav_img = ''; 
    586 $fav_alt = ''; 
    587 $nb_last_dirs = (integer)($core->auth->user_prefs->interface->media_nb_last_dirs); 
     580$fav_url           = ''; 
     581$fav_img           = ''; 
     582$fav_alt           = ''; 
     583$nb_last_dirs      = (integer) ($core->auth->user_prefs->interface->media_nb_last_dirs); 
    588584if ($nb_last_dirs > 0) { 
    589      // Favorites directories 
    590      $fav_dirs = $core->auth->user_prefs->interface->media_fav_dirs; 
    591      if (!is_array($fav_dirs)) { 
    592           $fav_dirs = array(); 
    593      } 
    594      foreach ($fav_dirs as $ld) { 
    595           // Add favorites dirs on top of combo 
    596           $ld_params = $page_url_params; 
    597           $ld_params['d'] = $ld; 
    598           $ld_params['q'] = '';    // Reset search 
    599           $last_folders_item .= 
    600                '<option value="'.urldecode($core->adminurl->get('admin.media',$ld_params)).'"'. 
    601                ($ld == rtrim($d,'/') ? ' selected="selected"' : '').'>'. 
    602                '/'.$ld.'</option>'."\n"; 
    603           if ($ld == rtrim($d,'/')) { 
    604                // Current directory is a favorite → button will un-fav 
    605                $ld_params['fav'] = 'n'; 
    606                $fav_url = urldecode($core->adminurl->get('admin.media',$ld_params)); 
    607                unset($ld_params['fav']); 
    608                $fav_img = 'images/fav-on.png'; 
    609                $fav_alt = __('Remove this folder from your favorites'); 
    610           } 
    611      } 
    612      if ($last_folders_item != '') { 
    613           // add a separator between favorite dirs and recent dirs 
    614           $last_folders_item .= '<option disabled>_________</option>'; 
    615      } 
    616      // Recent directories 
    617      if (!is_array($last_dirs)) { 
    618           $last_dirs = $core->auth->user_prefs->interface->media_last_dirs; 
    619      } 
    620      if (is_array($last_dirs)) { 
    621           foreach ($last_dirs as $ld) { 
    622                if (!in_array($ld,$fav_dirs)) { 
    623                     $ld_params = $page_url_params; 
    624                     $ld_params['d'] = $ld; 
    625                     $ld_params['q'] = '';    // Reset search 
    626                     $last_folders_item .= 
    627                          '<option value="'.urldecode($core->adminurl->get('admin.media',$ld_params)).'"'. 
    628                          ($ld == rtrim($d,'/') ? ' selected="selected"' : '').'>'. 
    629                          '/'.$ld.'</option>'."\n"; 
    630                     if ($ld == rtrim($d,'/')) { 
    631                          // Current directory is not a favorite → button will fav 
    632                          $ld_params['fav'] = 'y'; 
    633                          $fav_url = urldecode($core->adminurl->get('admin.media',$ld_params)); 
    634                          unset($ld_params['fav']); 
    635                          $fav_img = 'images/fav-off.png'; 
    636                          $fav_alt = __('Add this folder to your favorites'); 
    637                     } 
    638                } 
    639           } 
    640      } 
    641      if ($last_folders_item != '') { 
    642           $last_folders = 
    643                '<p class="media-recent hidden-if-no-js">'. 
    644                '<label class="classic" for="switchfolder">'.__('Goto recent folder:').'</label> '. 
    645                '<select name="switchfolder" id="switchfolder">'. 
    646                $last_folders_item. 
    647                '</select>'. 
    648                '<script type="text/javascript">var urlmenu = document.getElementById(\'switchfolder\'); 
    649                 urlmenu.onchange = function() { window.location = this.options[this.selectedIndex].value; }; 
    650                </script>'. 
    651                ' <a id="media-fav-dir" href="'.$fav_url.'" title="'.$fav_alt.'"><img src="'.$fav_img.'" alt="'.$fav_alt.'" /></a>'. 
    652                '</p>'; 
    653      } 
    654 } 
    655  
    656 call_user_func($open_f,__('Media manager'), 
    657      dcPage::jsModal(). 
    658      dcPage::jsLoad('js/_media.js'). 
    659      ($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : ''), 
    660      $breadcrumb 
    661      ); 
     585    // Favorites directories 
     586    $fav_dirs = $core->auth->user_prefs->interface->media_fav_dirs; 
     587    if (!is_array($fav_dirs)) { 
     588        $fav_dirs = array(); 
     589    } 
     590    foreach ($fav_dirs as $ld) { 
     591        // Add favorites dirs on top of combo 
     592        $ld_params      = $page_url_params; 
     593        $ld_params['d'] = $ld; 
     594        $ld_params['q'] = ''; // Reset search 
     595        $last_folders_item .= 
     596        '<option value="' . urldecode($core->adminurl->get('admin.media', $ld_params)) . '"' . 
     597            ($ld == rtrim($d, '/') ? ' selected="selected"' : '') . '>' . 
     598            '/' . $ld . '</option>' . "\n"; 
     599        if ($ld == rtrim($d, '/')) { 
     600            // Current directory is a favorite → button will un-fav 
     601            $ld_params['fav'] = 'n'; 
     602            $fav_url          = urldecode($core->adminurl->get('admin.media', $ld_params)); 
     603            unset($ld_params['fav']); 
     604            $fav_img = 'images/fav-on.png'; 
     605            $fav_alt = __('Remove this folder from your favorites'); 
     606        } 
     607    } 
     608    if ($last_folders_item != '') { 
     609        // add a separator between favorite dirs and recent dirs 
     610        $last_folders_item .= '<option disabled>_________</option>'; 
     611    } 
     612    // Recent directories 
     613    if (!is_array($last_dirs)) { 
     614        $last_dirs = $core->auth->user_prefs->interface->media_last_dirs; 
     615    } 
     616    if (is_array($last_dirs)) { 
     617        foreach ($last_dirs as $ld) { 
     618            if (!in_array($ld, $fav_dirs)) { 
     619                $ld_params      = $page_url_params; 
     620                $ld_params['d'] = $ld; 
     621                $ld_params['q'] = ''; // Reset search 
     622                $last_folders_item .= 
     623                '<option value="' . urldecode($core->adminurl->get('admin.media', $ld_params)) . '"' . 
     624                    ($ld == rtrim($d, '/') ? ' selected="selected"' : '') . '>' . 
     625                    '/' . $ld . '</option>' . "\n"; 
     626                if ($ld == rtrim($d, '/')) { 
     627                    // Current directory is not a favorite → button will fav 
     628                    $ld_params['fav'] = 'y'; 
     629                    $fav_url          = urldecode($core->adminurl->get('admin.media', $ld_params)); 
     630                    unset($ld_params['fav']); 
     631                    $fav_img = 'images/fav-off.png'; 
     632                    $fav_alt = __('Add this folder to your favorites'); 
     633                } 
     634            } 
     635        } 
     636    } 
     637    if ($last_folders_item != '') { 
     638        $last_folders = 
     639        '<p class="media-recent hidden-if-no-js">' . 
     640        '<label class="classic" for="switchfolder">' . __('Goto recent folder:') . '</label> ' . 
     641            '<select name="switchfolder" id="switchfolder">' . 
     642            $last_folders_item . 
     643            '</select>' . 
     644            '<script type="text/javascript">var urlmenu = document.getElementById(\'switchfolder\'); 
     645            urlmenu.onchange = function() { window.location = this.options[this.selectedIndex].value; }; 
     646            </script>' . 
     647            ' <a id="media-fav-dir" href="' . $fav_url . '" title="' . $fav_alt . '"><img src="' . $fav_img . '" alt="' . $fav_alt . '" /></a>' . 
     648            '</p>'; 
     649    } 
     650} 
     651 
     652call_user_func($open_f, __('Media manager'), 
     653    dcPage::jsModal() . 
     654    dcPage::jsLoad('js/_media.js') . 
     655    ($core_media_writable ? dcPage::jsUpload(array('d=' . $d)) : ''), 
     656    $breadcrumb 
     657); 
    662658 
    663659if ($popup) { 
    664      // Display notices 
    665      echo dcPage::notices(); 
     660    // Display notices 
     661    echo dcPage::notices(); 
    666662} 
    667663 
    668664if (!$core_media_writable) { 
    669      dcPage::warning(__('You do not have sufficient permissions to write to this folder.')); 
     665    dcPage::warning(__('You do not have sufficient permissions to write to this folder.')); 
    670666} 
    671667 
    672668if (!empty($_GET['mkdok'])) { 
    673      dcPage::success(__('Directory has been successfully created.')); 
     669    dcPage::success(__('Directory has been successfully created.')); 
    674670} 
    675671 
    676672if (!empty($_GET['upok'])) { 
    677      dcPage::success(__('Files have been successfully uploaded.')); 
     673    dcPage::success(__('Files have been successfully uploaded.')); 
    678674} 
    679675 
    680676if (!empty($_GET['rmfok'])) { 
    681      dcPage::success(__('File has been successfully removed.')); 
     677    dcPage::success(__('File has been successfully removed.')); 
    682678} 
    683679 
    684680if (!empty($_GET['rmdok'])) { 
    685      dcPage::success(__('Directory has been successfully removed.')); 
     681    dcPage::success(__('Directory has been successfully removed.')); 
    686682} 
    687683 
    688684if (!empty($_GET['rebuildok'])) { 
    689      dcPage::success(__('Directory has been successfully rebuilt.')); 
     685    dcPage::success(__('Directory has been successfully rebuilt.')); 
    690686} 
    691687 
    692688if (!empty($_GET['unzipok'])) { 
    693      dcPage::success(__('Zip file has been successfully extracted.')); 
     689    dcPage::success(__('Zip file has been successfully extracted.')); 
    694690} 
    695691 
    696692if (!$dir) { 
    697      call_user_func($close_f); 
    698      exit; 
     693    call_user_func($close_f); 
     694    exit; 
    699695} 
    700696 
    701697if ($select) { 
    702      // Select mode (popup or not) 
    703      echo '<div class="'.($popup ? 'form-note ' : '').'info"><p>'; 
    704      if ($select == 1) { 
    705           echo sprintf(__('Select a file by clicking on %s'),'<img src="images/plus.png" alt="'.__('Select this file').'" />'); 
    706      } else { 
    707           echo sprintf(__('Select files and click on <strong>%s</strong> button'),__('Choose selected medias')); 
    708      } 
    709      if ($core_media_writable) { 
    710           echo ' '.__('or').' '.sprintf('<a href="#fileupload">%s</a>',__('upload a new file')); 
    711      } 
    712      echo '</p></div>'; 
     698    // Select mode (popup or not) 
     699    echo '<div class="' . ($popup ? 'form-note ' : '') . 'info"><p>'; 
     700    if ($select == 1) { 
     701        echo sprintf(__('Select a file by clicking on %s'), '<img src="images/plus.png" alt="' . __('Select this file') . '" />'); 
     702    } else { 
     703        echo sprintf(__('Select files and click on <strong>%s</strong> button'), __('Choose selected medias')); 
     704    } 
     705    if ($core_media_writable) { 
     706        echo ' ' . __('or') . ' ' . sprintf('<a href="#fileupload">%s</a>', __('upload a new file')); 
     707    } 
     708    echo '</p></div>'; 
    713709} else { 
    714      if ($post_id) { 
    715           echo '<div class="form-note info"><p>'.sprintf(__('Choose a file to attach to entry %s by clicking on %s'), 
    716                '<a href="'.$core->getPostAdminURL($post_type,$post_id).'">'.html::escapeHTML($post_title).'</a>', 
    717                '<img src="images/plus.png" alt="'.__('Attach this file to entry').'" />'); 
    718           if ($core_media_writable) { 
    719                echo ' '.__('or').' '.sprintf('<a href="#fileupload">%s</a>',__('upload a new file')); 
    720           } 
    721           echo '</p></div>'; 
    722      } 
    723      if ($popup) { 
    724           echo '<div class="info"><p>'.sprintf(__('Choose a file to insert into entry by clicking on %s'), 
    725                '<img src="images/plus.png" alt="'.__('Attach this file to entry').'" />'); 
    726           if ($core_media_writable) { 
    727                echo ' '.__('or').' '.sprintf('<a href="#fileupload">%s</a>',__('upload a new file')); 
    728           } 
    729           echo '</p></div>'; 
    730      } 
     710    if ($post_id) { 
     711        echo '<div class="form-note info"><p>' . sprintf(__('Choose a file to attach to entry %s by clicking on %s'), 
     712            '<a href="' . $core->getPostAdminURL($post_type, $post_id) . '">' . html::escapeHTML($post_title) . '</a>', 
     713            '<img src="images/plus.png" alt="' . __('Attach this file to entry') . '" />'); 
     714        if ($core_media_writable) { 
     715            echo ' ' . __('or') . ' ' . sprintf('<a href="#fileupload">%s</a>', __('upload a new file')); 
     716        } 
     717        echo '</p></div>'; 
     718    } 
     719    if ($popup) { 
     720        echo '<div class="info"><p>' . sprintf(__('Choose a file to insert into entry by clicking on %s'), 
     721            '<img src="images/plus.png" alt="' . __('Attach this file to entry') . '" />'); 
     722        if ($core_media_writable) { 
     723            echo ' ' . __('or') . ' ' . sprintf('<a href="#fileupload">%s</a>', __('upload a new file')); 
     724        } 
     725        echo '</p></div>'; 
     726    } 
    731727} 
    732728 
    733729// Remove hidden directories (unless DC_SHOW_HIDDEN_DIRS is set to true) 
    734730if (!defined('DC_SHOW_HIDDEN_DIRS') || (DC_SHOW_HIDDEN_DIRS == false)) { 
    735      for ($i = count($dir['dirs']) - 1; $i >= 0; $i--) { 
    736           if ($dir['dirs'][$i]->d) { 
    737                if (strpos($dir['dirs'][$i]->relname,'.') !== false) { 
    738                     unset($dir['dirs'][$i]); 
    739                } 
    740           } 
    741      } 
    742 } 
    743 $items = array_values(array_merge($dir['dirs'],$dir['files'])); 
    744  
    745 $fmt_form_media = '<form action="'.$core->adminurl->get("admin.media").'" method="post" id="form-medias">'. 
    746      '<div class="files-group">%s</div>'. 
    747      '<p class="hidden">'.$core->formNonce(). 
    748      form::hidden(array('d'),$d). 
    749      form::hidden(array('q'),$q). 
    750      form::hidden(array('popup'),$popup). 
    751      form::hidden(array('select'),$select). 
    752      form::hidden(array('plugin_id'),$plugin_id). 
    753      form::hidden(array('post_id'),$post_id). 
    754      form::hidden(array('link_type'),$link_type). 
    755      '</p>'; 
     731    for ($i = count($dir['dirs']) - 1; $i >= 0; $i--) { 
     732        if ($dir['dirs'][$i]->d) { 
     733            if (strpos($dir['dirs'][$i]->relname, '.') !== false) { 
     734                unset($dir['dirs'][$i]); 
     735            } 
     736        } 
     737    } 
     738} 
     739$items = array_values(array_merge($dir['dirs'], $dir['files'])); 
     740 
     741$fmt_form_media = '<form action="' . $core->adminurl->get("admin.media") . '" method="post" id="form-medias">' . 
     742'<div class="files-group">%s</div>' . 
     743'<p class="hidden">' . $core->formNonce() . 
     744form::hidden(array('d'), $d) . 
     745form::hidden(array('q'), $q) . 
     746form::hidden(array('popup'), $popup) . 
     747form::hidden(array('select'), $select) . 
     748form::hidden(array('plugin_id'), $plugin_id) . 
     749form::hidden(array('post_id'), $post_id) . 
     750form::hidden(array('link_type'), $link_type) . 
     751    '</p>'; 
    756752 
    757753if (!$popup || $select > 1) { 
    758      // Checkboxes and action 
    759      $fmt_form_media .= 
    760      '<div class="'.(!$popup ? 'medias-delete' : '').' '.($select > 1 ? 'medias-select' : '').'">'. 
    761      '<p class="checkboxes-helpers"></p>'. 
    762      '<p>'; 
    763      if ($select > 1) { 
    764           $fmt_form_media .= 
    765           '<input type="submit" class="select" id="select_medias" name="select_medias" value="'.__('Choose selected medias').'"/> '; 
    766      } 
    767      if (!$popup) { 
    768           $fmt_form_media .= 
    769           '<input type="submit" class="delete" id="delete_medias" name="delete_medias" value="'.__('Remove selected medias').'"/>'; 
    770      } 
    771      $fmt_form_media .= 
    772      '</p>'. 
    773      '</div>'; 
     754    // Checkboxes and action 
     755    $fmt_form_media .= 
     756        '<div class="' . (!$popup ? 'medias-delete' : '') . ' ' . ($select > 1 ? 'medias-select' : '') . '">' . 
     757        '<p class="checkboxes-helpers"></p>' . 
     758        '<p>'; 
     759    if ($select > 1) { 
     760        $fmt_form_media .= 
     761        '<input type="submit" class="select" id="select_medias" name="select_medias" value="' . __('Choose selected medias') . '"/> '; 
     762    } 
     763    if (!$popup) { 
     764        $fmt_form_media .= 
     765        '<input type="submit" class="delete" id="delete_medias" name="delete_medias" value="' . __('Remove selected medias') . '"/>'; 
     766    } 
     767    $fmt_form_media .= 
     768        '</p>' . 
     769        '</div>'; 
    774770} 
    775771$fmt_form_media .= 
    776      '</form>'; 
     772    '</form>'; 
    777773 
    778774echo '<div class="media-list">'; 
    779775echo $last_folders; 
    780776echo // Search form 
    781      '<form action="'.$core->adminurl->get("admin.media").'" method="get" id="search-form">'. 
    782      '<p><label for="search" class="classic">'.__('Search:').'</label> '. 
    783      form::field('q',20,255,$q).' '. 
    784      '<input type="submit" value="'.__('OK').'" />'.' '. 
    785      '<span class="form-note">'.__('Will search into media filename (including path), title and description').'</span>'. 
    786      form::hidden(array('popup'),$popup). 
    787      form::hidden(array('select'),$select). 
    788      form::hidden(array('plugin_id'),$plugin_id). 
    789      form::hidden(array('post_id'),$post_id). 
    790      form::hidden(array('link_type'),$link_type). 
    791      '</p>'. 
    792      '</form>'; 
    793  
    794 if (count($items) == 0) 
    795 { 
    796      echo 
    797      '<p>'.__('No file.').'</p>'. 
    798      sprintf($fmt_form_media,'',' hide'); // need for jsUpload to append new media 
    799 } 
    800 else 
    801 { 
    802      $pager = new dcPager($page,count($items),$nb_per_page,10); 
    803      $nbItems = count($items) - ($d ? 1 : 0); 
    804      $nbFolders = count(array_filter($items,function($i) {return ($i->d);})) - ($d ? 1 : 0); 
    805      $nbFiles = $nbItems - $nbFolders; 
    806  
    807      echo 
    808      '<form action="'.$core->adminurl->get("admin.media").'" method="get" id="filters-form">'. 
    809      '<span class="media-file-mode">'. 
    810      '<a href="'.$core->adminurl->get("admin.media",array_merge($page_url_params,array('file_mode' => 'grid'))).'" title="'.__('Grid display mode').'">'. 
    811      '<img src="images/grid-'.($file_mode == 'grid' ? 'on' : 'off').'.png" alt="'.__('Grid display mode').'" />'. 
    812      '</a>'. 
    813      '<a href="'.$core->adminurl->get("admin.media",array_merge($page_url_params,array('file_mode' => 'list'))).'" title="'.__('List display mode').'">'. 
    814      '<img src="images/list-'.($file_mode == 'list' ? 'on' : 'off').'.png" alt="'.__('List display mode').'" />'. 
    815      '</a>'. 
    816      '</span>'. 
    817      '<p class="three-boxes"><label for="file_sort" class="classic">'.__('Sort files:').'</label> '. 
    818      form::combo('file_sort',$sort_combo,$file_sort).'</p>'. 
    819      '<p class="three-boxes"><label for="nb_per_page" class="classic">'.__('Number of elements displayed per page:').'</label> '. 
    820      form::field('nb_per_page',5,3,(integer) $nb_per_page).' '. 
    821      '<input type="submit" value="'.__('OK').'" />'. 
    822      form::hidden(array('popup'),$popup). 
    823      form::hidden(array('select'),$select). 
    824      form::hidden(array('plugin_id'),$plugin_id). 
    825      form::hidden(array('post_id'),$post_id). 
    826      form::hidden(array('link_type'),$link_type). 
    827      form::hidden(array('q'),$q). 
    828      '</p>'. 
    829      '</form>'. 
    830      $pager->getLinks(); 
    831  
    832      if ($file_mode == 'list') { 
    833           $table = 
    834           '<div class="table-outer">'. 
    835           '<table>'. 
    836           '<caption class="hidden">'.__('Media list').'</caption>'. 
    837           '<tr>'. 
    838           '<th colspan="2" class="first">'.__('Name').'</th>'. 
    839           '<th scope="col">'.__('Date').'</th>'. 
    840           '<th scope="col">'.__('Size').'</th>'. 
    841           '</tr>'; 
    842  
    843           $dlist = ''; 
    844           $flist = ''; 
    845           for ($i=$pager->index_start, $j=0; $i<=$pager->index_end; $i++,$j++) 
    846           { 
    847                if ($items[$i]->d) { 
    848                     $dlist .= $mediaItemLine($items[$i],$j,$query,true); 
    849                } else { 
    850                     $flist .= $mediaItemLine($items[$i],$j,$query,true); 
    851                } 
    852           } 
    853           $table .= $dlist.$flist; 
    854  
    855           $table .= 
    856           '</table></div>'; 
    857           echo sprintf($fmt_form_media,$table,''); 
    858      } else { 
    859           $dgroup = ''; 
    860           $fgroup = ''; 
    861           for ($i=$pager->index_start, $j=0; $i<=$pager->index_end; $i++,$j++) 
    862           { 
    863                if ($items[$i]->d) { 
    864                     $dgroup .= $mediaItemLine($items[$i],$j,$query); 
    865                } else { 
    866                     $fgroup .= $mediaItemLine($items[$i],$j,$query); 
    867                } 
    868           } 
    869           echo 
    870           ($dgroup != '' ? '<div class="folders-group">'.$dgroup.'</div>' : ''). 
    871           sprintf($fmt_form_media,$fgroup,''); 
    872      } 
    873  
    874      echo $pager->getLinks(); 
    875  
    876      // Statistics 
    877      echo '<div class="media-stats"><p class="form-stats">'. 
    878           ($nbFiles && $nbFolders ? 
    879                sprintf(__('Nb of items: %d → %d folder(s) + %d file(s)'),$nbItems,$nbFolders,$nbFiles) : 
    880                sprintf(__('Nb of items: %d'),$nbItems)). 
    881           '</p></div>'; 
     777'<form action="' . $core->adminurl->get("admin.media") . '" method="get" id="search-form">' . 
     778'<p><label for="search" class="classic">' . __('Search:') . '</label> ' . 
     779form::field('q', 20, 255, $q) . ' ' . 
     780'<input type="submit" value="' . __('OK') . '" />' . ' ' . 
     781'<span class="form-note">' . __('Will search into media filename (including path), title and description') . '</span>' . 
     782form::hidden(array('popup'), $popup) . 
     783form::hidden(array('select'), $select) . 
     784form::hidden(array('plugin_id'), $plugin_id) . 
     785form::hidden(array('post_id'), $post_id) . 
     786form::hidden(array('link_type'), $link_type) . 
     787    '</p>' . 
     788    '</form>'; 
     789 
     790if (count($items) == 0) { 
     791    echo 
     792    '<p>' . __('No file.') . '</p>' . 
     793    sprintf($fmt_form_media, '', ' hide'); // need for jsUpload to append new media 
     794} else { 
     795    $pager     = new dcPager($page, count($items), $nb_per_page, 10); 
     796    $nbItems   = count($items) - ($d ? 1 : 0); 
     797    $nbFolders = count(array_filter($items, function ($i) {return ($i->d);})) - ($d ? 1 : 0); 
     798    $nbFiles = $nbItems - $nbFolders; 
     799 
     800    echo 
     801    '<form action="' . $core->adminurl->get("admin.media") . '" method="get" id="filters-form">' . 
     802    '<span class="media-file-mode">' . 
     803    '<a href="' . $core->adminurl->get("admin.media", array_merge($page_url_params, array('file_mode' => 'grid'))) . '" title="' . __('Grid display mode') . '">' . 
     804    '<img src="images/grid-' . ($file_mode == 'grid' ? 'on' : 'off') . '.png" alt="' . __('Grid display mode') . '" />' . 
     805    '</a>' . 
     806    '<a href="' . $core->adminurl->get("admin.media", array_merge($page_url_params, array('file_mode' => 'list'))) . '" title="' . __('List display mode') . '">' . 
     807    '<img src="images/list-' . ($file_mode == 'list' ? 'on' : 'off') . '.png" alt="' . __('List display mode') . '" />' . 
     808    '</a>' . 
     809    '</span>' . 
     810    '<p class="three-boxes"><label for="file_sort" class="classic">' . __('Sort files:') . '</label> ' . 
     811    form::combo('file_sort', $sort_combo, $file_sort) . '</p>' . 
     812    '<p class="three-boxes"><label for="nb_per_page" class="classic">' . __('Number of elements displayed per page:') . '</label> ' . 
     813    form::field('nb_per_page', 5, 3, (integer) $nb_per_page) . ' ' . 
     814    '<input type="submit" value="' . __('OK') . '" />' . 
     815    form::hidden(array('popup'), $popup) . 
     816    form::hidden(array('select'), $select) . 
     817    form::hidden(array('plugin_id'), $plugin_id) . 
     818    form::hidden(array('post_id'), $post_id) . 
     819    form::hidden(array('link_type'), $link_type) . 
     820    form::hidden(array('q'), $q) . 
     821    '</p>' . 
     822    '</form>' . 
     823    $pager->getLinks(); 
     824 
     825    if ($file_mode == 'list') { 
     826        $table = 
     827        '<div class="table-outer">' . 
     828        '<table>' . 
     829        '<caption class="hidden">' . __('Media list') . '</caption>' . 
     830        '<tr>' . 
     831        '<th colspan="2" class="first">' . __('Name') . '</th>' . 
     832        '<th scope="col">' . __('Date') . '</th>' . 
     833        '<th scope="col">' . __('Size') . '</th>' . 
     834            '</tr>'; 
     835 
     836        $dlist = ''; 
     837        $flist = ''; 
     838        for ($i = $pager->index_start, $j = 0; $i <= $pager->index_end; $i++, $j++) { 
     839            if ($items[$i]->d) { 
     840                $dlist .= $mediaItemLine($items[$i], $j, $query, true); 
     841            } else { 
     842                $flist .= $mediaItemLine($items[$i], $j, $query, true); 
     843            } 
     844        } 
     845        $table .= $dlist . $flist; 
     846 
     847        $table .= 
     848            '</table></div>'; 
     849        echo sprintf($fmt_form_media, $table, ''); 
     850    } else { 
     851        $dgroup = ''; 
     852        $fgroup = ''; 
     853        for ($i = $pager->index_start, $j = 0; $i <= $pager->index_end; $i++, $j++) { 
     854            if ($items[$i]->d) { 
     855                $dgroup .= $mediaItemLine($items[$i], $j, $query); 
     856            } else { 
     857                $fgroup .= $mediaItemLine($items[$i], $j, $query); 
     858            } 
     859        } 
     860        echo 
     861        ($dgroup != '' ? '<div class="folders-group">' . $dgroup . '</div>' : '') . 
     862        sprintf($fmt_form_media, $fgroup, ''); 
     863    } 
     864 
     865    echo $pager->getLinks(); 
     866 
     867    // Statistics 
     868    echo '<div class="media-stats"><p class="form-stats">' . 
     869        ($nbFiles && $nbFolders ? 
     870        sprintf(__('Nb of items: %d → %d folder(s) + %d file(s)'), $nbItems, $nbFolders, $nbFiles) : 
     871        sprintf(__('Nb of items: %d'), $nbItems)) . 
     872        '</p></div>'; 
    882873} 
    883874if (!isset($pager)) { 
    884      echo 
    885      '<p class="clear"></p>'; 
     875    echo 
     876        '<p class="clear"></p>'; 
    886877} 
    887878echo 
    888 '</div>'; 
    889  
    890 $core_media_archivable = $core->auth->check('media_admin',$core->blog->id) && 
    891      !(count($items) == 0 || (count($items) == 1 && $items[0]->parent)); 
     879    '</div>'; 
     880 
     881$core_media_archivable = $core->auth->check('media_admin', $core->blog->id) && 
     882!(count($items) == 0 || (count($items) == 1 && $items[0]->parent)); 
    892883 
    893884if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    894      echo 
    895      '<div class="vertical-separator">'. 
    896      '<h3 class="out-of-screen-if-js">'.sprintf(__('In %s:'),($d == '' ? '“'.__('Media manager').'”' : '“'.$d.'”')).'</h3>'; 
     885    echo 
     886    '<div class="vertical-separator">' . 
     887    '<h3 class="out-of-screen-if-js">' . sprintf(__('In %s:'), ($d == '' ? '“' . __('Media manager') . '”' : '“' . $d . '”')) . '</h3>'; 
    897888} 
    898889 
    899890if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    900      echo 
    901      '<div class="two-boxes odd">'; 
    902  
    903      # Create directory 
    904      if ($core_media_writable) 
    905      { 
    906           echo 
    907           '<form action="'.$core->adminurl->getBase('admin.media').'" method="post" class="fieldset">'. 
    908           '<div id="new-dir-f">'. 
    909           '<h4 class="pretty-title">'.__('Create new directory').'</h4>'. 
    910           $core->formNonce(). 
    911           '<p><label for="newdir">'.__('Directory Name:').'</label>'. 
    912           form::field(array('newdir','newdir'),35,255).'</p>'. 
    913           '<p><input type="submit" value="'.__('Create').'" />'. 
    914           $core->adminurl->getHiddenFormFields('admin.media',$page_url_params). 
    915           '</p>'. 
    916           '</div>'. 
    917           '</form>'; 
    918      } 
    919  
    920      # Get zip directory 
    921      if ($core_media_archivable && !$popup) 
    922      { 
    923           echo 
    924           '<div class="fieldset">'. 
    925           '<h4 class="pretty-title">'.sprintf(__('Backup content of %s'),($d == '' ? '“'.__('Media manager').'”' : '“'.$d.'”')).'</h4>'. 
    926           '<p><a class="button submit" href="'.$core->adminurl->get('admin.media', 
    927                array_merge($page_url_params,array('zipdl' => 1))).'">'.__('Download zip file').'</a></p>'. 
    928           '</div>'; 
    929      } 
    930  
    931      echo 
    932      '</div>'; 
    933 } 
    934  
    935 if (!$query && $core_media_writable) 
    936 { 
    937      echo 
    938      '<div class="two-boxes fieldset even">'; 
    939      if ($user_ui_enhanceduploader) { 
    940           echo 
    941           '<div class="enhanced_uploader">'; 
    942      } else { 
    943           echo 
    944           '<div>'; 
    945      } 
    946  
    947      echo 
    948      '<h4>'.__('Add files').'</h4>'. 
    949      '<p class="more-info">'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'. 
    950      '<form id="fileupload" action="'.html::escapeURL($core->adminurl->get('admin.media',$page_url_params)).'" method="post" enctype="multipart/form-data" aria-disabled="false">'. 
    951      '<p>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE). 
    952      $core->formNonce().'</p>'. 
    953      '<div class="fileupload-ctrl"><p class="queue-message"></p><ul class="files"></ul></div>'; 
    954  
    955      echo 
    956      '<div class="fileupload-buttonbar clear">'; 
    957  
    958      echo 
    959      '<p><label for="upfile">'.'<span class="add-label one-file">'.__('Choose file').'</span>'.'</label>'. 
    960      '<button class="button choose_files">'.__('Choose files').'</button>'. 
    961      '<input type="file" id="upfile" name="upfile[]"'.($user_ui_enhanceduploader?' multiple="mutiple"':'').' data-url="'.html::escapeURL($core->adminurl->get('admin.media',$page_url_params)).'" /></p>'; 
    962  
    963      echo 
    964      '<p class="max-sizer form-note">&nbsp;'.__('Maximum file size allowed:').' '.files::size(DC_MAX_UPLOAD_SIZE).'</p>'; 
    965  
    966      echo 
    967      '<p class="one-file"><label for="upfiletitle">'.__('Title:').'</label>'.form::field(array('upfiletitle','upfiletitle'),35,255).'</p>'. 
    968      '<p class="one-file"><label for="upfilepriv" class="classic">'.__('Private').'</label> '. 
    969      form::checkbox(array('upfilepriv','upfilepriv'),1).'</p>'; 
    970  
    971      if (!$user_ui_enhanceduploader) { 
    972           echo 
    973           '<p class="one-file form-help info">'.__('To send several files at the same time, you can activate the enhanced uploader in'). 
    974           ' <a href="'.$core->adminurl->get("admin.user.preferences",array('tab' => 'user-options')).'">'.__('My preferences').'</a></p>'; 
    975      } 
    976  
    977      echo 
    978      '<p class="clear"><button class="button clean">'.__('Refresh').'</button>'. 
    979      '<input class="button cancel one-file" type="reset" value="'.__('Clear all').'"/>'. 
    980      '<input class="button start" type="submit" value="'.__('Upload').'"/></p>'. 
    981      '</div>'; 
    982  
    983      echo 
    984      '<p style="clear:both;">'. 
    985      form::hidden(array('d'),$d). 
    986      form::hidden(array('q'),$q). 
    987      form::hidden(array('popup'),$popup). 
    988      form::hidden(array('select'),$select). 
    989      form::hidden(array('plugin_id'),$plugin_id). 
    990      form::hidden(array('post_id'),$post_id). 
    991      form::hidden(array('link_type'),$link_type). 
    992      '</p>'. 
    993      '</form>'. 
    994      '</div>'. 
    995      '</div>'; 
     891    echo 
     892        '<div class="two-boxes odd">'; 
     893 
     894    # Create directory 
     895    if ($core_media_writable) { 
     896        echo 
     897        '<form action="' . $core->adminurl->getBase('admin.media') . '" method="post" class="fieldset">' . 
     898        '<div id="new-dir-f">' . 
     899        '<h4 class="pretty-title">' . __('Create new directory') . '</h4>' . 
     900        $core->formNonce() . 
     901        '<p><label for="newdir">' . __('Directory Name:') . '</label>' . 
     902        form::field(array('newdir', 'newdir'), 35, 255) . '</p>' . 
     903        '<p><input type="submit" value="' . __('Create') . '" />' . 
     904        $core->adminurl->getHiddenFormFields('admin.media', $page_url_params) . 
     905            '</p>' . 
     906            '</div>' . 
     907            '</form>'; 
     908    } 
     909 
     910    # Get zip directory 
     911    if ($core_media_archivable && !$popup) { 
     912        echo 
     913        '<div class="fieldset">' . 
     914        '<h4 class="pretty-title">' . sprintf(__('Backup content of %s'), ($d == '' ? '“' . __('Media manager') . '”' : '“' . $d . '”')) . '</h4>' . 
     915        '<p><a class="button submit" href="' . $core->adminurl->get('admin.media', 
     916            array_merge($page_url_params, array('zipdl' => 1))) . '">' . __('Download zip file') . '</a></p>' . 
     917            '</div>'; 
     918    } 
     919 
     920    echo 
     921        '</div>'; 
     922} 
     923 
     924if (!$query && $core_media_writable) { 
     925    echo 
     926        '<div class="two-boxes fieldset even">'; 
     927    if ($user_ui_enhanceduploader) { 
     928        echo 
     929            '<div class="enhanced_uploader">'; 
     930    } else { 
     931        echo 
     932            '<div>'; 
     933    } 
     934 
     935    echo 
     936    '<h4>' . __('Add files') . '</h4>' . 
     937    '<p class="more-info">' . __('Please take care to publish media that you own and that are not protected by copyright.') . '</p>' . 
     938    '<form id="fileupload" action="' . html::escapeURL($core->adminurl->get('admin.media', $page_url_params)) . '" method="post" enctype="multipart/form-data" aria-disabled="false">' . 
     939    '<p>' . form::hidden(array('MAX_FILE_SIZE'), DC_MAX_UPLOAD_SIZE) . 
     940    $core->formNonce() . '</p>' . 
     941        '<div class="fileupload-ctrl"><p class="queue-message"></p><ul class="files"></ul></div>'; 
     942 
     943    echo 
     944        '<div class="fileupload-buttonbar clear">'; 
     945 
     946    echo 
     947    '<p><label for="upfile">' . '<span class="add-label one-file">' . __('Choose file') . '</span>' . '</label>' . 
     948    '<button class="button choose_files">' . __('Choose files') . '</button>' . 
     949    '<input type="file" id="upfile" name="upfile[]"' . ($user_ui_enhanceduploader ? ' multiple="mutiple"' : '') . ' data-url="' . html::escapeURL($core->adminurl->get('admin.media', $page_url_params)) . '" /></p>'; 
     950 
     951    echo 
     952    '<p class="max-sizer form-note">&nbsp;' . __('Maximum file size allowed:') . ' ' . files::size(DC_MAX_UPLOAD_SIZE) . '</p>'; 
     953 
     954    echo 
     955    '<p class="one-file"><label for="upfiletitle">' . __('Title:') . '</label>' . form::field(array('upfiletitle', 'upfiletitle'), 35, 255) . '</p>' . 
     956    '<p class="one-file"><label for="upfilepriv" class="classic">' . __('Private') . '</label> ' . 
     957    form::checkbox(array('upfilepriv', 'upfilepriv'), 1) . '</p>'; 
     958 
     959    if (!$user_ui_enhanceduploader) { 
     960        echo 
     961        '<p class="one-file form-help info">' . __('To send several files at the same time, you can activate the enhanced uploader in') . 
     962        ' <a href="' . $core->adminurl->get("admin.user.preferences", array('tab' => 'user-options')) . '">' . __('My preferences') . '</a></p>'; 
     963    } 
     964 
     965    echo 
     966    '<p class="clear"><button class="button clean">' . __('Refresh') . '</button>' . 
     967    '<input class="button cancel one-file" type="reset" value="' . __('Clear all') . '"/>' . 
     968    '<input class="button start" type="submit" value="' . __('Upload') . '"/></p>' . 
     969        '</div>'; 
     970 
     971    echo 
     972    '<p style="clear:both;">' . 
     973    form::hidden(array('d'), $d) . 
     974    form::hidden(array('q'), $q) . 
     975    form::hidden(array('popup'), $popup) . 
     976    form::hidden(array('select'), $select) . 
     977    form::hidden(array('plugin_id'), $plugin_id) . 
     978    form::hidden(array('post_id'), $post_id) . 
     979    form::hidden(array('link_type'), $link_type) . 
     980        '</p>' . 
     981        '</form>' . 
     982        '</div>' . 
     983        '</div>'; 
    996984} 
    997985 
    998986# Empty remove form (for javascript actions) 
    999987echo 
    1000 '<form id="media-remove-hide" action="'.html::escapeURL($core->adminurl->get('admin.media',$page_url_params)).'" method="post" class="hidden">'. 
    1001 '<div>'. 
    1002 form::hidden('rmyes',1). 
    1003 form::hidden('d',html::escapeHTML($d)). 
    1004 form::hidden(array('q'),$q). 
    1005 form::hidden(array('popup'),$popup). 
    1006 form::hidden(array('select'),$select). 
    1007 form::hidden(array('plugin_id'),$plugin_id). 
    1008 form::hidden(array('post_id'),$post_id). 
    1009 form::hidden(array('link_type'),$link_type). 
    1010 form::hidden('remove',''). 
    1011 $core->formNonce(). 
    1012 '</div>'. 
    1013 '</form>'; 
     988'<form id="media-remove-hide" action="' . html::escapeURL($core->adminurl->get('admin.media', $page_url_params)) . '" method="post" class="hidden">' . 
     989'<div>' . 
     990form::hidden('rmyes', 1) . 
     991form::hidden('d', html::escapeHTML($d)) . 
     992form::hidden(array('q'), $q) . 
     993form::hidden(array('popup'), $popup) . 
     994form::hidden(array('select'), $select) . 
     995form::hidden(array('plugin_id'), $plugin_id) . 
     996form::hidden(array('post_id'), $post_id) . 
     997form::hidden(array('link_type'), $link_type) . 
     998form::hidden('remove', '') . 
     999$core->formNonce() . 
     1000    '</div>' . 
     1001    '</form>'; 
    10141002 
    10151003if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    1016      echo 
    1017      '</div>'; 
     1004    echo 
     1005        '</div>'; 
    10181006} 
    10191007 
    10201008if (!$popup) { 
    1021      echo '<div class="info"><p>'.sprintf(__('Current settings for medias and images are defined in %s'), 
    1022      '<a href="'.$core->adminurl->get("admin.blog.pref").'#medias-settings">'.__('Blog parameters').'</a>').'</p></div>'; 
     1009    echo '<div class="info"><p>' . sprintf(__('Current settings for medias and images are defined in %s'), 
     1010        '<a href="' . $core->adminurl->get("admin.blog.pref") . '#medias-settings">' . __('Blog parameters') . '</a>') . '</p></div>'; 
    10231011} 
    10241012 
Note: See TracChangeset for help on using the changeset viewer.

Sites map