| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | #!/usr/bin/env php
 | 
					
						
							|  |  |  | <?php | 
					
						
							| 
									
										
										
										
											2019-09-18 17:15:00 +03:00
										 |  |  | // This file is part of GNU social - https://www.gnu.org/software/social
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or
 | 
					
						
							|  |  |  | // (at your option) any later version.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU Affero General Public License for more details.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License
 | 
					
						
							|  |  |  | // along with GNU social.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2019-09-18 17:15:00 +03:00
										 |  |  |  * StoreRemoteMediaPlugin | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @category  Plugin | 
					
						
							|  |  |  |  * @package   GNUsocial | 
					
						
							| 
									
										
										
										
											2021-02-21 09:26:35 +00:00
										 |  |  |  * @author    Diogo Peralta Cordeiro <mail+gnusocial@diogo.site> | 
					
						
							|  |  |  |  * @author    Alexei Sorokin | 
					
						
							|  |  |  |  * @copyright 2018-2021 Free Software Foundation, Inc http://www.fsf.org | 
					
						
							| 
									
										
										
										
											2019-09-18 17:15:00 +03:00
										 |  |  |  * @license   https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-18 17:15:00 +03:00
										 |  |  | define('INSTALLDIR', dirname(__DIR__, 3)); | 
					
						
							|  |  |  | define('PUBLICDIR', INSTALLDIR . DIRECTORY_SEPARATOR . 'public'); | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-17 02:00:12 +01:00
										 |  |  | $shortoptions = 'l::a::i'; | 
					
						
							| 
									
										
										
										
											2019-04-18 01:03:09 +01:00
										 |  |  | $longoptions = ['limit=', 'all', 'image']; | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | $helptext = <<<END_OF_HELP | 
					
						
							|  |  |  | remove_remote_media.php [options] | 
					
						
							| 
									
										
										
										
											2021-02-21 09:26:35 +00:00
										 |  |  | Removes remote media. Thumbs will be removed as well. | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-17 02:00:12 +01:00
										 |  |  |     -l --limit [date]  This is a timestamp, format is: yyyy-mm-dd (optional time hh:mm:ss may be provided) | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | END_OF_HELP; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 01:03:09 +01:00
										 |  |  | require_once INSTALLDIR . '/scripts/commandline.inc'; | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | $quiet = have_option('q', 'quiet'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-17 02:00:12 +01:00
										 |  |  | if (!have_option('l', 'limit')) { | 
					
						
							| 
									
										
										
										
											2019-04-23 22:11:29 +01:00
										 |  |  |     echo "You must provide a limit!\n\n"; | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  |     show_help(); | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-04-17 02:00:12 +01:00
										 |  |  | $max_date = get_option_value('l', 'limit'); | 
					
						
							|  |  |  | if (empty($max_date)) { | 
					
						
							|  |  |  |     echo "Invalid empty limit!"; | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | $fn = new DB_DataObject(); | 
					
						
							| 
									
										
										
										
											2020-08-27 11:15:39 +03:00
										 |  |  | $fn->query(sprintf( | 
					
						
							|  |  |  |     <<<'END' | 
					
						
							|  |  |  |     SELECT file_to_post.file_id | 
					
						
							|  |  |  |       FROM file_to_post | 
					
						
							|  |  |  |       INNER JOIN file ON file_to_post.file_id = file.id | 
					
						
							|  |  |  |       INNER JOIN notice ON file_to_post.post_id = notice.id | 
					
						
							| 
									
										
										
										
											2021-07-16 12:41:51 +01:00
										 |  |  |       WHERE notice.is_local = 0 AND notice.modified <= '%1$s' | 
					
						
							| 
									
										
										
										
											2020-08-27 11:15:39 +03:00
										 |  |  |       GROUP BY file_to_post.file_id | 
					
						
							|  |  |  |       ORDER BY MAX(notice.modified) | 
					
						
							|  |  |  |     END, | 
					
						
							|  |  |  |     $fn->escape($max_date) | 
					
						
							|  |  |  | )); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-09 16:54:10 +01:00
										 |  |  | while ($fn->fetch()) { | 
					
						
							|  |  |  |     $file = File::getByID($fn->file_id); | 
					
						
							|  |  |  |     $file_info_id = $file->getID(); | 
					
						
							|  |  |  |     // Delete current file
 | 
					
						
							|  |  |  |     $file->delete(); | 
					
						
							|  |  |  |     if (!$quiet) { | 
					
						
							|  |  |  |         echo "Deleted file with id: {$file_info_id}\n"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |