source: extensions/url_uploader/admin.php @ 24085

Last change on this file since 24085 was 20407, checked in by mistic100, 12 years ago

option to save website URL in photo description

File size: 6.6 KB
Line 
1<?php
2defined('URLUPLOADER_PATH') or die('Hacking attempt!');
3 
4global $template, $page, $conf;
5
6load_language('plugin.lang', URLUPLOADER_PATH);
7
8// +-----------------------------------------------------------------------+
9// | URL Uploader tab                                                      |
10// +-----------------------------------------------------------------------+
11define('PHOTOS_ADD_BASE_URL', get_root_url().'admin.php?page=photos_add');
12
13include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
14include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
15include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
16
17$allowed_extensions = array('jpg','jpeg','png','gif');
18$allowed_mimes = array('image/jpeg', 'image/png', 'image/gif');
19
20$tabsheet = new tabsheet();
21$tabsheet->set_id('photos_add');
22$tabsheet->select('url_uploader');
23$tabsheet->assign();
24
25
26// +-----------------------------------------------------------------------+
27// |                             process form                              |
28// +-----------------------------------------------------------------------+
29if (isset($_GET['processed']))
30{
31  $category_id = $_POST['category'];
32  $image_ids = array();
33  $page['thumbnails'] = array();
34 
35  // SINGLE UPLOAD
36  if ($_GET['upload_mode'] == 'single')
37  {
38    $_POST = array_map('trim', $_POST);
39   
40    // check empty url
41    if (empty($_POST['file_url']))
42    {
43      $page['errors'][] = l10n('File URL is empty');
44    }
45    // check remote url
46    else if (!url_is_remote($_POST['file_url']))
47    {
48      $page['errors'][] = l10n('Invalid file URL');
49    }
50    // check file extension
51    else if (!in_array(strtolower(get_extension($_POST['file_url'])), $allowed_extensions))
52    {
53      $page['errors'][] = l10n('Invalid file type');
54    }
55    // continue...
56    else
57    {
58      $temp_filename = $conf['data_location'].basename($_POST['file_url']);
59      $file = fopen($temp_filename, 'w+');
60      $result = fetchRemote($_POST['file_url'], $file);
61      fclose($file);
62     
63      // download failed ?
64      if (!$result)
65      {
66        @unlink($temp_filename);
67        $page['errors'][] = l10n('Unable to download file');
68      }
69      // check mime-type
70      else if (!in_array(get_mime($temp_filename, $allowed_mimes[0]), $allowed_mimes))
71      {
72        @unlink($temp_filename);
73        $page['errors'][] = l10n('Invalid file type');
74      }
75      // continue...
76      else
77      {
78        $image_id = add_uploaded_file(
79          $temp_filename, 
80          basename($temp_filename), 
81          array($category_id), 
82          $_POST['level']
83          );
84       
85        $updates = array();
86        if (!empty($_POST['photo_name']))
87        {
88          $updates['name'] = $_POST['photo_name'];
89        }
90        if (isset($_POST['url_in_comment']))
91        {
92          $url = parse_url($_POST['file_url']);
93          $url = $url['scheme'].'://'.$url['host'];
94          $updates['comment'] = '<a href="'. $url . '">'. $url .'</a>';
95        }
96       
97        single_update(
98          IMAGES_TABLE,
99          $updates,
100          array('id' => $image_id)
101          );
102       
103        $image_ids = array($image_id);
104      }
105    }
106  }
107  // MULTIPLE UPLOAD
108  else if ($_GET['upload_mode'] == 'multiple')
109  {
110    if (isset($_POST['onUploadError']) and is_array($_POST['onUploadError']) and count($_POST['onUploadError']) > 0)
111    {
112      array_push($page['errors'], sprintf(l10n('%d photos not imported'), count($_POST['onUploadError'])));
113      foreach ($_POST['onUploadError'] as $error)
114      {
115        array_push($page['errors'], $error);
116      }
117    }
118 
119    if (isset($_POST['imageIds']) and is_array($_POST['imageIds']) and count($_POST['imageIds']) > 0)
120    {
121      $image_ids = $_POST['imageIds'];
122    }
123  }
124
125  // DISPLAY RESULTS
126  foreach ($image_ids as $image_id)
127  {
128    $query = '
129SELECT id, file, path
130  FROM '.IMAGES_TABLE.'
131  WHERE id = '.$image_id.'
132;';
133    $image_infos = pwg_db_fetch_assoc(pwg_query($query));
134   
135    $thumbnail = array(
136      'file' =>  $image_infos['file'],
137      'src' =>   DerivativeImage::thumb_url($image_infos),
138      'title' => get_name_from_file($image_infos['file']),
139      'link' =>  get_root_url().'admin.php?page=photo-'.$image_id.'&amp;cat_id='.$category_id,
140      );
141
142    array_push($page['thumbnails'], $thumbnail);
143  }
144
145  if (!empty($page['thumbnails']))
146  {
147    // nb uploaded
148    array_push($page['infos'], sprintf(
149      l10n('%d photos uploaded'),
150      count($page['thumbnails'])
151      ));
152
153    // level
154    if (0 != $_POST['level'])
155    {
156      array_push($page['infos'], sprintf(
157        l10n('Privacy level set to "%s"'),
158        l10n(sprintf('Level %d', $_POST['level']))
159        ));
160    }
161
162    // new category count
163    $query = '
164SELECT COUNT(*)
165  FROM '.IMAGE_CATEGORY_TABLE.'
166  WHERE category_id = '.$category_id.'
167;';
168    list($count) = pwg_db_fetch_row(pwg_query($query));
169    $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=album-');
170   
171    array_push($page['infos'], sprintf(
172      l10n('Album "%s" now contains %d photos'),
173      '<em>'.$category_name.'</em>',
174      $count
175      ));
176   
177    $page['batch_link'] = PHOTOS_ADD_BASE_URL.'&batch='.implode(',', $image_ids);
178  }
179}
180
181
182// +-----------------------------------------------------------------------+
183// |                             prepare form                              |
184// +-----------------------------------------------------------------------+
185include(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_prepare.inc.php');
186
187// upload mode
188$upload_modes = array('single', 'multiple');
189$upload_mode = isset($conf['url_uploader_mode']) ? $conf['url_uploader_mode'] : 'single';
190
191if ( isset($_GET['upload_mode']) and $_GET['upload_mode']!=$upload_mode and in_array($_GET['upload_mode'], $upload_modes) )
192{
193  $upload_mode = $_GET['upload_mode'];
194  conf_update_param('url_uploader_mode', $upload_mode);
195}
196
197// what is the upload switch mode
198$index_of_upload_mode = array_flip($upload_modes);
199$upload_mode_index = $index_of_upload_mode[$upload_mode];
200$upload_switch = $upload_modes[ ($upload_mode_index + 1) % 2 ];
201
202$template->assign(array(
203  'upload_mode' => $upload_mode,
204  'form_action' => URLUPLOADER_ADMIN.'&amp;upload_mode='.$upload_mode.'&amp;processed=1',
205  'switch_url' => URLUPLOADER_ADMIN.'&amp;upload_mode='.$upload_switch,
206  'another_upload_link' => URLUPLOADER_ADMIN.'&amp;upload_mode='.$upload_mode,
207  ));
208
209
210$template->set_filename('urluploader_content', realpath(URLUPLOADER_PATH . 'template/photos_add.tpl'));
211
212// template vars
213$template->assign(array(
214  'URLUPLOADER_PATH' => get_root_url() . URLUPLOADER_PATH,
215  'URLUPLOADER_ADMIN' => URLUPLOADER_ADMIN,
216  ));
217 
218// send page content
219$template->assign_var_from_handle('ADMIN_CONTENT', 'urluploader_content');
220
221?>
Note: See TracBrowser for help on using the repository browser.