Changeset 1738572
- Timestamp:
- 09/29/2017 06:21:18 PM (8 years ago)
- Location:
- amw-clear-upload-folder/trunk
- Files:
-
- 2 added
- 1 deleted
- 6 edited
-
README.txt (modified) (3 diffs)
-
amw-clear-upload-folder.php (modified) (2 diffs)
-
assets/js/amw-admin.js (added)
-
assets/js/amw-clear-upload-folder.js (deleted)
-
assets/js/amw-settings.js (added)
-
includes/AMVCUFClass.php (modified) (7 diffs)
-
includes/AMVCUFSettingsClass.php (modified) (4 diffs)
-
includes/admin.php (modified) (2 diffs)
-
includes/includes.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
amw-clear-upload-folder/trunk/README.txt
r1737873 r1738572 16 16 <strong> 17 17 Before using this plugin, please make sure that you BACKUP 'upload' folder. This is the most important step! 18 Also do not forget Rescan Images every time you change settings 18 19 </strong> 19 20 … … 97 98 == Changelog == 98 99 100 = 1.0.7 = 101 * Add ability to choose file extensions on Settings tab. 102 99 103 = 1.0.6 = 100 104 * Regex improvement. … … 122 126 == Upgrade Notice == 123 127 128 = 1.0.7 = 129 Add ability to choose file extensions on Settings tab. 130 124 131 = 1.0.6 = 125 132 Regex improvement. -
amw-clear-upload-folder/trunk/amw-clear-upload-folder.php
r1737867 r1738572 4 4 Plugin URI: https://wordpress.org/plugins/amw-clear-upload-folder/ 5 5 Description: Removes unused files from the 'uploads' folder 6 Version: 1.0. 66 Version: 1.0.7 7 7 Author: Alimov Dmitriy 8 8 Author URI: https://www.facebook.com/alimov.dmitriy.me … … 36 36 * Define constants 37 37 * */ 38 define('AWM_CUF_VERSION', '1.0. 6');38 define('AWM_CUF_VERSION', '1.0.7'); 39 39 define('AWM_CUF_SITE_URL', $_SERVER['SERVER_NAME']); 40 40 define('AWM_CUF_URL', plugin_dir_url(__FILE__)); -
amw-clear-upload-folder/trunk/includes/AMVCUFClass.php
r1737867 r1738572 7 7 function __construct(){ 8 8 $this->checkDBTable(); 9 } 10 11 /** 12 * Clear transient caches 13 **/ 14 public function cleanTransient() { 15 delete_transient('db_files_names_array'); 16 delete_transient('server_files_names_array'); 17 delete_transient('server_dir_names_array'); 9 18 } 10 19 … … 128 137 129 138 if (false === $serverFilesArr) { 139 $cufSettings = new AMVCUFSettingsClass(); 130 140 $serverFilesArr = array(); 141 $extArr = $cufSettings->getSettings('update_extensions'); 142 $extArr = unserialize($extArr[0]['settings_value']); 143 $extStr = '{'.implode(',', $extArr).'}'; 144 131 145 foreach($foldersArr as $folder) { 132 146 if($folder['folderPath'] != '\\') { 133 147 $directory = $folder['fullFolderPath']; 134 $images = glob("$directory*. {jpg,jpeg,png,bmp,pdf,webm,mp4,ogg}", GLOB_BRACE);148 $images = glob("$directory*.$extStr", GLOB_BRACE); 135 149 136 150 foreach($images as $key => $image) { … … 147 161 148 162 /** 149 * Get files from DB150 **/ 151 public function get DBImages() {152 global $wpdb;153 $imgDBArr = get_transient('db_files_names_array'); 154 155 if(false === $imgDBArr) {156 $ imgDBArr = array();163 * Get all files from DB 164 **/ 165 public function getAllDBFiles() { 166 $allDBArr = get_transient('all_db_files_names_array'); 167 168 if(false === $allDBArr) { 169 global $wpdb; 170 $allDBArr = array(); 157 171 $postStr = ''; 158 172 $postMetaStr = ''; 159 $extArr = array('jpg', 'jpeg', 'png', 'bmp', 'pdf', 'webm', 'mp4', 'ogg');160 $ignoredFoldersArr = $this->getIgnoredFolders();161 162 foreach($ignoredFoldersArr as $ignoredFolder) {163 $postStr .= 'AND guid NOT LIKE "%'.$ignoredFolder['folder_name'].'%" ';164 $postMetaStr .= 'AND meta_value NOT LIKE "%'.$ignoredFolder['folder_name'].'%" ';165 }166 173 167 174 $sqlPost = $wpdb->get_results( 168 "SELECT guid FROM wp_posts WHERE post_type = 'attachment' AND guid LIKE '%".AWM_CUF_SITE_URL."%' " .$postStr, ARRAY_A175 "SELECT guid FROM wp_posts WHERE post_type = 'attachment' AND guid LIKE '%".AWM_CUF_SITE_URL."%' ", ARRAY_A 169 176 ); 170 177 $sqlPostMeta = $wpdb->get_results( 171 "SELECT meta_value FROM wp_postmeta WHERE meta_value LIKE '%".AWM_CUF_SITE_URL."%' " .$postMetaStr, ARRAY_A178 "SELECT meta_value FROM wp_postmeta WHERE meta_value LIKE '%".AWM_CUF_SITE_URL."%' ", ARRAY_A 172 179 ); 173 180 174 181 if(!empty($sqlPost)) { 175 182 foreach($sqlPost as $img) { 176 $fileParts = pathinfo($img['guid']); 177 178 if (in_array($fileParts['extension'], $extArr)){ 179 $imgUrl = explode('/wp-content/uploads', $img['guid']); 180 array_push($imgDBArr, $imgUrl[1]); 181 } 183 $imgUrl = explode('/wp-content/uploads', $img['guid']); 184 array_push($allDBArr, $imgUrl[1]); 182 185 } 183 186 } … … 185 188 if(!empty($sqlPostMeta)) { 186 189 foreach($sqlPostMeta as $img) { 187 $filePartsMeta = pathinfo($img['meta_value']); 188 189 if (in_array($filePartsMeta['extension'], $extArr)){ 190 $imgUrl = explode('/wp-content/uploads', $img['meta_value']); 191 array_push($imgDBArr, $imgUrl[1]); 192 } 193 } 194 } 195 196 set_transient('db_files_names_array', $imgDBArr, 12 * HOUR_IN_SECONDS); 197 } 198 199 return $imgDBArr; 190 $imgUrl = explode('/wp-content/uploads', $img['meta_value']); 191 array_push($allDBArr, $imgUrl[1]); 192 } 193 } 194 195 set_transient('all_db_files_names_array', $allDBArr, 12 * HOUR_IN_SECONDS); 196 } 197 198 return $allDBArr; 199 } 200 201 /** 202 * Get files from DB 203 **/ 204 public function getDBImages() { 205 $noIgnoredFoldersFilesArr = get_transient('db_files_names_array'); 206 207 if(false === $noIgnoredFoldersFilesArr) { 208 $filesDBArr = $this->getAllDBFiles(); 209 210 if(!empty($filesDBArr)) { 211 $cufSettings = new AMVCUFSettingsClass(); 212 $postStr = ''; 213 $postMetaStr = ''; 214 $noIgnoredFoldersFilesArr = array(); 215 $extArr = $cufSettings->getSettings('update_extensions'); 216 $extArr = unserialize($extArr[0]['settings_value']); 217 $ignoredFoldersArr = $this->getIgnoredFolders(); 218 219 foreach($filesDBArr as $file) { 220 $exist = false; 221 foreach($ignoredFoldersArr as $ignoredFolder) { 222 if(strpos($file, $ignoredFolder['folder_name']) !== false) { 223 $exist = true; 224 } 225 } 226 if(!$exist) { 227 $fileParts = pathinfo($file); 228 if (in_array($fileParts['extension'], $extArr)){ 229 array_push($noIgnoredFoldersFilesArr, $file); 230 } 231 } 232 } 233 } 234 235 set_transient('db_files_names_array', $noIgnoredFoldersFilesArr, 12 * HOUR_IN_SECONDS); 236 } 237 238 return $noIgnoredFoldersFilesArr; 200 239 } 201 240 … … 239 278 ); 240 279 if($sql) { 241 delete_transient('db_files_names_array'); 242 delete_transient('server_files_names_array'); 243 delete_transient('server_dir_names_array'); 280 $this->cleanTransient(); 244 281 return true; 245 282 } … … 259 296 ); 260 297 if($sql) { 261 delete_transient('db_files_names_array'); 262 delete_transient('server_files_names_array'); 263 delete_transient('server_dir_names_array'); 298 $this->cleanTransient(); 264 299 return true; 265 300 } … … 315 350 **/ 316 351 public function isThumbnailsExist($string, $arr) { 317 preg_match('/\/([a-zA-Z0-9_- \D]*)\./', $string, $stringPart);352 preg_match('/\/([a-zA-Z0-9_-—\D]*)\./', $string, $stringPart); 318 353 // preg_match('/\/([a-zA-Z0-9_-]*)\./', $string, $stringPart); 319 354 preg_match('/(\d+)(x|X)(\d+)$/', $stringPart[1], $fileName); -
amw-clear-upload-folder/trunk/includes/AMVCUFSettingsClass.php
r1736360 r1738572 6 6 7 7 function __construct(){ 8 $settings = $this->getSettings('update_thumbs'); 9 if(empty($settings)) { 10 global $wpdb; 11 $wpdb->query( 12 "INSERT INTO `wp_amv_settings` (`settings_name`, `settings_value`) VALUES ('update_thumbs', 'false')" 13 ); 8 $thumbs = $this->getSettings('update_thumbs'); 9 $extensions = $this->getSettings('update_extensions'); 10 $allExtensions = $this->getSettings('all_extensions'); 11 12 if(empty($thumbs)) { 13 $this->updateSettings(array('action' => 'update_thumbs', 'value' => 'false')); 14 } 15 16 if(empty($allExtensions)) { 17 $extData = serialize($this->getExtensions('arr')); 18 $this->updateSettings(array('action' => 'all_extensions', 'value' => $extData)); 19 } 20 21 if(empty($extensions)) { 22 if(empty($extData)) { 23 $extData = serialize($this->getExtensions('arr')); 24 } 25 $this->updateSettings(array('action' => 'update_extensions', 'value' => $extData)); 14 26 } 15 27 } … … 31 43 } 32 44 45 /** 46 * Update settings from the database 47 **/ 33 48 public function updateSettings($postArray) { 34 49 global $wpdb; … … 39 54 40 55 if(!empty($settingsArr[0])) { 56 if($name == 'update_extensions') { 57 $tempExtArr = unserialize($settingsArr[0]['settings_value']); 58 59 if(!in_array($value, $tempExtArr)) { 60 array_push($tempExtArr, $value); 61 } else { 62 if(($key = array_search($value, $tempExtArr)) !== false) { 63 unset($tempExtArr[$key]); 64 } 65 } 66 67 $value = serialize($tempExtArr); 68 } 69 41 70 $sql = $wpdb->query( 42 71 "UPDATE `wp_amv_settings` SET settings_value = '$value' WHERE settings_name = '$name'" … … 51 80 } 52 81 } 82 83 /** 84 * Get files extensions from db 85 * $outputFormat: str or arr 86 **/ 87 public function getExtensions($outputFormat) { 88 $cuf = new AMVCUFClass(); 89 $allFilesArr = $cuf->getAllDBFiles(); 90 $extArr = array(); 91 $extStr = ''; 92 93 foreach($allFilesArr as $file) { 94 $fileParts = pathinfo($file); 95 if (!in_array($fileParts['extension'], $extArr) && !empty($fileParts['extension'])){ 96 if(!preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $fileParts['extension'])) { 97 array_push($extArr, $fileParts['extension']); 98 $extStr .= $fileParts['extension'] . ', '; 99 } 100 } 101 } 102 103 $this->updateSettings(array('action' => 'all_extensions', 'value' => serialize($extArr))); 104 105 if($outputFormat == 'arr') { 106 return $extArr; 107 } else if ($outputFormat == 'str') { 108 return $extStr; 109 } 110 } 53 111 } -
amw-clear-upload-folder/trunk/includes/admin.php
r1736360 r1738572 109 109 $checkedThumbs = ''; 110 110 $valueThumbs = 'No'; 111 $ settingsArr = $cufSettings->getSettings('update_thumbs');112 if(!empty($ settingsArr[0])) {113 if($ settingsArr[0]['settings_value'] == 'true') {111 $thumbsArr = $cufSettings->getSettings('update_thumbs'); 112 if(!empty($thumbsArr[0])) { 113 if($thumbsArr[0]['settings_value'] == 'true') { 114 114 $checkedThumbs = 'checked'; 115 115 $valueThumbs = 'Yes'; … … 125 125 </td> 126 126 </tr> 127 <tr> 128 <td>File extensions to search</td> 129 <td> 130 <?php 131 $extensionsArr = $cufSettings->getSettings('all_extensions'); 132 $extensionsArrVal = unserialize($extensionsArr[0]['settings_value']); 133 134 $serachedExtensionsArr = $cufSettings->getSettings('update_extensions'); 135 $serachedExtensionsArrVal = unserialize($serachedExtensionsArr[0]['settings_value']); 136 137 foreach($extensionsArrVal as $ext) { 138 $checked = ''; 139 if(in_array($ext, $serachedExtensionsArrVal)) { 140 $checked = 'checked'; 141 } ?> 142 <label class="extensions-checkbox checkbox"> 143 <input type="checkbox" value="<?php echo $ext; ?>" <?php echo $checked; ?>> <?php echo $ext; ?> 144 </label> 145 <?php } ?> 146 </td> 147 </tr> 127 148 </tbody> 128 149 </table> -
amw-clear-upload-folder/trunk/includes/includes.php
r1736360 r1738572 37 37 wp_enqueue_script('bootstrapJS', AWM_CUF_URL.'assets/js/bootstrap.js', array('jquery')); 38 38 wp_enqueue_script('sweetalertJS', AWM_CUF_URL.'assets/js/sweetalert.min.js', array('jquery')); 39 wp_enqueue_script('amwClearUploadFolderJS', AWM_CUF_URL.'assets/js/amw-clear-upload-folder.js', array('jquery', 'sweetalertJS')); 39 wp_enqueue_script('amwAdminJS', AWM_CUF_URL.'assets/js/amw-admin.js', array('jquery', 'sweetalertJS')); 40 wp_enqueue_script('amwSettingsJS', AWM_CUF_URL.'assets/js/amw-settings.js', array('jquery', 'sweetalertJS')); 40 41 41 42 wp_enqueue_style('bootstrapCSS', AWM_CUF_URL.'assets/css/bootstrap.css'); … … 62 63 add_action('wp_ajax_update_thumbs' , 'AMVCUFUpdateThumbs'); 63 64 add_action('wp_ajax_nopriv_update_thumbs', 'AMVCUFUpdateThumbs'); 65 66 add_action('wp_ajax_update_extensions' , 'AMVCUFUpdateExtensions'); 67 add_action('wp_ajax_nopriv_update_extensions', 'AMVCUFUpdateExtensions'); 64 68 65 69 function AMVCUFAddIgnoredFolder() { … … 212 216 } 213 217 } 218 219 function AMVCUFUpdateExtensions() { 220 $postArray = (filter_input_array(INPUT_POST, $_POST)); 221 222 if(isset($postArray['action']) && $postArray['action'] == 'update_extensions') { 223 $cufSettings = new AMVCUFSettingsClass(); 224 $result = $cufSettings->updateSettings($postArray); 225 if(!empty($result)) { 226 $output = json_encode( 227 array( 228 'status' => 'success', 229 'status_code' => 200, 230 'result' => $result 231 ) 232 ); 233 die($output); 234 } else if(empty($result)) { 235 $output = json_encode( 236 array( 237 'status' => 'success', 238 'status_code' => 200, 239 'result' => $result 240 ) 241 ); 242 die($output); 243 } else { 244 array( 245 'status' => 'fail', 246 'status_code' => 500 247 ); 248 die($output); 249 } 250 } 251 }
Note: See TracChangeset
for help on using the changeset viewer.