Plugin Directory

Changeset 1738572


Ignore:
Timestamp:
09/29/2017 06:21:18 PM (8 years ago)
Author:
alim511
Message:

Add ability to choose file extensions on Settings tab

Location:
amw-clear-upload-folder/trunk
Files:
2 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • amw-clear-upload-folder/trunk/README.txt

    r1737873 r1738572  
    1616<strong>
    1717Before using this plugin, please make sure that you BACKUP 'upload' folder. This is the most important step!
     18Also do not forget Rescan Images every time you change settings
    1819</strong>
    1920
     
    9798== Changelog ==
    9899
     100= 1.0.7 =
     101* Add ability to choose file extensions on Settings tab.
     102
    99103= 1.0.6 =
    100104* Regex improvement.
     
    122126== Upgrade Notice ==
    123127
     128= 1.0.7 =
     129Add ability to choose file extensions on Settings tab.
     130
    124131= 1.0.6 =
    125132Regex improvement.
  • amw-clear-upload-folder/trunk/amw-clear-upload-folder.php

    r1737867 r1738572  
    44Plugin URI: https://wordpress.org/plugins/amw-clear-upload-folder/
    55Description: Removes unused files from the 'uploads' folder
    6 Version: 1.0.6
     6Version: 1.0.7
    77Author: Alimov Dmitriy
    88Author URI: https://www.facebook.com/alimov.dmitriy.me
     
    3636 * Define constants
    3737 * */
    38 define('AWM_CUF_VERSION', '1.0.6');
     38define('AWM_CUF_VERSION', '1.0.7');
    3939define('AWM_CUF_SITE_URL', $_SERVER['SERVER_NAME']);
    4040define('AWM_CUF_URL', plugin_dir_url(__FILE__));
  • amw-clear-upload-folder/trunk/includes/AMVCUFClass.php

    r1737867 r1738572  
    77    function __construct(){
    88        $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');
    918    }
    1019
     
    128137
    129138        if (false === $serverFilesArr) {
     139            $cufSettings = new AMVCUFSettingsClass();
    130140            $serverFilesArr = array();
     141            $extArr = $cufSettings->getSettings('update_extensions');
     142            $extArr = unserialize($extArr[0]['settings_value']);
     143            $extStr = '{'.implode(',', $extArr).'}';
     144
    131145            foreach($foldersArr as $folder) {
    132146                if($folder['folderPath'] != '\\') {
    133147                    $directory = $folder['fullFolderPath'];
    134                     $images = glob("$directory*.{jpg,jpeg,png,bmp,pdf,webm,mp4,ogg}", GLOB_BRACE);
     148                    $images = glob("$directory*.$extStr", GLOB_BRACE);
    135149
    136150                    foreach($images as $key => $image) {
     
    147161
    148162    /**
    149      * Get files from DB
    150      **/
    151     public function getDBImages() {
    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();
    157171            $postStr = '';
    158172            $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             }
    166173
    167174            $sqlPost = $wpdb->get_results(
    168                 "SELECT guid FROM wp_posts WHERE post_type = 'attachment' AND guid LIKE '%".AWM_CUF_SITE_URL."%' ".$postStr, ARRAY_A
     175                "SELECT guid FROM wp_posts WHERE post_type = 'attachment' AND guid LIKE '%".AWM_CUF_SITE_URL."%' ", ARRAY_A
    169176            );
    170177            $sqlPostMeta = $wpdb->get_results(
    171                 "SELECT meta_value FROM wp_postmeta WHERE meta_value LIKE '%".AWM_CUF_SITE_URL."%' ".$postMetaStr, ARRAY_A
     178                "SELECT meta_value FROM wp_postmeta WHERE meta_value LIKE '%".AWM_CUF_SITE_URL."%' ", ARRAY_A
    172179            );
    173180
    174181            if(!empty($sqlPost)) {
    175182                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]);
    182185                }
    183186            }
     
    185188            if(!empty($sqlPostMeta)) {
    186189                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;
    200239    }
    201240
     
    239278            );
    240279            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();
    244281                return true;
    245282            }
     
    259296                );
    260297                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();
    264299                    return true;
    265300                }
     
    315350     **/
    316351    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);
    318353//        preg_match('/\/([a-zA-Z0-9_-]*)\./', $string, $stringPart);
    319354        preg_match('/(\d+)(x|X)(\d+)$/', $stringPart[1], $fileName);
  • amw-clear-upload-folder/trunk/includes/AMVCUFSettingsClass.php

    r1736360 r1738572  
    66
    77    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));
    1426        }
    1527    }
     
    3143    }
    3244
     45    /**
     46     * Update settings from the database
     47     **/
    3348    public function updateSettings($postArray) {
    3449        global $wpdb;
     
    3954
    4055        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
    4170            $sql = $wpdb->query(
    4271                "UPDATE `wp_amv_settings` SET settings_value = '$value' WHERE settings_name = '$name'"
     
    5180        }
    5281    }
     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    }
    53111}
  • amw-clear-upload-folder/trunk/includes/admin.php

    r1736360 r1738572  
    109109                                    $checkedThumbs = '';
    110110                                    $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') {
    114114                                            $checkedThumbs = 'checked';
    115115                                            $valueThumbs = 'Yes';
     
    125125                            </td>
    126126                        </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>
    127148                    </tbody>
    128149                </table>
  • amw-clear-upload-folder/trunk/includes/includes.php

    r1736360 r1738572  
    3737        wp_enqueue_script('bootstrapJS', AWM_CUF_URL.'assets/js/bootstrap.js', array('jquery'));
    3838        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'));
    4041
    4142        wp_enqueue_style('bootstrapCSS', AWM_CUF_URL.'assets/css/bootstrap.css');
     
    6263add_action('wp_ajax_update_thumbs'       , 'AMVCUFUpdateThumbs');
    6364add_action('wp_ajax_nopriv_update_thumbs', 'AMVCUFUpdateThumbs');
     65
     66add_action('wp_ajax_update_extensions'       , 'AMVCUFUpdateExtensions');
     67add_action('wp_ajax_nopriv_update_extensions', 'AMVCUFUpdateExtensions');
    6468
    6569function AMVCUFAddIgnoredFolder() {
     
    212216    }
    213217}
     218
     219function 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.