@@ -78,8 +78,7 @@ |
||
78 | 78 | // Create the underlying PDO object |
79 | 79 | self::$pdo = new PDO( |
80 | 80 | (substr($config['dbhost'], 0, 1) === '/' ? |
81 | - "mysql:unix_socket={$config['dbhost']};dbname={$config['dbname']}" : |
|
82 | - "mysql:host={$config['dbhost']};dbname={$config['dbname']};port={$config['dbport']}" |
|
81 | + "mysql:unix_socket={$config['dbhost']};dbname={$config['dbname']}" : "mysql:host={$config['dbhost']};dbname={$config['dbname']};port={$config['dbport']}" |
|
83 | 82 | ), |
84 | 83 | $config['dbuser'], $config['dbpass'], |
85 | 84 | [ |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | namespace Fisharebest\Webtrees\Http\Controllers; |
19 | 19 |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | use Fisharebest\Webtrees\Filter; |
19 | 19 | use Fisharebest\Webtrees\Html; |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | namespace Fisharebest\Webtrees\Http\Controllers; |
19 | 19 |
@@ -190,77 +190,77 @@ |
||
190 | 190 | $file_location = $request->get('file_location'); |
191 | 191 | |
192 | 192 | switch ($file_location) { |
193 | - case 'url': |
|
194 | - $remote = $request->get('remote'); |
|
193 | + case 'url': |
|
194 | + $remote = $request->get('remote'); |
|
195 | 195 | |
196 | - if (strpos($remote, '://') !== false) { |
|
197 | - return $remote; |
|
198 | - } else { |
|
199 | - return ''; |
|
200 | - } |
|
196 | + if (strpos($remote, '://') !== false) { |
|
197 | + return $remote; |
|
198 | + } else { |
|
199 | + return ''; |
|
200 | + } |
|
201 | 201 | |
202 | - case 'unused': |
|
203 | - $unused = $request->get('unused'); |
|
204 | - $unused = str_replace('\\', '/', $unused); |
|
202 | + case 'unused': |
|
203 | + $unused = $request->get('unused'); |
|
204 | + $unused = str_replace('\\', '/', $unused); |
|
205 | 205 | |
206 | - if (strpos($unused, '../') !== false) { |
|
207 | - return ''; |
|
208 | - } |
|
206 | + if (strpos($unused, '../') !== false) { |
|
207 | + return ''; |
|
208 | + } |
|
209 | 209 | |
210 | - return $unused; |
|
210 | + return $unused; |
|
211 | 211 | |
212 | - case 'upload': |
|
213 | - default: |
|
214 | - $media_folder = $tree->getPreference('MEDIA_DIRECTORY'); |
|
215 | - $folder = $request->get('folder', ''); |
|
216 | - $auto = $request->get('auto', '0'); |
|
217 | - $new_file = $request->get('new_file', ''); |
|
212 | + case 'upload': |
|
213 | + default: |
|
214 | + $media_folder = $tree->getPreference('MEDIA_DIRECTORY'); |
|
215 | + $folder = $request->get('folder', ''); |
|
216 | + $auto = $request->get('auto', '0'); |
|
217 | + $new_file = $request->get('new_file', ''); |
|
218 | 218 | |
219 | - $uploaded_file = $request->files->get('file'); |
|
220 | - if ($uploaded_file === null) { |
|
221 | - return ''; |
|
222 | - } |
|
219 | + $uploaded_file = $request->files->get('file'); |
|
220 | + if ($uploaded_file === null) { |
|
221 | + return ''; |
|
222 | + } |
|
223 | 223 | |
224 | - // The filename |
|
225 | - $new_file = str_replace('\\', '/', $new_file); |
|
226 | - if ($new_file !== '' && strpos($new_file, '/') === false) { |
|
227 | - $file = $new_file; |
|
228 | - } else { |
|
229 | - $file = $uploaded_file->getClientOriginalName(); |
|
230 | - } |
|
224 | + // The filename |
|
225 | + $new_file = str_replace('\\', '/', $new_file); |
|
226 | + if ($new_file !== '' && strpos($new_file, '/') === false) { |
|
227 | + $file = $new_file; |
|
228 | + } else { |
|
229 | + $file = $uploaded_file->getClientOriginalName(); |
|
230 | + } |
|
231 | 231 | |
232 | - // The folder |
|
233 | - $folder = str_replace('\\', '/', $folder); |
|
234 | - $folder = trim($folder, '/'); |
|
235 | - if ($folder !== '') { |
|
236 | - $folder .= '/'; |
|
237 | - } |
|
232 | + // The folder |
|
233 | + $folder = str_replace('\\', '/', $folder); |
|
234 | + $folder = trim($folder, '/'); |
|
235 | + if ($folder !== '') { |
|
236 | + $folder .= '/'; |
|
237 | + } |
|
238 | 238 | |
239 | - // Invalid path? |
|
240 | - if (strpos($folder, '../') !== false || !File::mkdir(WT_DATA_DIR . $media_folder . $folder)) { |
|
241 | - $auto = '1'; |
|
242 | - } |
|
239 | + // Invalid path? |
|
240 | + if (strpos($folder, '../') !== false || !File::mkdir(WT_DATA_DIR . $media_folder . $folder)) { |
|
241 | + $auto = '1'; |
|
242 | + } |
|
243 | 243 | |
244 | - // Generate a unique name for the file? |
|
245 | - if ($auto === '1' || file_exists(WT_DATA_DIR . $media_folder . $folder . $file)) { |
|
246 | - $folder = ''; |
|
247 | - $extension = $uploaded_file->guessExtension(); |
|
248 | - $file = sha1_file($uploaded_file->getPathname()) . '.' . $extension; |
|
249 | - } |
|
244 | + // Generate a unique name for the file? |
|
245 | + if ($auto === '1' || file_exists(WT_DATA_DIR . $media_folder . $folder . $file)) { |
|
246 | + $folder = ''; |
|
247 | + $extension = $uploaded_file->guessExtension(); |
|
248 | + $file = sha1_file($uploaded_file->getPathname()) . '.' . $extension; |
|
249 | + } |
|
250 | 250 | |
251 | - try { |
|
252 | - //if ($uploaded_file->isValid()) { |
|
253 | - // $uploaded_file->move(WT_DATA_DIR . $media_folder . $folder, $file); |
|
254 | - if (is_uploaded_file($_FILES['file']['tmp_name'])) { |
|
255 | - move_uploaded_file($_FILES['file']['tmp_name'], WT_DATA_DIR . $media_folder . $folder . $file); |
|
251 | + try { |
|
252 | + //if ($uploaded_file->isValid()) { |
|
253 | + // $uploaded_file->move(WT_DATA_DIR . $media_folder . $folder, $file); |
|
254 | + if (is_uploaded_file($_FILES['file']['tmp_name'])) { |
|
255 | + move_uploaded_file($_FILES['file']['tmp_name'], WT_DATA_DIR . $media_folder . $folder . $file); |
|
256 | 256 | |
257 | - return $folder . $file; |
|
257 | + return $folder . $file; |
|
258 | + } |
|
259 | + } catch (FileException $ex) { |
|
260 | + DebugBar::addThrowable($ex); |
|
258 | 261 | } |
259 | - } catch (FileException $ex) { |
|
260 | - DebugBar::addThrowable($ex); |
|
261 | - } |
|
262 | 262 | |
263 | - return ''; |
|
263 | + return ''; |
|
264 | 264 | } |
265 | 265 | } |
266 | 266 |
@@ -31,17 +31,17 @@ |
||
31 | 31 | private $multimedia_format = ''; |
32 | 32 | |
33 | 33 | /** @var string The type of document; newspaper, microfiche, etc. */ |
34 | - private $source_media_type = ''; |
|
34 | + private $source_media_type = ''; |
|
35 | 35 | /** @var string The filename */ |
36 | 36 | |
37 | 37 | /** @var string The name of the document */ |
38 | - private $descriptive_title = ''; |
|
38 | + private $descriptive_title = ''; |
|
39 | 39 | |
40 | - /** @var Media $media The media object to which this file belongs */ |
|
41 | - private $media; |
|
40 | + /** @var Media $media The media object to which this file belongs */ |
|
41 | + private $media; |
|
42 | 42 | |
43 | - /** @var string */ |
|
44 | - private $fact_id; |
|
43 | + /** @var string */ |
|
44 | + private $fact_id; |
|
45 | 45 | |
46 | 46 | /** |
47 | 47 | * Create a MediaFile from raw GEDCOM data. |
@@ -387,56 +387,56 @@ |
||
387 | 387 | public function mimeType() { |
388 | 388 | // Themes contain icon definitions for some/all of these mime-types |
389 | 389 | switch ($this->extension()) { |
390 | - case 'bmp': |
|
391 | - return 'image/bmp'; |
|
392 | - case 'doc': |
|
393 | - return 'application/msword'; |
|
394 | - case 'docx': |
|
395 | - return 'application/msword'; |
|
396 | - case 'ged': |
|
397 | - return 'text/x-gedcom'; |
|
398 | - case 'gif': |
|
399 | - return 'image/gif'; |
|
400 | - case 'htm': |
|
401 | - return 'text/html'; |
|
402 | - case 'html': |
|
403 | - return 'text/html'; |
|
404 | - case 'jpeg': |
|
405 | - return 'image/jpeg'; |
|
406 | - case 'jpg': |
|
407 | - return 'image/jpeg'; |
|
408 | - case 'mov': |
|
409 | - return 'video/quicktime'; |
|
410 | - case 'mp3': |
|
411 | - return 'audio/mpeg'; |
|
412 | - case 'mp4': |
|
413 | - return 'video/mp4'; |
|
414 | - case 'ogv': |
|
415 | - return 'video/ogg'; |
|
416 | - case 'pdf': |
|
417 | - return 'application/pdf'; |
|
418 | - case 'png': |
|
419 | - return 'image/png'; |
|
420 | - case 'rar': |
|
421 | - return 'application/x-rar-compressed'; |
|
422 | - case 'swf': |
|
423 | - return 'application/x-shockwave-flash'; |
|
424 | - case 'svg': |
|
425 | - return 'image/svg'; |
|
426 | - case 'tif': |
|
427 | - return 'image/tiff'; |
|
428 | - case 'tiff': |
|
429 | - return 'image/tiff'; |
|
430 | - case 'xls': |
|
431 | - return 'application/vnd-ms-excel'; |
|
432 | - case 'xlsx': |
|
433 | - return 'application/vnd-ms-excel'; |
|
434 | - case 'wmv': |
|
435 | - return 'video/x-ms-wmv'; |
|
436 | - case 'zip': |
|
437 | - return 'application/zip'; |
|
438 | - default: |
|
439 | - return 'application/octet-stream'; |
|
390 | + case 'bmp': |
|
391 | + return 'image/bmp'; |
|
392 | + case 'doc': |
|
393 | + return 'application/msword'; |
|
394 | + case 'docx': |
|
395 | + return 'application/msword'; |
|
396 | + case 'ged': |
|
397 | + return 'text/x-gedcom'; |
|
398 | + case 'gif': |
|
399 | + return 'image/gif'; |
|
400 | + case 'htm': |
|
401 | + return 'text/html'; |
|
402 | + case 'html': |
|
403 | + return 'text/html'; |
|
404 | + case 'jpeg': |
|
405 | + return 'image/jpeg'; |
|
406 | + case 'jpg': |
|
407 | + return 'image/jpeg'; |
|
408 | + case 'mov': |
|
409 | + return 'video/quicktime'; |
|
410 | + case 'mp3': |
|
411 | + return 'audio/mpeg'; |
|
412 | + case 'mp4': |
|
413 | + return 'video/mp4'; |
|
414 | + case 'ogv': |
|
415 | + return 'video/ogg'; |
|
416 | + case 'pdf': |
|
417 | + return 'application/pdf'; |
|
418 | + case 'png': |
|
419 | + return 'image/png'; |
|
420 | + case 'rar': |
|
421 | + return 'application/x-rar-compressed'; |
|
422 | + case 'swf': |
|
423 | + return 'application/x-shockwave-flash'; |
|
424 | + case 'svg': |
|
425 | + return 'image/svg'; |
|
426 | + case 'tif': |
|
427 | + return 'image/tiff'; |
|
428 | + case 'tiff': |
|
429 | + return 'image/tiff'; |
|
430 | + case 'xls': |
|
431 | + return 'application/vnd-ms-excel'; |
|
432 | + case 'xlsx': |
|
433 | + return 'application/vnd-ms-excel'; |
|
434 | + case 'wmv': |
|
435 | + return 'video/x-ms-wmv'; |
|
436 | + case 'zip': |
|
437 | + return 'application/zip'; |
|
438 | + default: |
|
439 | + return 'application/octet-stream'; |
|
440 | 440 | } |
441 | 441 | } |
442 | 442 | } |
@@ -174,9 +174,9 @@ |
||
174 | 174 | |
175 | 175 | $data = []; |
176 | 176 | foreach ($rows as $row) { |
177 | - $media = Media::getInstance($row->xref, Tree::findById($row->gedcom_id), $row->gedcom); |
|
177 | + $media = Media::getInstance($row->xref, Tree::findById($row->gedcom_id), $row->gedcom); |
|
178 | 178 | $media_files = $media->mediaFiles(); |
179 | - $media_files = array_map(function(MediaFile $media_file) { |
|
179 | + $media_files = array_map(function (MediaFile $media_file) { |
|
180 | 180 | return $media_file->displayImage(150, 150, '', []); |
181 | 181 | }, $media_files); |
182 | 182 | $data[] = [ |
@@ -88,104 +88,104 @@ discard block |
||
88 | 88 | //////////////////////////////////////////////////////////////////////////////// |
89 | 89 | |
90 | 90 | switch ($action) { |
91 | -case 'load_json': |
|
92 | - $search = Filter::get('search'); |
|
93 | - $search = $search['value']; |
|
94 | - $start = Filter::getInteger('start'); |
|
95 | - $length = Filter::getInteger('length'); |
|
96 | - |
|
97 | - switch ($files) { |
|
98 | - case 'local': |
|
99 | - // Filtered rows |
|
100 | - $SELECT1 = |
|
101 | - "SELECT SQL_CACHE SQL_CALC_FOUND_ROWS TRIM(LEADING :media_path_1 FROM multimedia_file_refn) AS media_path, m_id AS xref, descriptive_title, m_file AS gedcom_id, m_gedcom AS gedcom" . |
|
102 | - " FROM `##media`" . |
|
103 | - " JOIN `##media_file` USING (m_file, m_id)" . |
|
104 | - " JOIN `##gedcom_setting` ON (m_file = gedcom_id AND setting_name = 'MEDIA_DIRECTORY')" . |
|
105 | - " JOIN `##gedcom` USING (gedcom_id)" . |
|
106 | - " WHERE setting_value = :media_folder" . |
|
107 | - " AND multimedia_file_refn LIKE CONCAT(:media_path_2, '%')" . |
|
108 | - " AND (SUBSTRING_INDEX(multimedia_file_refn, '/', -1) LIKE CONCAT('%', :search_1, '%')" . |
|
109 | - " OR descriptive_title LIKE CONCAT('%', :search_2, '%'))" . |
|
110 | - " AND multimedia_file_refn NOT LIKE 'http://%'" . |
|
111 | - " AND multimedia_file_refn NOT LIKE 'https://%'"; |
|
112 | - $ARGS1 = [ |
|
113 | - 'media_path_1' => $media_path, |
|
114 | - 'media_folder' => $media_folder, |
|
115 | - 'media_path_2' => Database::escapeLike($media_path), |
|
116 | - 'search_1' => Database::escapeLike($search), |
|
117 | - 'search_2' => Database::escapeLike($search), |
|
118 | - ]; |
|
119 | - // Unfiltered rows |
|
120 | - $SELECT2 = |
|
121 | - "SELECT SQL_CACHE COUNT(*)" . |
|
122 | - " FROM `##media`" . |
|
123 | - " JOIN `##media_file` USING (m_file, m_id)" . |
|
124 | - " JOIN `##gedcom_setting` ON (m_file = gedcom_id AND setting_name = 'MEDIA_DIRECTORY')" . |
|
125 | - " WHERE setting_value = :media_folder" . |
|
126 | - " AND multimedia_file_refn LIKE CONCAT(:media_path_3, '%')" . |
|
127 | - " AND multimedia_file_refn NOT LIKE 'http://%'" . |
|
128 | - " AND multimedia_file_refn NOT LIKE 'https://%'"; |
|
129 | - $ARGS2 = [ |
|
130 | - 'media_folder' => $media_folder, |
|
131 | - 'media_path_3' => $media_path, |
|
132 | - ]; |
|
133 | - |
|
134 | - if ($subfolders == 'exclude') { |
|
135 | - $SELECT1 .= " AND multimedia_file_refn NOT LIKE CONCAT(:media_path_4, '%/%')"; |
|
136 | - $ARGS1['media_path_4'] = Database::escapeLike($media_path); |
|
137 | - $SELECT2 .= " AND multimedia_file_refn NOT LIKE CONCAT(:media_path_4, '%/%')"; |
|
138 | - $ARGS2['media_path_4'] = Database::escapeLike($media_path); |
|
139 | - } |
|
140 | - |
|
141 | - $order = Filter::getArray('order'); |
|
142 | - $SELECT1 .= " ORDER BY "; |
|
143 | - if ($order) { |
|
144 | - foreach ($order as $key => $value) { |
|
145 | - if ($key > 0) { |
|
146 | - $SELECT1 .= ','; |
|
91 | + case 'load_json': |
|
92 | + $search = Filter::get('search'); |
|
93 | + $search = $search['value']; |
|
94 | + $start = Filter::getInteger('start'); |
|
95 | + $length = Filter::getInteger('length'); |
|
96 | + |
|
97 | + switch ($files) { |
|
98 | + case 'local': |
|
99 | + // Filtered rows |
|
100 | + $SELECT1 = |
|
101 | + "SELECT SQL_CACHE SQL_CALC_FOUND_ROWS TRIM(LEADING :media_path_1 FROM multimedia_file_refn) AS media_path, m_id AS xref, descriptive_title, m_file AS gedcom_id, m_gedcom AS gedcom" . |
|
102 | + " FROM `##media`" . |
|
103 | + " JOIN `##media_file` USING (m_file, m_id)" . |
|
104 | + " JOIN `##gedcom_setting` ON (m_file = gedcom_id AND setting_name = 'MEDIA_DIRECTORY')" . |
|
105 | + " JOIN `##gedcom` USING (gedcom_id)" . |
|
106 | + " WHERE setting_value = :media_folder" . |
|
107 | + " AND multimedia_file_refn LIKE CONCAT(:media_path_2, '%')" . |
|
108 | + " AND (SUBSTRING_INDEX(multimedia_file_refn, '/', -1) LIKE CONCAT('%', :search_1, '%')" . |
|
109 | + " OR descriptive_title LIKE CONCAT('%', :search_2, '%'))" . |
|
110 | + " AND multimedia_file_refn NOT LIKE 'http://%'" . |
|
111 | + " AND multimedia_file_refn NOT LIKE 'https://%'"; |
|
112 | + $ARGS1 = [ |
|
113 | + 'media_path_1' => $media_path, |
|
114 | + 'media_folder' => $media_folder, |
|
115 | + 'media_path_2' => Database::escapeLike($media_path), |
|
116 | + 'search_1' => Database::escapeLike($search), |
|
117 | + 'search_2' => Database::escapeLike($search), |
|
118 | + ]; |
|
119 | + // Unfiltered rows |
|
120 | + $SELECT2 = |
|
121 | + "SELECT SQL_CACHE COUNT(*)" . |
|
122 | + " FROM `##media`" . |
|
123 | + " JOIN `##media_file` USING (m_file, m_id)" . |
|
124 | + " JOIN `##gedcom_setting` ON (m_file = gedcom_id AND setting_name = 'MEDIA_DIRECTORY')" . |
|
125 | + " WHERE setting_value = :media_folder" . |
|
126 | + " AND multimedia_file_refn LIKE CONCAT(:media_path_3, '%')" . |
|
127 | + " AND multimedia_file_refn NOT LIKE 'http://%'" . |
|
128 | + " AND multimedia_file_refn NOT LIKE 'https://%'"; |
|
129 | + $ARGS2 = [ |
|
130 | + 'media_folder' => $media_folder, |
|
131 | + 'media_path_3' => $media_path, |
|
132 | + ]; |
|
133 | + |
|
134 | + if ($subfolders == 'exclude') { |
|
135 | + $SELECT1 .= " AND multimedia_file_refn NOT LIKE CONCAT(:media_path_4, '%/%')"; |
|
136 | + $ARGS1['media_path_4'] = Database::escapeLike($media_path); |
|
137 | + $SELECT2 .= " AND multimedia_file_refn NOT LIKE CONCAT(:media_path_4, '%/%')"; |
|
138 | + $ARGS2['media_path_4'] = Database::escapeLike($media_path); |
|
147 | 139 | } |
148 | - // Datatables numbers columns 0, 1, 2 |
|
149 | - // MySQL numbers columns 1, 2, 3 |
|
150 | - switch ($value['dir']) { |
|
151 | - case 'asc': |
|
152 | - $SELECT1 .= ":col_" . $key . " ASC"; |
|
153 | - break; |
|
154 | - case 'desc': |
|
155 | - $SELECT1 .= ":col_" . $key . " DESC"; |
|
156 | - break; |
|
140 | + |
|
141 | + $order = Filter::getArray('order'); |
|
142 | + $SELECT1 .= " ORDER BY "; |
|
143 | + if ($order) { |
|
144 | + foreach ($order as $key => $value) { |
|
145 | + if ($key > 0) { |
|
146 | + $SELECT1 .= ','; |
|
147 | + } |
|
148 | + // Datatables numbers columns 0, 1, 2 |
|
149 | + // MySQL numbers columns 1, 2, 3 |
|
150 | + switch ($value['dir']) { |
|
151 | + case 'asc': |
|
152 | + $SELECT1 .= ":col_" . $key . " ASC"; |
|
153 | + break; |
|
154 | + case 'desc': |
|
155 | + $SELECT1 .= ":col_" . $key . " DESC"; |
|
156 | + break; |
|
157 | + } |
|
158 | + $ARGS1['col_' . $key] = 1 + $value['column']; |
|
157 | 159 | } |
158 | - $ARGS1['col_' . $key] = 1 + $value['column']; |
|
160 | + } else { |
|
161 | + $SELECT1 = " 1 ASC"; |
|
159 | 162 | } |
160 | - } else { |
|
161 | - $SELECT1 = " 1 ASC"; |
|
162 | - } |
|
163 | 163 | |
164 | - if ($length > 0) { |
|
165 | - $SELECT1 .= " LIMIT :length OFFSET :start"; |
|
166 | - $ARGS1['length'] = $length; |
|
167 | - $ARGS1['start'] = $start; |
|
168 | - } |
|
169 | - |
|
170 | - $rows = Database::prepare($SELECT1)->execute($ARGS1)->fetchAll(); |
|
171 | - // Total filtered/unfiltered rows |
|
172 | - $recordsFiltered = Database::prepare("SELECT FOUND_ROWS()")->fetchOne(); |
|
173 | - $recordsTotal = Database::prepare($SELECT2)->execute($ARGS2)->fetchOne(); |
|
164 | + if ($length > 0) { |
|
165 | + $SELECT1 .= " LIMIT :length OFFSET :start"; |
|
166 | + $ARGS1['length'] = $length; |
|
167 | + $ARGS1['start'] = $start; |
|
168 | + } |
|
174 | 169 | |
175 | - $data = []; |
|
176 | - foreach ($rows as $row) { |
|
177 | - $media = Media::getInstance($row->xref, Tree::findById($row->gedcom_id), $row->gedcom); |
|
178 | - $media_files = $media->mediaFiles(); |
|
179 | - $media_files = array_map(function(MediaFile $media_file) { |
|
180 | - return $media_file->displayImage(150, 150, '', []); |
|
181 | - }, $media_files); |
|
182 | - $data[] = [ |
|
183 | - mediaFileInfo($media_folder, $media_path, $row->media_path), |
|
184 | - implode('', $media_files), |
|
185 | - mediaObjectInfo($media), |
|
186 | - ]; |
|
187 | - } |
|
188 | - break; |
|
170 | + $rows = Database::prepare($SELECT1)->execute($ARGS1)->fetchAll(); |
|
171 | + // Total filtered/unfiltered rows |
|
172 | + $recordsFiltered = Database::prepare("SELECT FOUND_ROWS()")->fetchOne(); |
|
173 | + $recordsTotal = Database::prepare($SELECT2)->execute($ARGS2)->fetchOne(); |
|
174 | + |
|
175 | + $data = []; |
|
176 | + foreach ($rows as $row) { |
|
177 | + $media = Media::getInstance($row->xref, Tree::findById($row->gedcom_id), $row->gedcom); |
|
178 | + $media_files = $media->mediaFiles(); |
|
179 | + $media_files = array_map(function(MediaFile $media_file) { |
|
180 | + return $media_file->displayImage(150, 150, '', []); |
|
181 | + }, $media_files); |
|
182 | + $data[] = [ |
|
183 | + mediaFileInfo($media_folder, $media_path, $row->media_path), |
|
184 | + implode('', $media_files), |
|
185 | + mediaObjectInfo($media), |
|
186 | + ]; |
|
187 | + } |
|
188 | + break; |
|
189 | 189 | |
190 | 190 | case 'external': |
191 | 191 | // Filtered rows |
@@ -216,12 +216,12 @@ discard block |
||
216 | 216 | // Datatables numbers columns 0, 1, 2 |
217 | 217 | // MySQL numbers columns 1, 2, 3 |
218 | 218 | switch ($value['dir']) { |
219 | - case 'asc': |
|
220 | - $SELECT1 .= ":col_" . $key . " ASC"; |
|
221 | - break; |
|
222 | - case 'desc': |
|
223 | - $SELECT1 .= ":col_" . $key . " DESC"; |
|
224 | - break; |
|
219 | + case 'asc': |
|
220 | + $SELECT1 .= ":col_" . $key . " ASC"; |
|
221 | + break; |
|
222 | + case 'desc': |
|
223 | + $SELECT1 .= ":col_" . $key . " DESC"; |
|
224 | + break; |
|
225 | 225 | } |
226 | 226 | $ARGS1['col_' . $key] = 1 + $value['column']; |
227 | 227 | } |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | namespace Fisharebest\Webtrees\Module; |
19 | 19 |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | namespace Fisharebest\Webtrees\Http\Controllers; |
19 | 19 |
@@ -103,25 +103,25 @@ discard block |
||
103 | 103 | } |
104 | 104 | |
105 | 105 | switch ($step) { |
106 | - default: |
|
107 | - case 1: |
|
108 | - return $this->viewResponse('setup/step-1-language', $data); |
|
109 | - case 2: |
|
110 | - return $this->viewResponse('setup/step-2-server-checks', $data); |
|
111 | - case 3: |
|
112 | - return $this->viewResponse('setup/step-3-database-connection', $data); |
|
113 | - case 4: |
|
114 | - return $this->viewResponse('setup/step-4-database-name', $data); |
|
115 | - case 5: |
|
116 | - return $this->viewResponse('setup/step-5-administrator', $data); |
|
117 | - case 6: |
|
118 | - $error = $this->createConfigFile($data['dbhost'], $data['dbport'], $data['dbuser'], $data['dbpass'], $data['dbname'], $data['tblpfx'], $data['wtname'], $data['wtuser'], $data['wtpass'], $data['wtemail']); |
|
119 | - |
|
120 | - if ($error === '') { |
|
121 | - return new RedirectResponse(Html::url('index.php', [])); |
|
122 | - } else { |
|
123 | - return $this->viewResponse('setup/step-6-failed', ['error' => $error]); |
|
124 | - } |
|
106 | + default: |
|
107 | + case 1: |
|
108 | + return $this->viewResponse('setup/step-1-language', $data); |
|
109 | + case 2: |
|
110 | + return $this->viewResponse('setup/step-2-server-checks', $data); |
|
111 | + case 3: |
|
112 | + return $this->viewResponse('setup/step-3-database-connection', $data); |
|
113 | + case 4: |
|
114 | + return $this->viewResponse('setup/step-4-database-name', $data); |
|
115 | + case 5: |
|
116 | + return $this->viewResponse('setup/step-5-administrator', $data); |
|
117 | + case 6: |
|
118 | + $error = $this->createConfigFile($data['dbhost'], $data['dbport'], $data['dbuser'], $data['dbpass'], $data['dbname'], $data['tblpfx'], $data['wtname'], $data['wtuser'], $data['wtpass'], $data['wtemail']); |
|
119 | + |
|
120 | + if ($error === '') { |
|
121 | + return new RedirectResponse(Html::url('index.php', [])); |
|
122 | + } else { |
|
123 | + return $this->viewResponse('setup/step-6-failed', ['error' => $error]); |
|
124 | + } |
|
125 | 125 | } |
126 | 126 | } |
127 | 127 | |
@@ -371,24 +371,24 @@ discard block |
||
371 | 371 | $memory_limit = ini_get('memory_limit'); |
372 | 372 | |
373 | 373 | switch (substr($memory_limit, -1)) { |
374 | - case 'k': |
|
375 | - case 'K': |
|
376 | - $memory_limit = substr($memory_limit, 0, -1) / 1024; |
|
377 | - break; |
|
378 | - case 'm': |
|
379 | - case 'M': |
|
380 | - $memory_limit = substr($memory_limit, 0, -1); |
|
381 | - break; |
|
382 | - case 'g': |
|
383 | - case 'G': |
|
384 | - $memory_limit = substr($memory_limit, 0, -1) * 1024; |
|
385 | - break; |
|
386 | - case 't': |
|
387 | - case 'T': |
|
388 | - $memory_limit = substr($memory_limit, 0, -1) * 1024 * 1024; |
|
389 | - break; |
|
390 | - default: |
|
391 | - $memory_limit = $memory_limit / 1024 / 1024; |
|
374 | + case 'k': |
|
375 | + case 'K': |
|
376 | + $memory_limit = substr($memory_limit, 0, -1) / 1024; |
|
377 | + break; |
|
378 | + case 'm': |
|
379 | + case 'M': |
|
380 | + $memory_limit = substr($memory_limit, 0, -1); |
|
381 | + break; |
|
382 | + case 'g': |
|
383 | + case 'G': |
|
384 | + $memory_limit = substr($memory_limit, 0, -1) * 1024; |
|
385 | + break; |
|
386 | + case 't': |
|
387 | + case 'T': |
|
388 | + $memory_limit = substr($memory_limit, 0, -1) * 1024 * 1024; |
|
389 | + break; |
|
390 | + default: |
|
391 | + $memory_limit = $memory_limit / 1024 / 1024; |
|
392 | 392 | } |
393 | 393 | |
394 | 394 | return (int) $memory_limit; |
@@ -13,7 +13,7 @@ |
||
13 | 13 | * You should have received a copy of the GNU General Public License |
14 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 | */ |
16 | -declare(strict_types=1); |
|
16 | +declare(strict_types = 1); |
|
17 | 17 | |
18 | 18 | namespace Fisharebest\Webtrees\Http\Controllers; |
19 | 19 |