Dotclear

source: admin/media.php @ 256:2f437b678a6f

Revision 256:2f437b678a6f, 13.4 KB checked in by amalgame <philippe@…>, 13 years ago (diff)

ajout du lien vers les préférences dans media.php

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13/* Upload backend
14-------------------------------------------------------- */
15if (!empty($_POST['swfupload']))
16{
17     header('content-type: text/plain');
18     try
19     {
20          if (empty($_POST['sess_id']) || empty($_POST['sess_uid'])) {
21               throw new Exception('No credentials.');
22          }
23          define('DC_AUTH_SESS_ID',$_POST['sess_id']);
24          define('DC_AUTH_SESS_UID',$_POST['sess_uid']);
25         
26          require dirname(__FILE__).'/../inc/admin/prepend.php';
27         
28          if (!$core->auth->check('media,media_admin',$core->blog->id)) {
29               throw new Exception('Permission denied.');
30          }
31         
32          $d = isset($_POST['d']) ? $_POST['d'] : null;
33          $core->media = new dcMedia($core);
34          $core->media->chdir($d);
35          $core->media->getDir();
36          $dir =& $core->media->dir;
37         
38          if (empty($_FILES['Filedata'])) {
39               throw new Exception('No file to upload.');
40          }
41         
42          files::uploadStatus($_FILES['Filedata']);
43          $core->media->uploadFile($_FILES['Filedata']['tmp_name'],$_FILES['Filedata']['name']);
44         
45          echo 'ok';
46     }
47     catch (Exception $e) {
48          echo __('Error:').' '.__($e->getMessage());
49     }
50     exit;
51}
52
53
54/* HTML page
55-------------------------------------------------------- */
56require dirname(__FILE__).'/../inc/admin/prepend.php';
57
58dcPage::check('media,media_admin');
59
60$post_id = !empty($_GET['post_id']) ? (integer) $_GET['post_id'] : null;
61if ($post_id) {
62     $post = $core->blog->getPosts(array('post_id'=>$post_id,'post_type'=>''));
63     if ($post->isEmpty()) {
64          $post_id = null;
65     }
66     $post_title = $post->post_title;
67     $post_type = $post->post_type;
68     unset($post);
69}
70
71$d = isset($_REQUEST['d']) ? $_REQUEST['d'] : null;
72$dir = null;
73
74$page = !empty($_GET['page']) ? $_GET['page'] : 1;
75$nb_per_page =  30;
76
77# We are on home not comming from media manager
78if ($d === null && isset($_SESSION['media_manager_dir'])) {
79     # We get session information
80     $d = $_SESSION['media_manager_dir'];
81}
82
83if (!isset($_GET['page']) && isset($_SESSION['media_manager_page'])) {
84     $page = $_SESSION['media_manager_page'];
85}
86
87# We set session information about directory and page
88if ($d) {
89     $_SESSION['media_manager_dir'] = $d;
90} else {
91     unset($_SESSION['media_manager_dir']);
92}
93if ($page != 1) {
94     $_SESSION['media_manager_page'] = $page;
95} else {
96     unset($_SESSION['media_manager_page']);
97}
98
99# Sort combo
100$sort_combo = array(
101     __('By names, in ascending order') => 'name-asc',
102     __('By names, in descending order') => 'name-desc',
103     __('By dates, in ascending order') => 'date-asc',
104     __('By dates, in descending order') => 'date-desc'
105);
106
107if (!empty($_GET['file_sort']) && in_array($_GET['file_sort'],$sort_combo)) {
108     $_SESSION['media_file_sort'] = $_GET['file_sort'];
109}
110$file_sort = !empty($_SESSION['media_file_sort']) ? $_SESSION['media_file_sort'] : null;
111
112$popup = (integer) !empty($_GET['popup']);
113
114$page_url = 'media.php?popup='.$popup.'&post_id='.$post_id;
115
116if ($popup) {
117     $open_f = array('dcPage','openPopup');
118     $close_f = array('dcPage','closePopup');
119} else {
120     $open_f = array('dcPage','open');
121     $close_f = create_function('',"dcPage::helpBlock('core_media'); dcPage::close();");
122}
123
124$core_media_writable = false;
125try {
126     $core->media = new dcMedia($core);
127     if ($file_sort) {
128          $core->media->setFileSort($file_sort);
129     }
130     $core->media->chdir($d);
131     $core->media->getDir();
132     $core_media_writable = $core->media->writable();
133     $dir =& $core->media->dir;
134     if  (!$core_media_writable) {
135          throw new Exception('you do not have sufficient permissions to write to this folder: ');
136     }
137} catch (Exception $e) {
138     $core->error->add($e->getMessage());
139}
140
141# Zip download
142if (!empty($_GET['zipdl']) && $core->auth->check('media_admin',$core->blog->id))
143{
144     try
145     {
146          @set_time_limit(300);
147          $fp = fopen('php://output','wb');
148          $zip = new fileZip($fp);
149          $zip->addExclusion('#(^|/).(.*?)_(m|s|sq|t).jpg$#');
150          $zip->addDirectory($core->media->root.'/'.$d,'',true);
151         
152          header('Content-Disposition: attachment;filename='.($d ? $d : 'media').'.zip');
153          header('Content-Type: application/x-zip');
154          $zip->write();
155          unset($zip);
156          exit;
157     }
158     catch (Exception $e)
159     {
160          $core->error->add($e->getMessage());
161     }
162}
163
164# New directory
165if ($dir && !empty($_POST['newdir']))
166{
167     try {
168          $core->media->makeDir($_POST['newdir']);
169          http::redirect($page_url.'&d='.rawurlencode($d).'&mkdok=1');
170     } catch (Exception $e) {
171          $core->error->add($e->getMessage());
172     }
173}
174
175# Adding a file
176if ($dir && !empty($_FILES['upfile']))
177{
178     try
179     {
180          files::uploadStatus($_FILES['upfile']);
181         
182          $f_title = (isset($_POST['upfiletitle']) ? $_POST['upfiletitle'] : '');
183          $f_private = (isset($_POST['upfilepriv']) ? $_POST['upfilepriv'] : false);
184         
185          $core->media->uploadFile($_FILES['upfile']['tmp_name'],$_FILES['upfile']['name'],$f_title,$f_private);
186          http::redirect($page_url.'&d='.rawurlencode($d).'&upok=1');
187     }
188     catch (Exception $e)
189     {
190          $core->error->add($e->getMessage());
191     }
192}
193
194
195# Removing item
196if ($dir && !empty($_POST['rmyes']) && !empty($_POST['remove']))
197{
198     $_POST['remove'] = rawurldecode($_POST['remove']);
199     
200     try {
201          $core->media->removeItem($_POST['remove']);
202          http::redirect($page_url.'&d='.rawurlencode($d).'&rmfok=1');
203     } catch (Exception $e) {
204          $core->error->add($e->getMessage());
205     }
206}
207
208# Rebuild directory
209if ($dir && $core->auth->isSuperAdmin() && !empty($_POST['rebuild']))
210{
211     try {
212          $core->media->rebuild($d);
213          http::redirect($page_url.'&d='.rawurlencode($d).'&rebuildok=1');
214     } catch (Exception $e) {
215          $core->error->add($e->getMessage());
216     }
217}
218
219
220# DISPLAY confirm page for rmdir & rmfile
221if ($dir && !empty($_GET['remove']))
222{
223     call_user_func($open_f,__('Media manager'));
224     
225     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Media manager').' &rsaquo; '.__('confirm removal').'</h2>';
226     
227     echo
228     '<form action="'.html::escapeURL($page_url).'" method="post">'.
229     '<p>'.sprintf(__('Are you sure you want to remove %s?'),
230     html::escapeHTML($_GET['remove'])).'</p>'.
231     '<p><input type="submit" value="'.__('cancel').'" /> '.
232     ' &nbsp; <input type="submit" name="rmyes" value="'.__('yes').'" />'.
233     form::hidden('d',$d).
234     $core->formNonce().
235     form::hidden('remove',html::escapeHTML($_GET['remove'])).'</p>'.
236     '</form>';
237     
238     call_user_func($close_f);
239     exit;
240}
241
242/* DISPLAY Main page
243-------------------------------------------------------- */
244$core->auth->user_prefs->addWorkspace('interface');
245$user_ui_enhanceduploader = $core->auth->user_prefs->interface->enhanceduploader;
246
247call_user_func($open_f,__('Media manager'),
248     '<script type="text/javascript">'."\n".
249     "//<![CDATA["."\n".
250     dcPage::jsVar('dotclear.candyUpload_force_init',$user_ui_enhanceduploader)."\n".
251     "//]]>".
252     "</script>".
253     dcPage::jsLoad('js/_media.js').
254     (($user_ui_enhanceduploader && $core_media_writable) ? dcPage::jsCandyUpload(array('d='.$d)) : '')
255     );
256
257if (!empty($_GET['mkdok'])) {
258     echo '<p class="message">'.__('Directory has been successfully created.').'</p>';
259}
260
261if (!empty($_GET['upok'])) {
262     echo '<p class="message">'.__('Files have been successfully uploaded.').'</p>';
263}
264
265if (!empty($_GET['rmfok'])) {
266     echo '<p class="message">'.__('File has been successfully removed.').'</p>';
267}
268
269if (!empty($_GET['rmdok'])) {
270     echo '<p class="message">'.__('Directory has been successfully removed.').'</p>';
271}
272
273if (!empty($_GET['rebuildok'])) {
274     echo '<p class="message">'.__('Directory has been successfully rebuilt.').'</p>';
275}
276
277if (!empty($_GET['unzipok'])) {
278     echo '<p class="message">'.__('Zip file has been successfully extracted.').'</p>';
279}
280
281echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.html::escapeURL($page_url.'&d=').'">'.__('Media manager').'</a>'.
282' / '.(isset($core->media) ? $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s') : '').'</h2>';
283
284if (!$dir) {
285     call_user_func($close_f);
286     exit;
287}
288
289if ($post_id) {
290     echo '<p><strong>'.sprintf(__('Choose a file to attach to entry %s by clicking on %s.'),
291     '<a href="'.$core->getPostAdminURL($post_type,$post_id).'">'.html::escapeHTML($post_title).'</a>',
292     '<img src="images/plus.png" alt="'.__('Attach this file to entry').'" />').'</strong></p>';
293}
294if ($popup) {
295     echo '<p><strong>'.sprintf(__('Choose a file to insert into entry by clicking on %s.'),
296     '<img src="images/plus.png" alt="'.__('Attach this file to entry').'" />').'</strong></p>';
297}
298
299
300$items = array_values(array_merge($dir['dirs'],$dir['files']));
301if (count($items) == 0)
302{
303     echo '<p><strong>'.__('No file.').'</strong></p>';
304}
305else
306{
307     $pager = new pager($page,count($items),$nb_per_page,10);
308     $pager->html_prev = __($pager->html_prev);
309     $pager->html_next = __($pager->html_next);
310     
311     echo
312     '<form action="media.php" method="get">'.
313     '<p><label for="file_sort" class="classic">'.__('Sort files:').' '.
314     form::combo('file_sort',$sort_combo,$file_sort).'</label>'.
315     form::hidden(array('popup'),$popup).
316     form::hidden(array('post_id'),$post_id).
317     '<input type="submit" value="'.__('ok').'" /></p>'.
318     '</form>'.
319     
320     '<div class="media-list">'.
321     '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>';
322     
323     for ($i=$pager->index_start, $j=0; $i<=$pager->index_end; $i++, $j++)
324     {
325          echo mediaItemLine($items[$i],$j);
326     }
327     
328     echo
329     '<p class="clear">'.__('Page(s)').' : '.$pager->getLinks().'</p>'.
330     '</div>';
331}
332
333if ($core_media_writable)
334{
335     echo '<div class="two-cols">';
336     
337     echo
338     '<div class="col"><h3 id="add-file">'.__('Add files').'</h3>'.
339     '<p>'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'.
340     '<form id="media-upload" class="clear" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data">'.
341     '<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
342     $core->formNonce().'</div>'.
343     '<fieldset id="add-file-f">'.
344     '<p><label for="upfile">'.__('Choose a file:').
345     ' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.
346     '<input type="file" id="upfile" name="upfile" size="20" />'.
347     '</label></p>'.
348     '<p><label for="upfiletitle">'.__('Title:').form::field(array('upfiletitle','upfiletitle'),35,255).'</label></p>'.
349     '<p><label for="upfilepriv" class="classic">'.form::checkbox(array('upfilepriv','upfilepriv'),1).' '.
350     __('Private').'</label></p>'.
351     '<p class="form-help info">'.__('To send several files at the same time, you can activate the enhanced uploader in').
352     '<a href="preferences.php?tab=user-options"> '.__('My preferences').'</a></p>'.
353     '<p><input type="submit" value="'.__('send').'" />'.
354     form::hidden(array('d'),$d).'</p>'.
355     '</fieldset>'.
356     '</form>'.
357     '</div>';
358     
359     echo
360     '<div class="col"><h3 id="new-dir">'.__('New directory').'</h3>'.
361     '<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
362     '<fieldset id="new-dir-f">'.
363     $core->formNonce().
364     '<p><label for="newdir">'.__('Directory Name:').
365     form::field(array('newdir','newdir'),35,255).'</label></p>'.
366     '<p><input type="submit" value="'.__('Save').'" />'.
367     form::hidden(array('d'),html::escapeHTML($d)).'</p>'.
368     '</fieldset>'.
369     '</form></div>';
370     
371     echo '</div>';
372}
373
374# Empty remove form (for javascript actions)
375echo
376'<form id="media-remove-hide" action="'.html::escapeURL($page_url).'" method="post"><div class="clear">'.
377form::hidden('rmyes',1).form::hidden('d',html::escapeHTML($d)).
378form::hidden('remove','').
379$core->formNonce().
380'</div></form>';
381
382# Get zip directory
383if ($core->auth->check('media_admin',$core->blog->id) && 
384     !(count($items) == 0 || (count($items) == 1 && $items[0]->parent)))
385{
386     echo
387     '<p class="zip-dl"><a href="'.html::escapeURL($page_url).'&amp;zipdl=1">'.
388     __('Download this directory as a zip file').'</a></p>';
389}
390
391call_user_func($close_f);
392
393/* ----------------------------------------------------- */
394function mediaItemLine($f,$i)
395{
396     global $core, $page_url, $popup, $post_id;
397     
398     $fname = $f->basename;
399     
400     if ($f->d) {
401          $link = html::escapeURL($page_url).'&amp;d='.html::sanitizeURL($f->relname);
402          if ($f->parent) {
403               $fname = '..';
404          }
405     } else {
406          $link =
407          'media_item.php?id='.$f->media_id.'&amp;popup='.$popup.'&amp;post_id='.$post_id;
408     }
409     
410     $class = 'media-item media-col-'.($i%2);
411     
412     $res =
413     '<div class="'.$class.'"><a class="media-icon media-link" href="'.$link.'">'.
414     '<img src="'.$f->media_icon.'" alt="" /></a>'.
415     '<ul>'.
416     '<li><a class="media-link" href="'.$link.'">'.$fname.'</a></li>';
417     
418     if (!$f->d) {
419          $res .=
420          '<li>'.$f->media_title.'</li>'.
421          '<li>'.
422          $f->media_dtstr.' - '.
423          files::size($f->size).' - '.
424          '<a href="'.$f->file_url.'">'.__('open').'</a>'.
425          '</li>';
426     }
427     
428     $res .= '<li class="media-action">&nbsp;';
429     
430     if ($post_id && !$f->d) {
431          $res .= '<form action="post_media.php" method="post">'.
432          '<input type="image" src="images/plus.png" alt="'.__('Attach this file to entry').'" '.
433          'title="'.__('Attach this file to entry').'" /> '.
434          form::hidden('media_id',$f->media_id).
435          form::hidden('post_id',$post_id).
436          form::hidden('attach',1).
437          $core->formNonce().
438          '</form>';
439     }
440     
441     if ($popup && !$f->d) {
442          $res .= '<a href="'.$link.'"><img src="images/plus.png" alt="'.__('Insert this file into entry').'" '.
443          'title="'.__('Insert this file into entry').'" /></a> ';
444     }
445     
446     if ($f->del) {
447          $res .= '<a class="media-remove" '.
448          'href="'.html::escapeURL($page_url).'&amp;d='.
449          rawurlencode($GLOBALS['d']).'&amp;remove='.rawurlencode($f->basename).'">'.
450          '<img src="images/trash.png" alt="'.__('delete').'" title="'.__('delete').'" /></a>';
451     }
452     
453     $res .= '</li>';
454     
455     if ($f->type == 'audio/mpeg3') {
456          $res .= '<li>'.dcMedia::mp3player($f->file_url,'index.php?pf=player_mp3.swf').'</li>';
457     }
458     
459     $res .= '</ul></div>';
460     
461     return $res;
462}
463?>
Note: See TracBrowser for help on using the repository browser.

Sites map