source: extensions/File_Uploader/admin/admin_upload.php @ 19775

Last change on this file since 19775 was 19775, checked in by julien1311, 11 years ago

some bug fixes/improvements
still buggy

  • Property svn:eol-style set to LF
File size: 10.2 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4include_once(PHPWG_ROOT_PATH . 'include/functions.inc.php');
5
6global $template, $conf, $user, $page;
7
8if (isset($_POST['submit'])) {
9        $file_uploader_errors = array();
10        $file_uploader_upload_file = array();
11
12        if($_FILES['file_uploader_file']['size'] != 0) {
13                $file_uploader_upload_file = file_uploader_upload_file($_FILES['file_uploader_file']);
14                if(count($file_uploader_upload_file['errors']) != 0)
15                        $file_uploader_errors['file'] = $file_uploader_upload_file['errors'];
16        } else {
17                $file_uploader_errors['file']['no_file'] = 'Specify a file to upload';
18        }
19       
20        if($_FILES['file_uploader_thumbnail']['size'] != 0 && $_FILES['file_uploader_file']['size'] != 0) {
21                $file_uploader_upload_thumbnail = file_uploader_upload_thumbnail($_FILES['file_uploader_thumbnail'], $file_uploader_upload_file['name_wo_extension'], $file_uploader_upload_file['extension'], $file_uploader_upload_file['folder']);
22                if(count($file_uploader_upload_thumbnail['errors']) != 0)
23                        $file_uploader_errors['thumbnail'] = $file_uploader_upload_thumbnail['errors'];
24        } else {
25                $file_uploader_errors['thumbnail']['no_file'] = 'Specify a thumbnail for your file';
26        }
27       
28        if (count($file_uploader_errors) == 0) {
29                file_uploader_synchronize($file_uploader_upload_file, $_POST['file_uploader'], $file_uploader_upload_thumbnail);
30                array_push($page['infos'], l10n('File uploaded and synchronized'));
31        } else {
32                array_push($page['errors'], l10n('There have been errors. See below'));
33                $template->assign('file_uploader_errors', $file_uploader_errors);
34                $template->assign('file_uploader', $_POST['file_uploader']);
35        }
36}
37
38function file_uploader_upload_file($file_uploader_file) {
39        include_once(dirname(__FILE__).'/install/config_default.inc.php');
40       
41        global $conf;
42        $conf_file_uploader = unserialize($conf['file_uploader']);
43       
44        $file_uploader_file_tmp = $file_uploader_file['tmp_name'];
45        $file_uploader_file_name = preg_replace('/[^a-zA-Z0-9s.]/', '_', $file_uploader_file['name']);
46        $file_uploader_file_name_wo_extension = substr($file_uploader_file_name, 0, strrpos($file_uploader_file_name, '.'));
47        $file_uploader_file_extension = strtolower(substr(strrchr($file_uploader_file['name'], '.'),1));
48        $file_uploader_file_size = filesize($file_uploader_file['tmp_name']);
49        if (isset($file_uploader_destination_folder[$file_uploader_file_extension])) {
50                $file_uploader_file_category = $file_uploader_destination_folder[$file_uploader_file_extension];
51                $file_uploader_file_directory_full = $file_uploader_galleries_dir.$file_uploader_file_category;
52        } else {
53                $file_uploader_file_category = $file_uploader_destination_folder['others'];
54                $file_uploader_file_directory_full = $file_uploader_galleries_dir.$file_uploader_file_category;
55        }
56        $file_uploader_file_destination = $file_uploader_file_directory_full.'/'.$file_uploader_file_name;
57        $file_uploader_errors = array();
58        $return = array();
59       
60        $return['name_wo_extension'] = $file_uploader_file_name_wo_extension;
61        $return['extension'] = $file_uploader_file_extension;
62        $return['folder'] = $file_uploader_file_category;
63        $return['destination'] = $file_uploader_file_destination;
64        $return['size'] = $file_uploader_file_size;
65        $return['overwrite'] = false;
66       
67        //If the directory does not exist, we create it
68        if (!file_exists($file_uploader_file_directory_full))
69                if(!mkdir($file_uploader_file_directory_full))
70                        $file_uploader_errors['upload_error'] = l10n('Unable to create folder ').$file_uploader_file_directory_full;
71                //If the physical category si not in database, we add it
72                else if (pwg_db_num_rows(pwg_query('SELECT id FROM '.CATEGORIES_TABLE.' WHERE name = "'.$file_uploader_file_category.'";')) == 0){
73                        $next_id = pwg_db_nextval('id', CATEGORIES_TABLE);
74                        $category_rank = pwg_db_fetch_assoc(pwg_query('SELECT MAX(rank) FROM '.CATEGORIES_TABLE.';'));
75                        $category_rank = $category_rank['MAX(rank)'] + 1;
76                        $file_uploader_physical_category_id = pwg_db_fetch_assoc(pwg_query('SELECT id FROM '.CATEGORIES_TABLE.' WHERE name = "'.$file_uploader_galleries_folder.'";'));
77                        pwg_query('INSERT INTO '.CATEGORIES_TABLE.' (id, name, dir, rank, status, visible, uppercats, global_rank, site_id) VALUES ('.$next_id.', "'.$file_uploader_file_category.'", "'.$file_uploader_file_category.'", '.$category_rank.', "private", "'.boolean_to_string($conf['newcat_default_visible']).'", "'.$file_uploader_physical_category_id.'", '.$category_rank.', 1);');
78                }
79       
80        if ($file_uploader_file['error'] !== UPLOAD_ERR_OK) {
81                switch ($_FILES['file_uploader_file']['error']) {
82                        case UPLOAD_ERR_INI_SIZE:
83                                $file_uploader_errors['upload_error'] = l10n('File exceeds the upload_max_filesize directive in php.ini');
84                                break;
85                        case UPLOAD_ERR_PARTIAL:
86                                $file_uploader_errors['upload_error'] = l10n('File was only partially uploaded');
87                                break;
88                        case UPLOAD_ERR_NO_FILE:
89                                $file_uploader_errors['upload_error'] = l10n('No file to upload');
90                                break;
91                        case UPLOAD_ERR_NO_TMP_DIR:
92                                $file_uploader_errors['upload_error'] = l10n('Missing a temporary folder');
93                                break;
94                        case UPLOAD_ERR_CANT_WRITE:
95                                $file_uploader_errors['upload_error'] = l10n('Failed to write file to disk');
96                                break;
97                        case UPLOAD_ERR_EXTENSION:
98                                $file_uploader_errors['upload_error'] = l10n('File upload stopped by extension');
99                                break;
100                        default:
101                                $file_uploader_errors['upload_error'] = l10n('Upload error');
102                }
103        } else if (file_exists($file_uploader_file_destination)) {
104                if ($conf_file_uploader['overwrite'] == 1)
105                        $return['overwrite'] = true;
106                else
107                        $file_uploader_errors['already_exist'] = l10n('File with this name already exists. You should rename this file.');
108        } else if (!move_uploaded_file($file_uploader_file_tmp, $file_uploader_file_destination)) {
109                $file_uploader_errors['move_uploaded_file'] = l10n('Can\'t upload file to galleries directory');
110        }
111       
112        $return['errors'] = $file_uploader_errors;
113       
114        return $return;
115}
116
117
118function file_uploader_upload_thumbnail($file_uploader_thumbnail, $file_uploader_file_name_wo_extension, $file_uploader_file_extension, $file_uploader_file_folder) {
119        include_once(dirname(__FILE__).'/install/config_default.inc.php');
120       
121        $file_uploader_thumbnail_tmp = $file_uploader_thumbnail['tmp_name'];
122        $file_uploader_thumbnail_extension = strtolower(substr(strrchr($file_uploader_thumbnail['name'], '.'),1));
123        $file_uploader_thumbnail_size = filesize($file_uploader_thumbnail['tmp_name']);
124        $file_uploader_thumbnail_directory = $file_uploader_galleries_dir.$file_uploader_file_folder.'/pwg_representative';
125        $file_uploader_thumbnail_destination = $file_uploader_thumbnail_directory.'/'.$file_uploader_file_name_wo_extension.'.'.$file_uploader_thumbnail_extension;
126        $file_uploader_errors = array();
127        $return = array();
128       
129        $return['extension'] = $file_uploader_thumbnail_extension;
130       
131        if (!file_exists($file_uploader_thumbnail_directory))
132                if(!mkdir($file_uploader_thumbnail_directory))
133                        $file_uploader_errors['upload_error'] = l10n('Unable to create folder ').$file_uploader_thumbnail_directory;
134       
135        if ($file_uploader_thumbnail['error'] !== UPLOAD_ERR_OK) {
136                switch ($_FILES['file_uploader_thumbnail']['error']) {
137                        case UPLOAD_ERR_INI_SIZE:
138                                $file_uploader_errors['upload_error'] = l10n('File exceeds the upload_max_filesize directive in php.ini');
139                                break;
140                        case UPLOAD_ERR_PARTIAL:
141                                $file_uploader_errors['upload_error'] = l10n('File was only partially uploaded');
142                                break;
143                        case UPLOAD_ERR_NO_FILE:
144                                $file_uploader_errors['upload_error'] = l10n('No file to upload');
145                                break;
146                        case UPLOAD_ERR_NO_TMP_DIR:
147                                $file_uploader_errors['upload_error'] = l10n('Missing a temporary folder');
148                                break;
149                        case UPLOAD_ERR_CANT_WRITE:
150                                $file_uploader_errors['upload_error'] = l10n('Failed to write file to disk');
151                                break;
152                        case UPLOAD_ERR_EXTENSION:
153                                $file_uploader_errors['upload_error'] = l10n('File upload stopped by extension');
154                                break;
155                        default:
156                                $file_uploader_errors['upload_error'] = l10n('Upload error');
157                } 
158        } else if(!in_array($file_uploader_thumbnail_extension, $file_uploader_allowed_thumbnail_extension)) {
159                $file_uploader_errors['filetype'] = l10n('The thumbnail must be a picture');
160        } else if (!move_uploaded_file($file_uploader_thumbnail_tmp, $file_uploader_thumbnail_destination)) {
161                $file_uploader_errors['move_uploaded_file'] = l10n('Can\'t upload file to galleries directory');
162        }
163       
164        $return['errors'] = $file_uploader_errors;
165       
166        return $return;
167}
168
169
170function file_uploader_synchronize($file_uploader_file, $file_uploader_file_properties, $file_uploader_thumbnail) {
171        global $user;
172       
173        //Current date
174        list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
175
176        //Database registration
177        $file_path = pwg_db_real_escape_string($file_uploader_file['destination']);
178        $physical_category_id = pwg_db_fetch_assoc(pwg_query('SELECT id FROM '.CATEGORIES_TABLE.' WHERE name = "'.$file_uploader_file['folder'].'";'));
179        $insert = array(
180                'file' => substr(strrchr($file_path, '/'), 1),
181                'name' => pwg_db_real_escape_string($file_uploader_file_properties['title']),
182                'comment' => pwg_db_real_escape_string($file_uploader_file_properties['description']),
183                'date_available' => $dbnow,
184                'path' => $file_path,
185                'representative_ext' => $file_uploader_thumbnail['extension'],
186                'filesize' => $file_uploader_file['size'],
187                'storage_category_id' => $physical_category_id,
188                'md5sum' => md5_file($file_path),
189                'added_by' => $user['id'],
190        );
191       
192        if ($file_uploader_file['overwrite']) {
193                $query = 'SELECT id FROM '.IMAGES_TABLE.' WHERE path = "'.$file_path.'";';
194                $image_id = pwg_db_fetch_assoc(pwg_query($query));
195                single_update(IMAGES_TABLE, $insert, array('id' => $image_id['id']));
196        } else {
197                single_insert(IMAGES_TABLE, $insert);
198                $image_id = pwg_db_insert_id(IMAGES_TABLE);
199        }
200       
201        if(isset($file_uploader_file_properties['category']) and count($file_uploader_file_properties['category']) > 0) {
202                associate_images_to_categories(
203                        array($image_id),
204                        array($file_uploader_file_properties['category'], $physical_category_id['id'])
205                );
206        }
207       
208        @fill_caddie(array($image_id));
209}
210
211
212//Categories
213$query = 'SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.';';
214display_select_cat_wrapper($query, array(), 'category_parent_options');
215
216$template->set_filenames(array('plugin_admin_content' => dirname(__FILE__) . '/admin_upload.tpl')); 
217$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
218?>
Note: See TracBrowser for help on using the repository browser.