WordPress.org

Plugin Directory

Changeset 1647962


Ignore:
Timestamp:
04/29/17 10:09:06 (6 months ago)
Author:
thoefter
Message:

2.24 update

Location:
cms-commander-client
Files:
127 added
13 edited

Legend:

Unmodified
Added
Removed
  • cms-commander-client/trunk/functions.php

    r1473100 r1647962  
    11531153}  
    11541154 
     1155function cmsc_set_plugin_priority() 
     1156{ 
     1157    $pluginBasename = 'cms-commander-client/init.php'; 
     1158    $activePlugins  = get_option('active_plugins'); 
     1159 
     1160    if (reset($activePlugins) === $pluginBasename) { 
     1161        return; 
     1162    } 
     1163 
     1164    $workerKey = array_search($pluginBasename, $activePlugins); 
     1165 
     1166    if ($workerKey === false) { 
     1167        return; 
     1168    } 
     1169 
     1170    unset($activePlugins[$workerKey]); 
     1171    array_unshift($activePlugins, $pluginBasename); 
     1172    update_option('active_plugins', array_values($activePlugins)); 
     1173} 
     1174 
    11551175if( !function_exists ( 'cmsc_change_comment_status' )) { 
    11561176    function cmsc_change_comment_status($params) 
  • cms-commander-client/trunk/init.php

    r1480528 r1647962  
    55Description: Manage all your Wordpress websites remotely and enhance your articles with targeted images and ads. Visit <a href="http://cmscommander.com">CMSCommander.com</a> to sign up. 
    66Author: CMS Commander 
    7 Version: 2.23 
     7Version: 2.24 
    88Author URI: http://cmscommander.com 
    99Text Domain: cms-commander-client 
     
    2323if (!defined('ABSPATH')) { 
    2424    exit; 
     25} 
     26 
     27if (!defined('MAX_PRIORITY_HOOK')) { 
     28    define('MAX_PRIORITY_HOOK', 2147483647); 
    2529} 
    2630  
     
    232236    function cmsc_init() { 
    233237     
    234         $GLOBALS['CMSC_WORKER_VERSION']  = '2.23';define('CMSC_WORKER_VERSION', '2.23');     
     238        $GLOBALS['CMSC_WORKER_VERSION']  = '2.24';define('CMSC_WORKER_VERSION', '2.24');     
    235239 
    236240        // Ensure PHP version compatibility. 
     
    284288            remove_action( 'login_init', 'send_frame_options_header'); 
    285289        }    
    286  
     290         
     291        cmsc_set_plugin_priority(); 
    287292    } 
    288293     
  • cms-commander-client/trunk/lib/CMSC/Backup.php

    r1424857 r1647962  
    1414    exit; 
    1515endif; 
    16  
    17 $zip_errors = array( 
    18     'No error', 
    19     'No error', 
    20     'Unexpected end of zip file', 
    21     'A generic error in the zipfile format was detected', 
    22     'zip was unable to allocate itself memory', 
    23     'A severe error in the zipfile format was detected', 
    24     'Entry too large to be split with zipsplit', 
    25     'Invalid comment format', 
    26     'zip -T failed or out of memory', 
    27     'The user aborted zip prematurely', 
    28     'zip encountered an error while using a temp file. Please check if there is enough disk space', 
    29     'Read or seek error', 
    30     'zip has nothing to do', 
    31     'Missing or empty zip file', 
    32     'Error writing to a file. Please check if there is enough disk space', 
    33     'zip was unable to create a file to write to', 
    34     'bad command line parameters', 
    35     'no error', 
    36     'zip could not open a specified file to read' 
    37 ); 
    38 $unzip_errors = array( 
    39     'No error', 
    40     'One or more warning errors were encountered, but processing completed successfully anyway', 
    41     'A generic error in the zipfile format was detected', 
    42     'A severe error in the zipfile format was detected.', 
    43     'unzip was unable to allocate itself memory.', 
    44     'unzip was unable to allocate memory, or encountered an encryption error', 
    45     'unzip was unable to allocate memory during decompression to disk', 
    46     'unzip was unable allocate memory during in-memory decompression', 
    47     'unused', 
    48     'The specified zipfiles were not found', 
    49     'Bad command line parameters', 
    50     'No matching files were found', 
    51     50 => 'The disk is (or was) full during extraction', 
    52     51 => 'The end of the ZIP archive was encountered prematurely.', 
    53     80 => 'The user aborted unzip prematurely.', 
    54     81 => 'Testing or extraction of one or more files failed due to unsupported compression methods or unsupported decryption.', 
    55     82 => 'No files were found due to bad decryption password(s)' 
    56 ); 
    5716 
    5817/** 
     
    7332    public $dropbox; 
    7433    public $google_drive; 
     34     
     35    private static $zip_errors = array( 
     36        0   => 'No error', 
     37        1   => 'No error', 
     38        2   => 'Unexpected end of zip file', 
     39        3   => 'A generic error in the zipfile format was detected', 
     40        4   => 'zip was unable to allocate itself memory', 
     41        5   => 'A severe error in the zipfile format was detected', 
     42        6   => 'Entry too large to be split with zipsplit', 
     43        7   => 'Invalid comment format', 
     44        8   => 'zip -T failed or out of memory', 
     45        9   => 'The user aborted zip prematurely', 
     46        10  => 'zip encountered an error while using a temp file. Please check if there is enough disk space', 
     47        11  => 'Read or seek error', 
     48        12  => 'zip has nothing to do', 
     49        13  => 'Missing or empty zip file', 
     50        14  => 'Error writing to a file. Please check if there is enough disk space', 
     51        15  => 'zip was unable to create a file to write to', 
     52        16  => 'bad command line parameters', 
     53        17  => 'no error', 
     54        18  => 'zip could not open a specified file to read', 
     55        159 => 'File size limit exceeded', 
     56    ); 
     57 
     58    private static $unzip_errors = array( 
     59        0  => 'No error', 
     60        1  => 'One or more warning errors were encountered, but processing completed successfully anyway', 
     61        2  => 'A generic error in the zipfile format was detected', 
     62        3  => 'A severe error in the zipfile format was detected.', 
     63        4  => 'unzip was unable to allocate itself memory.', 
     64        5  => 'unzip was unable to allocate memory, or encountered an encryption error', 
     65        6  => 'unzip was unable to allocate memory during decompression to disk', 
     66        7  => 'unzip was unable allocate memory during in-memory decompression', 
     67        8  => 'unused', 
     68        9  => 'The specified zipfiles were not found', 
     69        10 => 'Bad command line parameters', 
     70        11 => 'No matching files were found', 
     71        50 => 'The disk is (or was) full during extraction', 
     72        51 => 'The end of the ZIP archive was encountered prematurely.', 
     73        80 => 'The user aborted unzip prematurely.', 
     74        81 => 'Testing or extraction of one or more files failed due to unsupported compression methods or unsupported decryption.', 
     75        82 => 'No files were found due to bad decryption password(s)', 
     76    );   
    7577     
    7678    /** 
     
    814816     */ 
    815817    function pclzip_backup_db($task_name, $backup_file) { 
     818     
    816819        $disable_comp = $this->tasks[$task_name]['task_args']['disable_comp']; 
    817820        define('PCLZIP_TEMPORARY_DIR', CMSC_BACKUP_DIR . '/'); 
     
    16881691        $result = $this->cmsc_exec($command); 
    16891692        ob_get_clean(); 
     1693         
    16901694        if (!$result) { 
    1691             $this->_log('DB restore fallback to PHP'); 
     1695         
     1696            $brace     = (substr(PHP_OS, 0, 3) == 'WIN') ? '"' : ''; 
     1697            $command   = $brace . $paths['mysql'] . $brace . ' --host="' . DB_HOST . '" --user="' . DB_USER . '" --password="' . DB_PASSWORD . '" --default-character-set="utf8" ' . DB_NAME . ' < ' . $brace . $file_name . $brace; 
     1698 
     1699            ob_start(); 
     1700            $result = $this->cmsc_exec($command); 
     1701            ob_get_clean(); 
     1702 
     1703            if (!$result) { 
     1704                //try php 
     1705                 
     1706                $this->_log('DB restore fallback to PHP'); 
     1707                return $this->restore_db_php($file_name); 
     1708            }        
     1709 
    16921710            //try php 
    1693             return $this->restore_db_php($file_name); 
     1711            //return $this->restore_db_php($file_name); 
    16941712        } 
    16951713         
     
    17051723     */  
    17061724    function restore_db_php($file_name) { 
     1725     
    17071726        global $wpdb; 
    17081727 
     
    17511770     */ 
    17521771    function get_table_prefix() { 
     1772     
    17531773        $lines = file(ABSPATH . 'wp-config.php'); 
    17541774        foreach ($lines as $line) { 
     
    17571777                preg_match($pattern, $line, $matches); 
    17581778                $prefix = substr($matches[0], 1); 
     1779                 
    17591780                return $prefix; 
    17601781                break; 
     
    33223343            } 
    33233344            @unlink(CMSC_BACKUP_DIR.'/cmsc_db/index.php'); 
     3345            @unlink(CMSC_BACKUP_DIR.'/cmsc_db/info.json');           
    33243346            @rmdir(CMSC_DB_DIR); 
    33253347        } 
     
    34103432         
    34113433        if ($backup_file && file_exists($backup_file)) { 
    3412             //FTP, Amazon S3, Dropbox or Google Drive 
    3413              
     3434            //FTP, Amazon S3, Dropbox or Google Drive            
    34143435            if (isset($account_info['cmsc_ftp']) && !empty($account_info['cmsc_ftp'])) { 
    34153436                $this->update_status($task_name, $this->statuses['ftp']); 
     
    35743595     */ 
    35753596    function update_status($task_name, $status, $completed = false) { 
     3597     
    35763598        if ($task_name != 'Backup Now') { 
    35773599            $tasks = $this->tasks; 
  • cms-commander-client/trunk/lib/CMSC/Comment.php

    r1157808 r1647962  
    3939     
    4040    function get_comments($args){ 
     41     
    4142        global $wpdb; 
    4243         
     
    4546        extract($args); 
    4647         
    47         if(!empty($filter_comments)) 
    48         { 
    49             $where.=" AND (c.comment_author LIKE '%".mysql_real_escape_string($filter_comments)."%' OR c.comment_content LIKE '%".mysql_real_escape_string($filter_comments)."%')"; 
    50         } 
     48        if (!empty($filter_comments)) { 
     49            $where .= " AND (c.comment_author LIKE '%".esc_sql($filter_comments)."%' OR c.comment_content LIKE '%".esc_sql($filter_comments)."%')"; 
     50        } 
    5151        $comment_array = array(); 
    5252        $comment_statuses = array('approved', 'pending', 'spam', 'trash'); 
    53         foreach ($args as $checkbox => $checkbox_val) 
    54         { 
     53        foreach ($args as $checkbox => $checkbox_val) { 
    5554            if($checkbox_val=="on") { 
    5655                $status_val = str_replace("cmsc_get_comments_","",$checkbox); 
     
    7675        $query_comments = $wpdb->get_results("SELECT c.comment_ID, c.comment_post_ID, c.comment_author, c.comment_author_email, c.comment_author_url, c.comment_author_IP, c.comment_date, c.comment_content, c.comment_approved, c.comment_parent, p.post_title, p.post_type, p.guid FROM ".$sql_query." ORDER BY c.comment_date DESC LIMIT 500"); 
    7776        $comments = array(); 
    78         foreach ( $query_comments as $comments_info )  
    79         { 
     77        foreach ( $query_comments as $comments_info ) { 
    8078            $comment_total_approved = 0; 
    8179            if(isset($comments_approved[$comments_info->comment_post_ID]['approved'])){ 
     
    116114     
    117115    function comment_total(){ 
     116 
    118117        global $wpdb; 
    119118        $totals = array(); 
     
    138137     
    139138    function action_comment($args){ 
     139     
    140140        $docomaction = $args['docomaction']; 
    141141        $comment_id  = $args['comment_id']; 
     
    162162     
    163163    function bulk_action_comments($args){ 
     164     
    164165        $docomaction = $args['docomaction']; 
    165166 
     
    184185     
    185186    function reply_comment($args){ 
    186         global $wpdb, $current_user; 
    187         extract($args); 
    188         $comments = array(); 
     187     
     188     
     189        global $wpdb, $current_user; 
     190 
     191        $post_id    = $args['post_id']; 
     192        $comment_id = $args['comment_id']; 
     193        $reply_text = $args['reply_text']; 
     194 
     195        $comments = array(); 
    189196         
    190197        if(!empty($comment_id) && !empty($reply_text)){ 
     
    213220            } 
    214221             
    215             $comments[$lastid] = array( 
    216                 "comment_post_ID" => $post_id, 
    217                 "comment_author" => $admins->user_login, 
    218                 "comment_author_email" => $admins->user_email, 
    219                 "comment_author_url" => $admins->user_url, 
    220                 "comment_author_IP" => $_SERVER['REMOTE_ADDR'], 
    221                 "comment_date" => $now, 
    222                 "comment_content" => htmlspecialchars($reply_text), 
    223                 "comment_approved" => '1', 
    224                 "comment_parent" => $comment_id, 
    225                 "comment_parent_author" => $comment_parent_author, 
    226                 "post_title" => htmlspecialchars($select_parent_author_res->post_title), 
    227                 "post_type" => $select_parent_author_res->post_type, 
    228                 "guid" => $select_parent_author_res->guid, 
    229                 "comment_total_approved" => $comment_total_approved, 
    230                 "comment_total_pending" => $comment_total_pending, 
    231             ); 
    232              
    233              
     222            $comments[$lastid] = array( 
     223                "comment_post_ID"        => $post_id, 
     224                "comment_author"         => $admins->user_login, 
     225                "comment_author_email"   => $admins->user_email, 
     226                "comment_author_url"     => $admins->user_url, 
     227                "comment_author_IP"      => $_SERVER['REMOTE_ADDR'], 
     228                "comment_date"           => $now, 
     229                "comment_content"        => htmlspecialchars($reply_text), 
     230                "comment_approved"       => '1', 
     231                "comment_parent"         => $comment_id, 
     232                "comment_parent_author"  => $comment_parent_author, 
     233                "comment_total_approved" => $comment_total_approved, 
     234                "comment_total_pending"  => $comment_total_pending, 
     235            ); 
     236 
     237            if (!empty($select_parent_author_res)) { 
     238                $comments[$lastid] += array( 
     239                    "post_title" => htmlspecialchars($select_parent_author_res->post_title), 
     240                    "post_type"  => $select_parent_author_res->post_type, 
     241                    "guid"       => $select_parent_author_res->guid, 
     242                ); 
     243            } 
    234244        } 
    235245        return $comments; 
  • cms-commander-client/trunk/lib/CMSC/Comments.php

    r1157808 r1647962  
    9393        }            
    9494         
    95         list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = split( '([^0-9])', $comment_date );     
     95        list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = preg_split( '/([^0-9])/', $comment_date );  
    9696        $comment_date = mktime($hour, $minute + rand(0, 59), $second + rand(0, 59), $today_month, $today_day, $today_year); 
    9797        $comment_date=date("Y-m-d H:i:s", $comment_date);        
  • cms-commander-client/trunk/lib/CMSC/Helper.php

    r1424857 r1647962  
    184184    function cmsc_get_transient($option_name) 
    185185    { 
     186        global $wp_version;  
     187     
    186188        if (trim($option_name) == '') { 
    187189            return FALSE; 
    188190        } 
     191         
     192        if (version_compare($wp_version, '3.4', '>')) { 
     193            return get_site_transient($option_name); 
     194        } 
     195         
    189196        if (!empty($this->cmsc_multisite)) { 
    190197            return $this->cmsc_get_sitemeta_transient($option_name); 
     
    198205    function cmsc_delete_transient($option_name) 
    199206    { 
     207        global $wp_version;  
     208     
    200209        if (trim($option_name) == '') { 
    201210            return; 
    202211        } 
     212         
     213        if (version_compare($wp_version, '3.4', '>')) { 
     214            delete_site_transient($option_name); 
     215            return; 
     216        }        
    203217 
    204218        delete_option('_site_transient_'.$option_name); 
     
    215229     
    216230    function cmsc_set_sitemeta_transient($option_name, $option_value){ 
     231     
    217232        global $wpdb; 
    218233        $option_name = '_site_transient_'. $option_name; 
     
    384399    } 
    385400     
    386     function _secure_data($data = false){ 
    387         if($data == false) 
    388             return false; 
    389              
     401    function _secure_data($data = false) 
     402    { 
     403        if ($data == false) { 
     404            return false; 
     405        } 
     406 
     407        $pl_key = $this->get_master_public_key(); 
     408        if (!$pl_key) { 
     409            return false; 
     410        } 
     411 
     412        $secure = ''; 
     413        if (function_exists('openssl_public_decrypt') && !$this->get_random_signature()) { 
     414            if (is_array($data) && !empty($data)) { 
     415                foreach ($data as $input) { 
     416                    openssl_public_decrypt($input, $decrypted, $pl_key); 
     417                    $secure .= $decrypted; 
     418                } 
     419            } else { 
     420                if (is_string($data)) { 
     421                    openssl_public_decrypt($data, $decrypted, $pl_key); 
     422                    $secure = $decrypted; 
     423                } else { 
     424                    $secure = $data; 
     425                } 
     426            } 
     427 
     428            return $secure; 
     429        } 
     430 
     431        return false; 
     432    } 
     433     
     434    function encrypt_data( $data = false, $single = false ){ 
     435     
     436        if (empty($data)) { 
     437            return $data; 
     438        } 
     439         
    390440        $pl_key = $this->get_master_public_key(); 
    391         if (!$pl_key) 
    392             return false; 
    393          
    394         $secure = ''; 
    395         if( function_exists('openssl_public_decrypt') && !$this->get_random_signature() ){ 
    396             if(is_array($data) && !empty($data)){ 
    397                 foreach($data as $input){ 
    398                     openssl_public_decrypt($input, $decrypted, $pl_key); 
    399                     $secure .= $decrypted; 
    400                 } 
    401             } else if ( is_string( $data ) ) { 
    402                 openssl_public_decrypt($data, $decrypted, $pl_key); 
    403                 $secure = $decrypted; 
    404             } else { 
    405                 $secure = $data; 
    406             } 
    407             return $secure; 
    408         } 
    409         return false; 
    410          
    411     } 
    412      
    413     function encrypt_data( $data = false, $single = false ){ 
    414         if( empty($data) ) 
    415             return $data; 
    416          
    417         $pl_key = $this->get_master_public_key(); 
    418         if ( !$pl_key ) 
    419             return false; 
     441        if (!$pl_key) { 
     442            return false; 
     443        } 
    420444         
    421445        $data = serialize( $data ); 
     
    429453                    $crypted .= base64_encode($crypt).'::'; 
    430454                } 
    431             } else 
    432                 openssl_public_encrypt($input, $crypted, $pl_key); 
     455            } else { 
     456                openssl_public_encrypt($data, $crypted, $pl_key); 
     457            } 
    433458        } else { 
    434459            $crypted = base64_encode($data); 
     
    486511                }  
    487512            } 
     513             
    488514            return implode('<br />', $errors); 
    489515        } 
    490516    } 
    491517     
     518    function check_if_pantheon() 
     519    { 
     520        return !empty($_ENV['PANTHEON_ENVIRONMENT']) && $_ENV['PANTHEON_ENVIRONMENT'] !== 'dev'; 
     521    }    
     522     
    492523    function is_server_writable(){ 
     524     
     525        if ($this->check_if_pantheon()) { 
     526            return false; 
     527        } 
     528         
     529        if (!function_exists('get_filesystem_method')) { 
     530            include_once ABSPATH.'wp-admin/includes/file.php'; 
     531        }        
     532     
    493533        if ((!defined('FTP_HOST') || !defined('FTP_USER')) && (get_filesystem_method(array(), false) != 'direct')) { 
    494534            return false; 
  • cms-commander-client/trunk/lib/CMSC/Installer.php

    r1424857 r1647962  
    6363        global $wp_filesystem; 
    6464        extract($params); 
    65          
     65        $network_activate = isset($params['network_activate']) ? $params['network_activate'] : false; 
     66          
    6667        if (!isset($package) || empty($package)) { 
    6768            return array( 
     
    8586            include_once ABSPATH.'wp-admin/includes/class-wp-upgrader.php'; 
    8687        } 
    87      
     88 
     89        /** @handled class */        
    8890        $upgrader_skin = new WP_Upgrader_Skin(); 
    8991        $upgrader_skin->done_header = true; 
     
    107109        } 
    108110         
    109         if ($activate) { 
    110             if ($type == 'plugins') { 
    111                 include_once(ABSPATH . 'wp-admin/includes/plugin.php'); 
    112                 $all_plugins = get_plugins(); 
    113                 foreach ($all_plugins as $plugin_slug => $plugin) { 
    114                     $plugin_dir = preg_split('/\//', $plugin_slug); 
    115                     foreach ($install_info as $key => $install) { 
    116                         if (!$install || is_wp_error($install)) { 
    117                             continue; 
    118                         }     
    119                         if ($install['destination_name'] == $plugin_dir[0]) { 
    120                             $install_info[$key]['activated'] = activate_plugin($plugin_slug, '', false); 
    121                         } 
    122                     } 
    123                 } 
    124             } else { 
    125                 if (count($install_info) == 1) { 
    126                     global $wp_themes; 
    127                     include_once(ABSPATH . 'wp-includes/theme.php'); 
    128  
    129                     $wp_themes = null; 
    130                     unset($wp_themes); //prevent theme data caching              
    131                     if(function_exists('wp_get_themes')){ 
    132                         $all_themes = wp_get_themes(); 
    133                         foreach ($all_themes as $theme_name => $theme_data) { 
    134                             foreach ($install_info as $key => $install) { 
    135                                 if (!$install || is_wp_error($install)) { 
    136                                     continue; 
    137                                 } 
    138                                  
    139                                 if ($theme_data->Template == $install['destination_name']) { 
    140                                     $install_info[$key]['activated'] = switch_theme($theme_data->Template, $theme_data->Stylesheet); 
    141                                 } 
    142                             } 
    143                         } 
    144                     } else {                 
    145                         $all_themes = get_themes(); 
    146                         foreach ($all_themes as $theme_name => $theme_data) { 
    147                             foreach ($install_info as $key => $install) { 
    148                                 if (!$install || is_wp_error($install)) { 
    149                                     continue; 
    150                                 } 
    151                                  
    152                                 if ($theme_data['Template'] == $install['destination_name']) { 
    153                                     $install_info[$key]['activated'] = switch_theme($theme_data['Template'], $theme_data['Stylesheet']); 
    154                                 } 
    155                             } 
    156                         } 
    157                     } 
    158                 } 
    159             } 
    160         }        
     111        if (!empty($activate) && defined('WP_ADMIN') && WP_ADMIN) { 
     112            global $wp_current_filter; 
     113            $wp_current_filter[] = 'load-update-core.php'; 
     114 
     115            if (function_exists('wp_clean_update_cache')) { 
     116                /** @handled function */ 
     117                wp_clean_update_cache(); 
     118            } 
     119 
     120            /** @handled function */ 
     121            wp_update_plugins(); 
     122 
     123            array_pop($wp_current_filter); 
     124 
     125            /** @handled function */ 
     126            set_current_screen(); 
     127            do_action('load-update-core.php'); 
     128 
     129            /** @handled function */ 
     130            wp_version_check(); 
     131 
     132            /** @handled function */ 
     133            wp_version_check(array(), true); 
     134        } 
     135 
     136        $wrongFileType = false; 
     137        if ($type == 'plugins') { 
     138            $wrongFileType = true; 
     139            include_once ABSPATH.'wp-admin/includes/plugin.php'; 
     140            $all_plugins = get_plugins(); 
     141            foreach ($all_plugins as $plugin_slug => $plugin) { 
     142                $plugin_dir = preg_split('/\//', $plugin_slug); 
     143                foreach ($install_info as $key => $install) { 
     144                    if (!$install || is_wp_error($install)) { 
     145                        continue; 
     146                    } 
     147                    if ($install['destination_name'] == $plugin_dir[0]) { 
     148                        $wrongFileType = false; 
     149                        if ($activate) { 
     150                            $install_info[$key]['activated'] = activate_plugin($plugin_slug, '', $network_activate); 
     151                        } 
     152 
     153                        $install_info[$key]['basename']  = $plugin_slug; 
     154                        $install_info[$key]['full_name'] = $plugin['Name']; 
     155                        $install_info[$key]['version']   = $plugin['Version']; 
     156                    } 
     157                } 
     158            } 
     159        } 
     160 
     161        if ($type == 'themes') { 
     162            $wrongFileType = true; 
     163            if (count($install_info) == 1) { 
     164                global $wp_themes; 
     165                include_once ABSPATH.'wp-includes/theme.php'; 
     166 
     167                $wp_themes = null; 
     168                unset($wp_themes); //prevent theme data caching 
     169                if (function_exists('wp_get_themes')) { 
     170                    $all_themes = wp_get_themes(); 
     171                    foreach ($all_themes as $theme_name => $theme_data) { 
     172                        foreach ($install_info as $key => $install) { 
     173                            if (!$install || is_wp_error($install)) { 
     174                                continue; 
     175                            } 
     176 
     177                            if ($theme_data->Template == $install['destination_name']) { 
     178                                $wrongFileType = false; 
     179                                if ($activate) { 
     180                                    $install_info[$key]['activated'] = switch_theme($theme_data->Template, $theme_data->Stylesheet); 
     181                                } 
     182                                $install_info[$key]['full_name'] = $theme_data->name; 
     183                                $install_info[$key]['version']   = $theme_data->version; 
     184                            } 
     185                        } 
     186                    } 
     187                } else { 
     188                    $all_themes = get_themes(); 
     189                    foreach ($all_themes as $theme_name => $theme_data) { 
     190                        foreach ($install_info as $key => $install) { 
     191                            if (!$install || is_wp_error($install)) { 
     192                                continue; 
     193                            } 
     194 
     195                            if ($theme_data['Template'] == $install['destination_name']) { 
     196                                $wrongFileType = false; 
     197                                if ($activate) { 
     198                                    $install_info[$key]['activated'] = switch_theme($theme_data['Template'], $theme_data['Stylesheet']); 
     199                                } 
     200                                $install_info[$key]['full_name'] = $theme_data->name; 
     201                                $install_info[$key]['version']   = $theme_data->version; 
     202                            } 
     203                        } 
     204                    } 
     205                } 
     206            } 
     207        }    
    161208        ob_clean(); 
    162209        $this->cmsc_maintenance_mode(false); 
     
    359406                 
    360407                if (class_exists('WP_Upgrader')) { 
     408                    /** @handled class */                
    361409                    $upgrader_skin              = new WP_Upgrader_Skin(); 
    362410                    $upgrader_skin->done_header = true; 
    363411                     
     412                    /** @handled class */                    
    364413                    $upgrader = new WP_Upgrader($upgrader_skin); 
    365414                     
     
    452501            ); 
    453502        } 
    454          
    455         $this->doPluginUpdateCheck();    
    456         $current = $this->cmsc_get_transient('update_plugins'); 
    457         $versions = array(); 
    458         $return = array(); 
    459          
    460         if (!empty($current)) { 
    461             foreach ($plugins as $plugin => $data) { 
    462                 if (isset($current->checked[$plugin])) { 
    463                     $versions[$current->checked[$plugin]] = $plugin; 
    464                 } 
    465             } 
    466         } 
    467          
    468         if (class_exists('Plugin_Upgrader') && class_exists('Bulk_Plugin_Upgrader_Skin')) { 
     503     
     504        if (!function_exists('wp_update_plugins')) { 
     505            include_once ABSPATH.'wp-includes/update.php'; 
     506        }    
     507 
     508        $return = array();       
     509         
     510        if (class_exists('Plugin_Upgrader')) { 
    469511            /** @handled class */ 
    470512            $upgrader = new Plugin_Upgrader(new Bulk_Plugin_Upgrader_Skin(compact('nonce', 'url'))); 
    471513            $result   = $upgrader->bulk_upgrade(array_keys($plugins)); 
    472514             
    473             if (!function_exists('wp_update_plugins')) { 
    474                 include_once ABSPATH.'wp-includes/update.php'; 
    475             } 
    476              
    477             $this->doPluginUpdateCheck(); 
    478  
    479             $current = $this->cmsc_get_transient('update_plugins'); 
    480             if (!empty($result)) { 
     515            if (!empty($result)) { 
    481516                foreach ($result as $plugin_slug => $plugin_info) { 
    482517                    if (!$plugin_info || is_wp_error($plugin_info)) { 
    483                         $return[$plugin_slug] = $this->cmsc_get_error($plugin_info); 
    484                     } else { 
    485                         if(!empty($result[$plugin_slug]) || (isset($current->checked[$plugin_slug]) && version_compare(array_search($plugin_slug, $versions), $current->checked[$plugin_slug], '<') == true)){ 
    486                             $return[$plugin_slug] = 1; 
    487                         } else { 
    488                             update_option('cmsc_forcerefresh', true); 
    489                             $return[$plugin_slug] = 'Could not refresh upgrade transients, please reload website data'; 
    490                         } 
    491                     } 
    492                 } 
     518                        $return[$plugin_slug] = $this->mmb_get_error($plugin_info); 
     519                        continue; 
     520                    } 
     521 
     522                    $return[$plugin_slug] = 1; 
     523                } 
     524 
    493525                return array( 
    494                     'upgraded' => $return 
     526                    'upgraded' => $return, 
    495527                ); 
    496528            } else { 
    497529                return array( 
    498                     'error' => 'Upgrade failed.' 
     530                    'error' => 'Upgrade failed.', 
    499531                ); 
    500             }    
     532            }    
    501533        } else {         
    502534            return array( 
     
    514546        } 
    515547         
    516         $this->doThemeUpdateCheck(); 
    517         $current = $this->cmsc_get_transient('update_themes'); 
    518         $versions = array(); 
    519         if(!empty($current)){ 
    520             foreach($themes as $theme){ 
    521                 if(isset($current->checked[$theme])){ 
    522                     $versions[$current->checked[$theme]] = $theme; 
    523                 } 
    524             } 
    525         } 
     548        if (!function_exists('wp_update_themes')) { 
     549            include_once ABSPATH.'wp-includes/update.php'; 
     550        }        
     551         
    526552        if (class_exists('Theme_Upgrader') && class_exists('Bulk_Theme_Upgrader_Skin')) { 
    527553            /** @handled class */ 
     
    529555            $result = $upgrader->bulk_upgrade($themes); 
    530556             
    531             if (!function_exists('wp_update_themes')) { 
    532                 include_once ABSPATH.'wp-includes/update.php'; 
    533             } 
    534              
    535             $this->doThemeUpdateCheck(); 
    536             $current = $this->cmsc_get_transient('update_themes'); 
    537             $return = array(); 
     557            $return  = array(); 
    538558            if (!empty($result)) { 
    539559                foreach ($result as $theme_tmp => $theme_info) { 
    540                     if (is_wp_error($theme_info) || empty($theme_info)) { 
    541                         $return[$theme_tmp] = $this->cmsc_get_error($theme_info); 
    542                     } else { 
    543                         if(!empty($result[$theme_tmp]) || (isset($current->checked[$theme_tmp]) && version_compare(array_search($theme_tmp, $versions), $current->checked[$theme_tmp], '<') == true)){ 
    544                             $return[$theme_tmp] = 1; 
    545                         } else { 
    546                             update_option('cmsc_forcerefresh', true); 
    547                             $return[$theme_tmp] = 'Could not refresh upgrade transients, please reload website data'; 
    548                         } 
    549                     } 
    550                 } 
     560                    if (is_wp_error($theme_info) || empty($theme_info)) { 
     561                        $return[$theme_tmp] = $this->mmb_get_error($theme_info); 
     562                        continue; 
     563                    } 
     564 
     565                    $return[$theme_tmp] = 1; 
     566                } 
     567 
    551568                return array( 
    552                     'upgraded' => $return 
     569                    'upgraded' => $return, 
    553570                ); 
    554571            } else { 
    555572                return array( 
    556                     'error' => 'Upgrade failed.' 
     573                    'error' => 'Upgrade failed.', 
    557574                ); 
    558             }    
     575            }    
    559576        } else { 
    560577            return array( 
     
    723740         
    724741            $current = $this->cmsc_get_transient('update_themes'); 
    725             if (!empty($current->response)) { 
    726                 foreach ((array) $all_themes as $theme_template => $theme_data) { 
    727                     if (!empty($theme_data['Parent Theme'])) { 
    728                     continue; 
    729                     } 
    730  
    731                     if (isset($theme_data->Name) && in_array($theme_data->Name, $filter)) { 
    732                     continue; 
    733                     } 
    734                          
    735                     foreach ($current->response as $current_themes => $theme) { 
    736                         if ($theme_data->Template == $current_themes) { 
    737                             if (strlen($theme_data->Name) > 0 && strlen($theme_data->Version) > 0) { 
    738                                 $current->response[$current_themes]['name']        = $theme_data->Name; 
    739                                 $current->response[$current_themes]['old_version'] = $theme_data->Version; 
    740                                 $current->response[$current_themes]['theme_tmp']   = $theme_data->Template; 
    741                                 $upgrade_themes[] = $current->response[$current_themes]; 
    742                             } 
    743                         } 
    744                     } 
    745                 } 
    746             } 
    747         }else{   
     742             
     743            if (empty($current->response)) { 
     744                return $upgrade_themes; 
     745            }            
     746             
     747            foreach ((array)$all_themes as $theme_template => $theme_data) { 
     748                foreach ($current->response as $current_themes => $theme) { 
     749                    if ($theme_data->Stylesheet !== $current_themes) { 
     750                        continue; 
     751                    } 
     752 
     753                    if (strlen($theme_data->Name) === 0 || strlen($theme_data->Version) === 0) { 
     754                        continue; 
     755                    } 
     756 
     757                    $current->response[$current_themes]['name']        = $theme_data->Name; 
     758                    $current->response[$current_themes]['old_version'] = $theme_data->Version; 
     759                    $current->response[$current_themes]['theme_tmp']   = $theme_data->Stylesheet; 
     760 
     761                    $upgrade_themes[] = $current->response[$current_themes]; 
     762                } 
     763            } 
     764        } else { 
    748765            $all_themes     = get_themes(); 
    749766             
  • cms-commander-client/trunk/lib/CMSC/Post.php

    r1480528 r1647962  
    2222    function create($args) 
    2323    { 
    24          
    25         //$this->_log($args); 
    2624        global $wpdb; 
    2725         
     
    107105            } 
    108106        } 
    109          
    110          
    111          
     107   
    112108        //to find all the images 
    113109        $match_count = preg_match_all('/(<a[^>]+href=\"([^"]+)\"[^>]*>)?(<\s*img.[^\/>]*src="([^"]+' . $cmsc_regexp_url . '[^\s]+\.(jpg|jpeg|png|gif|bmp))"[^>]*>)/ixu', $post_data['post_content'], $get_urls, PREG_SET_ORDER); 
     
    123119                        unset($post_atta_img[$atta_url_k]); 
    124120                    } 
    125                 } 
    126                  
     121                }               
    127122                $pic_from_other_site = $get_urls[$get_url_k][4]; 
    128123                if(strpos($pic_from_other_site,'cmscommander.com') === false && strpos($pic_from_other_site,'flickr') === false && strpos($pic_from_other_site,'pixabay.com') === false){ 
     
    222217                            } 
    223218                        } 
    224                     } 
    225                      
     219                    }                   
    226220                     
    227221                    $some_data = wp_generate_attachment_metadata($attach_id, $attach_upload['path']); 
     
    243237                @unlink($tmp_file); 
    244238            } 
    245              
    246              
    247             $post_data['post_content'] = $post_content; 
    248              
     239                        
     240            $post_data['post_content'] = $post_content;             
    249241        } 
    250242        if (count($post_atta_img)) { 
     
    315307        $post_result = 0; 
    316308        if(isset($post_data['cmsc_post_edit']) && $post_data['cmsc_post_edit']){ 
    317              
    318              
    319309            if($post_data['cmsc_match_by'] == 'title'){ 
    320310                $match_by = "post_title = '".$post_data['post_title']."'";  
     
    325315            $query = "SELECT ID FROM $wpdb->posts WHERE $match_by AND post_status NOT IN('inherit','auto-draft','draft') LIMIT 1"; 
    326316             
    327             $post_result = $wpdb->get_var($query); 
    328              
    329         } 
    330          
    331          
     317            $post_result = $wpdb->get_var($query);           
     318        } 
     319 
    332320        if($post_result){ 
    333321            //update existing post 
     
    341329                    wp_delete_attachment($image->ID); 
    342330                } 
    343             } 
    344              
     331            }            
    345332        } else { 
    346  
    347333            if($post_data['cmsc_post_edit'] && $post_data['cmsc_force_publish']){ 
    348334             $post_id = wp_insert_post($post_data); 
     
    351337            } else { 
    352338                $post_id = wp_insert_post($post_data); 
    353             } 
    354              
     339            }            
    355340        } 
    356341         
     
    444429         
    445430        if(in_array($status, array('draft', 'publish', 'trash'))){ 
    446             $edited_status = array('ID' => $post_id, 
     431            $edited_status = array( 
     432                'ID' => $post_id, 
    447433                'post_status' => $status 
    448434            ); 
     
    623609        $where = ''; 
    624610        extract($args); 
     611         
     612        // CMSC added - search custom post types 
     613        if (!empty($post_type)) { 
     614            $search_type = $post_type; 
     615        } else { 
     616            $search_type = "page"; 
     617        }    
    625618 
    626619        if (!empty($filter_pages)) { 
     
    652645        $limit = ($cmsc_get_pages_range) ? ' LIMIT '.esc_sql($cmsc_get_pages_range) : ' LIMIT 500'; 
    653646 
    654         $sql_query = "$wpdb->posts  WHERE post_status!='auto-draft' AND post_status!='inherit' AND post_type='page' ".$where.' ORDER BY post_date DESC'; 
     647        $sql_query = "$wpdb->posts  WHERE post_status!='auto-draft' AND post_status!='inherit' AND post_type='".$search_type."' ".$where.' ORDER BY post_date DESC'; 
    655648 
    656649        $total              = array(); 
  • cms-commander-client/trunk/lib/CMSC/Stats.php

    r1424857 r1647962  
    3232        $siteStatistics = array(); 
    3333        $prefix         = $wpdb->prefix; 
     34        $basePrefix     = $wpdb->base_prefix; 
    3435 
    3536        if (!empty($options['users'])) { 
    36             $siteStatistics['users'] = (int) $wpdb->get_var("SELECT COUNT(*) FROM {$prefix}users"); 
     37            if (!$this->cmsc_multisite) { 
     38                $siteStatistics['users'] = (int)$wpdb->get_var("SELECT COUNT(*) FROM {$basePrefix}users"); 
     39            } else { 
     40                $siteStatistics['users'] = count(get_users( 
     41                    array( 
     42                        'blog_id' => $wpdb->blogid, 
     43                    ) 
     44                )); 
     45            } 
    3746        } 
    3847 
     
    8493                    $current_transient = $core->updates[0]; 
    8594                } 
     95                 
    8696                if ($current_transient->response == "development" || version_compare($wp_version, $current_transient->current, '<') || $locale !== $current_transient->locale) { 
    8797                    $current_transient->current_version = $wp_version; 
     
    278288        return $stats; 
    279289    } 
     290     
     291    function get_backup_stats() 
     292    { 
     293        $tasks = get_option('cmsc_backup_tasks'); 
     294 
     295        if (empty($tasks) || !is_array($tasks)) { 
     296            return array(); 
     297        } 
     298 
     299        $stats = array(); 
     300 
     301        foreach ($tasks as $task_name => $info) { 
     302            if (empty($info['task_results']) || !is_array($info['task_results'])) { 
     303                continue; 
     304            } 
     305 
     306            foreach ($info['task_results'] as $key => $result) { 
     307                if (!isset($result['server']) || isset($result['error'])) { 
     308                    continue; 
     309                } 
     310 
     311                if (!isset($result['server']['file_path']) || $info['task_args']['del_host_file']) { 
     312                    continue; 
     313                } 
     314 
     315                if (file_exists($result['server']['file_path'])) { 
     316                    continue; 
     317                } 
     318 
     319                $info['task_results'][$key]['error'] = 'Backup created but manually removed from server.'; 
     320            } 
     321 
     322            $stats[$task_name] = $info['task_results']; 
     323        } 
     324 
     325        return $stats; 
     326    }    
    280327     
    281328    function get_backups($stats, $options = array()) 
    282329    { 
    283         $stats['cmsc_backups']      = $this->get_backup_instance()->get_backup_stats(); 
    284         $stats['cmsc_next_backups'] = $this->get_backup_instance()->get_next_schedules(); 
    285          
     330        $stats['cmsc_backups']      = $this->get_backup_stats(); 
     331 
    286332        return $stats; 
    287333    } 
     
    289335    function get_backup_req($stats = array(), $options = array()) 
    290336    { 
    291         $stats['cmsc_backups']      = $this->get_backup_instance()->get_backup_stats(); 
    292         $stats['cmsc_next_backups'] = $this->get_backup_instance()->get_next_schedules(); 
     337        $stats['cmsc_backups']      = $this->get_backup_stats(); 
    293338        $stats['cmsc_backup_req']   = $this->get_backup_instance()->check_backup_compat(); 
    294339         
     
    402447    }   
    403448 
    404     private function wpmu_dev_fix($tag) 
    405     { 
    406         if (!class_exists('WPMUDEV_Dashboard_Site')) { 
     449    function remove_filter_by_plugin_class($tag, $class_name) 
     450    { 
     451        if (!class_exists($class_name)) { 
    407452            return null; 
    408453        } 
     
    419464            } 
    420465 
    421             if (!$callable['function'][0] instanceof WPMUDEV_Dashboard_Site) { 
     466            if (!is_a($callable['function'][0], $class_name)) { 
    422467                continue; 
    423468            } 
     
    429474 
    430475        return null; 
    431     }    
     476    } 
    432477     
    433478    function pre_init_stats($params) 
     
    435480        include_once(ABSPATH . 'wp-includes/update.php'); 
    436481        include_once(ABSPATH . '/wp-admin/includes/update.php'); 
    437      
    438         // remove WPMU Dev filters that do not play nice and screw up the transients 
    439         $callablePluginFn = $this->wpmu_dev_fix('site_transient_update_plugins'); 
    440         $callableThemeFn  = $this->wpmu_dev_fix('site_transient_update_themes'); 
    441482     
    442483        $stats = $this->cmsc_parse_action_params('pre_init_stats', $params, $this); 
     
    673714    function check_notifications() 
    674715    { 
    675         global $wpdb, $cmsc_wp_version, $cmsc_plugin_dir, $wp_version, $wp_local_package; 
     716        global $wp_version; 
    676717         
    677718        $cmsc_notifications = get_option('cmsc_notifications', true); 
  • cms-commander-client/trunk/lib/CMSC/Updater.php

    r1157808 r1647962  
    2929 
    3030        if ($autoUpdateCore === 'never') { 
    31             add_filter('allow_minor_auto_core_updates', '__return_false', PHP_INT_MAX); 
    32             add_filter('allow_major_auto_core_updates', '__return_false', PHP_INT_MAX); 
     31            add_filter('allow_minor_auto_core_updates', '__return_false', MAX_PRIORITY_HOOK); 
     32            add_filter('allow_major_auto_core_updates', '__return_false', MAX_PRIORITY_HOOK); 
    3333        } elseif ($autoUpdateCore === 'minor') { 
    34             add_filter('allow_minor_auto_core_updates', '__return_true', PHP_INT_MAX); 
    35             add_filter('allow_major_auto_core_updates', '__return_false', PHP_INT_MAX); 
     34            add_filter('allow_minor_auto_core_updates', '__return_true', MAX_PRIORITY_HOOK); 
     35            add_filter('allow_major_auto_core_updates', '__return_false', MAX_PRIORITY_HOOK); 
    3636        } elseif ($autoUpdateCore === 'major') { 
    37             add_filter('allow_minor_auto_core_updates', '__return_true', PHP_INT_MAX); 
    38             add_filter('allow_major_auto_core_updates', '__return_true', PHP_INT_MAX); 
    39         } 
    40  
    41         add_filter('auto_update_plugin', array($updater, 'updatePlugin'), PHP_INT_MAX, 2); 
    42         add_filter('auto_update_theme', array($updater, 'updateTheme'), PHP_INT_MAX, 2); 
    43         add_filter('auto_update_translation', array($updater, 'updateTranslation'), PHP_INT_MAX, 1); 
     37            add_filter('allow_minor_auto_core_updates', '__return_true', MAX_PRIORITY_HOOK); 
     38            add_filter('allow_major_auto_core_updates', '__return_true', MAX_PRIORITY_HOOK); 
     39        } 
     40 
     41        add_filter('auto_update_plugin', array($updater, 'updatePlugin'), MAX_PRIORITY_HOOK, 2); 
     42        add_filter('auto_update_theme', array($updater, 'updateTheme'), MAX_PRIORITY_HOOK, 2); 
     43        add_filter('auto_update_translation', array($updater, 'updateTranslation'), MAX_PRIORITY_HOOK, 1); 
    4444    } 
    4545 
     
    181181            }        
    182182            $current = get_option('cmsc_active_autoupdate_' . $type, array()); 
     183            $current = array_unique($current); 
     184             
    183185            if ($item['action'] === 'on') { 
    184186                $current[] = $pluginOrTheme; 
     
    234236 
    235237        $whitelistedPlugins = get_option('cmsc_active_autoupdate_plugins', array()); 
     238        $whitelistedPlugins = array_unique($whitelistedPlugins); 
     239         
    236240        foreach ($allPlugins as $slug => $pluginInfo) { 
    237241            if ($slug === 'cmscommander/init.php' || $slug === 'cms-commander-client/init.php') { 
     
    273277 
    274278        $whitelistedThemes = get_option('cmsc_active_autoupdate_themes', array()); 
     279        $whitelistedThemes = array_unique($whitelistedThemes); 
     280         
    275281        foreach ($allThemes as $slug => $themeInfo) { 
    276282            /** @var WP_Theme $themeInfo */ 
  • cms-commander-client/trunk/lib/CMSC/User.php

    r1157808 r1647962  
    117117        $args['role'] = $args['user']['role']; 
    118118 
    119         if(!function_exists('username_exists') || !function_exists('email_exists')) 
    120          include_once(ABSPATH . WPINC . '/registration.php'); 
    121        
    122       if(username_exists($args['user_login'])) 
    123          return array('error' => 'Username already exists'); 
    124          
    125         if (email_exists($args['user_email'])) 
    126             return array('error' => 'Email already exists'); 
    127  
    128             if(!function_exists('wp_insert_user')) 
    129              include_once (ABSPATH . 'wp-admin/includes/user.php'); 
     119        if (!function_exists('username_exists') || !function_exists('email_exists')) { 
     120            include_once ABSPATH.WPINC.'/registration.php'; 
     121        } 
     122 
     123        if (username_exists($args['user_login'])) { 
     124            return array('error' => 'Username already exists'); 
     125        } 
     126 
     127        if (email_exists($args['user_email'])) { 
     128            return array('error' => 'Email already exists'); 
     129        } 
     130 
     131        if (!function_exists('wp_insert_user')) { 
     132            include_once ABSPATH.'wp-admin/includes/user.php'; 
     133        } 
    130134             
    131             $user_id = wp_insert_user($args); 
    132              
    133             if( is_wp_error( $user_id ) ) { 
    134                 return array('error' => 'User creation failed: '.$user_id->get_error_message()); 
     135        $user_id = wp_insert_user($args); 
     136         
     137        if( is_wp_error( $user_id ) ) { 
     138            return array('error' => 'User creation failed: '.$user_id->get_error_message()); 
     139        } 
     140         
     141        if($user_id){ 
     142         
     143            if($user_id != 1) { 
     144                wp_update_user( array ('ID' => $user_id, 'role' => $args['role'] ) ) ; 
    135145            } 
    136146             
    137             if($user_id){ 
    138              
    139                 if($user_id != 1) { 
    140                     wp_update_user( array ('ID' => $user_id, 'role' => $args['role'] ) ) ; 
    141                 } 
    142                  
    143                 if($args['email_notify']){ 
    144                     //require_once ABSPATH . WPINC . '/pluggable.php'; 
    145                     wp_new_user_notification($user_id, $args['user_pass']); 
    146                 } 
    147                 return $user_id; 
    148             }else{ 
    149                 return array('error' => 'User not added. Please try again.'); 
     147            if($args['email_notify']){ 
     148                //require_once ABSPATH . WPINC . '/pluggable.php'; 
     149                wp_new_user_notification($user_id, $args['user_pass']); 
    150150            } 
     151            return $user_id; 
     152        }else{ 
     153            return array('error' => 'User not added. Please try again.'); 
     154        } 
    151155              
    152156    } 
  • cms-commander-client/trunk/readme.txt

    r1638208 r1647962  
    33Tags: manage, manage multiple sites, manager, backups, affiliate, cmscommander, Manage WordPress, Managed WordPress, WordPress management, WordPress manager, WordPress management, site management, control multiple sites, WordPress management dashboard, clone, automatic, amazon, youtube, videos, managewp, Dropbox 
    44Tested up to: 4.7 
    5 Stable tag: 2.23 
     5Stable tag: 2.24 
    66 
    77CMS Commander helps you to manage multiple WordPress sites much faster from a single powerful dashboard. 
     
    7272== Changelog ==   
    7373 
     74= 2.24 = 
     75 
     76- Fixes custom post types not returning properly when searching a site for content. 
     77- Improves search for specific keywords in content when searching multiple sites. 
     78- Adds setting to CMS Commander editor to allow users to change the permalink. 
     79 
    7480= 2.23 = 
    7581 
  • cms-commander-client/trunk/version

    r1480528 r1647962  
    1 2.23 
     12.24 
Note: See TracChangeset for help on using the changeset viewer.