From c1fa387d3a6fa0dfbe0077893ecffc12f0fff388 Mon Sep 17 00:00:00 2001 From: agata <automa@insicuri.net> Date: Thu, 22 Aug 2019 19:39:04 +0200 Subject: [PATCH] rimosso plugin multisite-enhancements --- .../plugins/multisite-enhancements/LICENSE | 339 -------------- .../css/wordpress-multisite-enhancements.css | 11 - .../wordpress-multisite-enhancements.min.css | 1 - .../inc/assets/js/filtering-plugins.js | 22 - .../inc/assets/js/filtering-plugins.min.js | 1 - .../inc/assets/js/filtering-themes.js | 23 - .../inc/assets/js/filtering-themes.min.js | 1 - .../inc/autoload/class-add-admin-favicon.php | 279 ------------ .../inc/autoload/class-add-blog-id.php | 110 ----- .../inc/autoload/class-add-css.php | 62 --- .../inc/autoload/class-add-plugin-list.php | 377 ---------------- .../autoload/class-add-site-status-labels.php | 116 ----- .../inc/autoload/class-add-ssl-identifier.php | 112 ----- .../inc/autoload/class-add-theme-list.php | 417 ------------------ .../inc/autoload/class-admin-bar-tweaks.php | 141 ------ .../inc/autoload/class-change-footer-text.php | 141 ------ .../inc/autoload/class-core.php | 155 ------- .../inc/autoload/class-filtering-plugins.php | 51 --- .../inc/autoload/class-filtering-themes.php | 51 --- .../class-multisite-add-new-plugin.php | 58 --- .../inc/autoload/core.php | 45 -- .../multisite-enhancements.php | 161 ------- .../plugins/multisite-enhancements/readme.txt | 213 --------- 23 files changed, 2887 deletions(-) delete mode 100644 wp-content/plugins/multisite-enhancements/LICENSE delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.css delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.min.css delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.js delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.min.js delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.js delete mode 100644 wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.min.js delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-admin-favicon.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-blog-id.php delete mode 100644 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-css.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-plugin-list.php delete mode 100644 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-site-status-labels.php delete mode 100644 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-ssl-identifier.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-add-theme-list.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-admin-bar-tweaks.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-change-footer-text.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-core.php delete mode 100644 wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-plugins.php delete mode 100644 wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-themes.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/class-multisite-add-new-plugin.php delete mode 100755 wp-content/plugins/multisite-enhancements/inc/autoload/core.php delete mode 100644 wp-content/plugins/multisite-enhancements/multisite-enhancements.php delete mode 100644 wp-content/plugins/multisite-enhancements/readme.txt diff --git a/wp-content/plugins/multisite-enhancements/LICENSE b/wp-content/plugins/multisite-enhancements/LICENSE deleted file mode 100644 index d159169d1..000000000 --- a/wp-content/plugins/multisite-enhancements/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.css b/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.css deleted file mode 100644 index ed92c52cc..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.css +++ /dev/null @@ -1,11 +0,0 @@ -td.column-active_blogs { - width: 200px; -} - -td.column-active_blogs a { - cursor: pointer; -} - -.siteslist { - display: none; -} \ No newline at end of file diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.min.css b/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.min.css deleted file mode 100644 index a5ee5035b..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/css/wordpress-multisite-enhancements.min.css +++ /dev/null @@ -1 +0,0 @@ -td.column-active_blogs{width:200px}td.column-active_blogs a{cursor:pointer;}.siteslist{display:none} \ No newline at end of file diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.js b/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.js deleted file mode 100644 index d4db27611..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.js +++ /dev/null @@ -1,22 +0,0 @@ -// via https://github.com/charliepark/faq-patrol -// extend :contains to be case-insensitive; via http://stackoverflow.com/questions/187537/ -jQuery( document ).ready( function( $ ) { - 'use strict'; - - $.expr[ ':' ].contains = function( a, i, m ) { - return ( - a.textContent || a.innerText || '' - ).toUpperCase().indexOf( m[ 3 ].toUpperCase() ) >= 0; - }; - - $( '#plugin-search-input' ).keyup( function() { - var val = $( this ).val(); - var selector = '#the-list'; - if ( val.length < 2 ) { - $( selector ).find( '> tr' ).show(); - } else { - $( selector ).find( '> tr' ).hide(); - $( selector ).find( '.plugin-title strong:contains(' + val + ')' ).parent().parent().show(); - } - } ).focus(); -} ); diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.min.js b/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.min.js deleted file mode 100644 index 8a63a1766..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-plugins.min.js +++ /dev/null @@ -1 +0,0 @@ -jQuery(document).ready(function(a){"use strict";a.expr[":"].contains=function(a,b,c){return(a.textContent||a.innerText||"").toUpperCase().indexOf(c[3].toUpperCase())>=0},a("#plugin-search-input").keyup(function(){var b=a(this).val(),c="#the-list";b.length<2?a(c).find("> tr").show():(a(c).find("> tr").hide(),a(c).find(".plugin-title strong:contains("+b+")").parent().parent().show())}).focus()}); \ No newline at end of file diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.js b/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.js deleted file mode 100644 index 57584c8af..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.js +++ /dev/null @@ -1,23 +0,0 @@ -// via https://github.com/charliepark/faq-patrol -// extend :contains to be case-insensitive; via http://stackoverflow.com/questions/187537/ -// @version 2016-10-05s -jQuery( document ).ready( function( $ ) { - 'use strict'; - - $.expr[ ':' ].contains = function( a, i, m ) { - return ( - a.textContent || a.innerText || '' - ).toUpperCase().indexOf( m[ 3 ].toUpperCase() ) >= 0; - }; - - $( '#theme-search-input' ).keyup( function() { - var val = $( this ).val(); - var selector = '#the-list'; - if ( val.length < 2 ) { - $( selector ).find( '> tr' ).show(); - } else { - $( selector ).find( '> tr' ).hide(); - $( selector ).find( '.theme-title strong:contains(' + val + ')' ).parent().parent().show(); - } - } ).focus(); -} ); diff --git a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.min.js b/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.min.js deleted file mode 100644 index ec0b14c05..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/assets/js/filtering-themes.min.js +++ /dev/null @@ -1 +0,0 @@ -jQuery(document).ready(function(a){"use strict";a.expr[":"].contains=function(a,b,c){return(a.textContent||a.innerText||"").toUpperCase().indexOf(c[3].toUpperCase())>=0},a("#theme-search-input").keyup(function(){var b=a(this).val(),c="#the-list";b.length<2?a(c).find("> tr").show():(a(c).find("> tr").hide(),a(c).find(".theme-title strong:contains("+b+")").parent().parent().show())}).focus()}); \ No newline at end of file diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-admin-favicon.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-admin-favicon.php deleted file mode 100755 index f10f9432d..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-admin-favicon.php +++ /dev/null @@ -1,279 +0,0 @@ -<?php -/** - * Add Favicon from theme folder to the admin area to easier identify the blog. - * - * Remove also the "W" logo and his sublinks in admin bar - * Add Favicon to each blog on the Admin Bar Item "My Sites" - * - * Use the follow filter hooks for different changes - * Use the filter hook to add hooks, there will add the markup - * - Hook: multisite_enhancements_favicon - * - Default is: admin_head - * Use the filter hook to change style - * - Hook: multisite_enhancements_add_favicon - * Use the filter hook to change style - * - Hook: multisite_enhancements_add_admin_bar_favicon - * Use the filter hook to change the default to remove the "W" logo and his sublinks - * - Hook: multisite_enhancements_remove_wp_admin_bar - * - Default is: TRUE - * - * @since 2015-07-23 - * @version 2016-10-05 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_Admin_Favicon', 'init' ) ); - -/** - * Add Favicon from theme folder to the admin area to easier identify the blog. - * - * Class Multisite_Add_Admin_Favicon - */ -class Multisite_Add_Admin_Favicon { - - /** - * Value to get sites in the Network. - * - * @since 2015-02-26 - * @var int - */ - private $sites_limit = 9999; - - /** - * Define Hooks for add the favicon markup. - * - * @since 0.0.2 - * @var array - */ - static protected $favicon_hooks = array( - 'admin_head', - 'wp_head', - ); - - /** - * Filter to remove "W" logo incl. sublinks from admin bar. - * - * @since 0.0.2 - * @var Boolean - */ - static protected $remove_wp_admin_bar = TRUE; - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * Use the filter hook to add hooks, there will add the markup - * Hook: multisite_enhancements_favicon - * - * @since 0.0.2 - */ - public function __construct() { - - /** - * Filter hook to change the value for get sites inside the network. - * - * @type integer - */ - $this->sites_limit = (int) apply_filters( 'multisite_enhancements_sites_limit', $this->sites_limit ); - - /** - * Hooks for add favicon markup. - * - * @type array - */ - $hooks = (array) apply_filters( 'multisite_enhancements_favicon', self::$favicon_hooks ); - - foreach ( $hooks as $hook ) { - add_action( esc_attr( $hook ), array( $this, 'set_favicon' ) ); - - // Add favicon from theme folder to each blog. - add_action( esc_attr( $hook ), array( $this, 'set_admin_bar_blog_icon' ) ); - } - - // Remove admin bar item with "W" logo. - add_action( 'admin_bar_menu', array( $this, 'change_admin_bar_menu' ), 25 ); - } - - /** - * Create markup, if favicon is exist in active theme folder. - * - * Use the filter hook to change style - * Hook: multisite_enhancements_add_favicon - * - * @since 0.0.2 - */ - public function set_favicon() { - - $stylesheet_dir_uri = get_stylesheet_directory_uri(); - $stylesheet_dir = get_stylesheet_directory(); - $output = ''; - - if ( file_exists( $stylesheet_dir . $this->get_favicon_path() ) ) { - $output .= '<link rel="shortcut icon" type="image/x-icon" href="' - . esc_url( $stylesheet_dir_uri . $this->get_favicon_path() ) . '" />'; - $output .= '<style>'; - $output .= '#wpadminbar #wp-admin-bar-site-name>.ab-item:before { content: none !important;}'; - $output .= 'li#wp-admin-bar-site-name a { background: url( "' - . $stylesheet_dir_uri . $this->get_favicon_path() - . '" ) left center/20px no-repeat !important; padding-left: 21px !important; background-size: 20px !important; } li#wp-admin-bar-site-name { margin-left: 5px !important; } li#wp-admin-bar-site-name {} #wp-admin-bar-site-name div a { background: none !important; }' . "\n"; - $output .= '</style>'; - } - - /** - * Use the filter hook to change style. - * - * @type string - */ - echo apply_filters( 'multisite_enhancements_add_favicon', $output ); - } - - /** - * Add Favicon from each blog to Multisite Menu of "My Sites". - * - * Use the filter hook to change style - * Hook: multisite_enhancements_add_admin_bar_favicon - * - * @since 0.0.2 - */ - public function set_admin_bar_blog_icon() { - - // Only usable if the user is logged in and use the admin bar. - if ( ! is_user_logged_in() || ! is_admin_bar_showing() ) { - return; - } - - $user_id = get_current_user_id(); - $user_blogs = get_blogs_of_user( $user_id ); - - $output = ''; - foreach ( (array) $user_blogs as $blog ) { - - $custom_icon = FALSE; - - // Validate, that we use nly int value. - $blog_id = (int) $blog->userblog_id; - $stylesheet = get_blog_option( $blog_id, 'stylesheet' ); - - // Get stylesheet directory uri. - $theme_root_uri = get_theme_root_uri( $stylesheet ); - $stylesheet_dir_uri = "$theme_root_uri/$stylesheet"; - - // Get stylesheet directory. - $theme_root = get_theme_root( $stylesheet ); - $stylesheet_dir = "$theme_root/$stylesheet"; - - // Create favicon directory and directory url locations. - $favicon_dir_uri = $this->get_favicon_path( $blog_id, $stylesheet_dir_uri, 'url' ); - $favicon_dir = $this->get_favicon_path( $blog_id, $stylesheet_dir, 'dir' ); - - // Check if the user has manually added a site icon in WP (since WP 4.3). - $site_icon_id = (int) get_blog_option( $blog_id, 'site_icon' ); - if ( 0 !== $site_icon_id ) { - switch_to_blog( $blog_id ); - $url_data = wp_get_attachment_image_src( $site_icon_id, array( 32, 32 ) ); - $custom_icon = esc_url( $url_data[0] ); - restore_current_blog(); - } elseif ( file_exists( $favicon_dir ) ) { - $custom_icon = $favicon_dir_uri; - } - - if ( FALSE !== $custom_icon ) { - $output .= '#wpadminbar .quicklinks li#wp-admin-bar-blog-' . $blog_id - . ' .blavatar { font-size: 0 !important; }'; - $output .= '#wp-admin-bar-blog-' . $blog_id - . ' div.blavatar { background: url( "' . $custom_icon - . '" ) left bottom/16px no-repeat !important; background-size: 16px !important; margin: 0 2px 0 -2px; }' . "\n"; - } - } - - if ( '' !== $output ) { - /** - * Use the filter hook to change style. - * - * @type string - */ - echo apply_filters( - 'multisite_enhancements_add_admin_bar_favicon', - "\n" . '<style>' . $output . '</style>' . "\n" - ); - } - } - - /** - * Maybe removes the "W" logo incl. sublinks from the admin menu. - * - * Use the filter hook to change the default to remove the "W" logo and his sublinks - * Hook: multisite_enhancements_remove_wp_admin_bar - * - * @since 0.0.2 - * @param WP_Admin_Bar $admin_bar WP_Admin_Bar instance, passed by reference. - */ - public function change_admin_bar_menu( $admin_bar ) { - - /** - * Use the filter hook to remove or not remove the first part in the admin bar. - * - * @type bool - */ - if ( apply_filters( - 'multisite_enhancements_remove_wp_admin_bar', - self::$remove_wp_admin_bar - ) - ) { - $admin_bar->remove_node( 'wp-logo' ); - } - } - - /** - * Get the path to the favicon file from the root of a theme. - * - * @since 1.0.5 - * - * @param int $blog_id Id of the blog in the network. - * @param string $path Path to Favicon. - * @param string $path_type Type 'url' or 'dir'. - * - * @return string File path to favicon file. - * @internal param ID $integer of blog in network - * @internal param Path $string to Favicon - * @internal param Path $string type 'url' or 'dir' - */ - protected function get_favicon_path( $blog_id = 0, $path = '', $path_type = 'url' ) { - - if ( 0 === $blog_id ) { - $blog_id = get_current_blog_id(); - } - - /** - * Filter the file path to the favicon file. - * - * Default is '/favicon.ico' which assumes there's a .ico file in the theme root. - * This filter allows that path, file name, and file extension to be changed. - * - * @since 1.0.5 - * - * @param string $path Path to favicon file. - * - * Optional parameters: - * - * When using a different directory than the stylesheet use the $blog_id and $path_type - * integer $blog_id - * - * string $path_type = 'url' -> use URL for the location as a URL - * string $path_type = 'dir' -> use URL for the location in the server, used to check if the file exists - */ - - return apply_filters( 'multisite_enhancements_favicon_path', $path . '/favicon.ico', $blog_id, $path_type ); - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-blog-id.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-blog-id.php deleted file mode 100755 index 74368fa6b..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-blog-id.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/** - * View Blog and User ID in WordPress Multisite. - * - * @see http://wpengineer.com/2188/view-blog-id-in-wordpress-multisite/ - * @since 2013-07-19 - * @version 2016-01-15 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_Blog_Id', 'init' ) ); - -/** - * View Blog and User ID in WordPress Multisite. - * Class Multisite_Add_Blog_Id - */ -class Multisite_Add_Blog_Id { - - /** - * Init the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * @since 0.0.1 - */ - public function __construct() { - - if ( ! is_network_admin() ) { - return; - } - - // Add blog id. - add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) ); - add_action( 'manage_sites_custom_column', array( $this, 'get_blog_id' ), 10, 2 ); - - // Add user id. - add_filter( 'manage_users-network_columns', array( $this, 'get_id' ) ); - add_filter( 'manage_users_custom_column', array( $this, 'get_user_id' ), 10, 3 ); - - add_action( 'admin_print_styles-sites.php', array( $this, 'add_style' ) ); - add_action( 'admin_print_styles-users.php', array( $this, 'add_style' ) ); - } - - /** - * Echo the site id of each site. - * - * @param string $column_name The name of the column. - * @param integer $blog_id The Id of the blog. - * - * @return mixed - */ - public function get_blog_id( $column_name, $blog_id ) { - - if ( 'object_id' === $column_name ) { - echo (int) $blog_id; - } - - return $column_name; - } - - /** - * Echo the ID of each user. - * - * @param string $value Custom column output. - * @param string $column_name The current column name. - * @param int $user_id ID of the currently-listed user. - * - * @return int|string - */ - public function get_user_id( $value, $column_name, $user_id ) { - - if ( 'object_id' === $column_name ) { - return (int) $user_id; - } - - return $value; - } - - /** - * Add in a column header. - * - * @param array $columns An array of displayed site columns. - * - * @return mixed - */ - public function get_id( $columns ) { - - $columns[ 'object_id' ] = __( 'ID' ); - - return $columns; - } - - /** - * Add custom style. - */ - public function add_style() { - - echo '<style>#object_id { width:7%; }</style>'; - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-css.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-css.php deleted file mode 100644 index 1625a9dbc..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-css.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * On the network plugin and theme pages, add css to present the active column - * If this class is loaded, modify the presentation of the column in order to - * allow showing or hiding the list of sites that uses a theme or plugin - * - * Kudos to #n-goncalves for this solution. - * @see https://github.com/bueltge/wordpress-multisite-enhancements/pull/44 - * - * @since 2018-02-15 - * @version 2018-02-15 - * @package WordPress - */ - -add_action( 'init', array( 'Enqueue_Column_Style', 'init' ) ); - -/** - * On the network plugin and theme pages, add css to present the active column - * If this class is loaded, modify the presentation of the column in order to - * allow showing or hiding the list of sites that uses a theme or plugin - * - * Class Enqueue_Column_Style - */ -class Enqueue_Column_Style { - - /** - * Init function to register all used hooks. - * - */ - public function __construct() { - - add_action( 'admin_head-themes.php', array( $this, 'enqueue_style' ) ); - add_action( 'admin_head-plugins.php', array( $this, 'enqueue_style' ) ); - } - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Enqueue column style. - * - */ - public function enqueue_style() { - - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; - - wp_register_style( - 'admin_column_css', - plugins_url( '/inc/assets/css/wordpress-multisite-enhancements' . $suffix . '.css', MULTISITE_ENHANCEMENT_BASE ), - false ); - wp_enqueue_style( 'admin_column_css' ); - } // end enqueue_style() - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-plugin-list.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-plugin-list.php deleted file mode 100755 index 7202a1ec8..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-plugin-list.php +++ /dev/null @@ -1,377 +0,0 @@ -<?php -/** - * On the network plugins page, show which blogs have this plugin active. - * - * @since 2013-07-19 - * @version 2018-04-13 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_Plugin_List', 'init' ) ); - -/** - * Class Multisite_Add_Plugin_List - */ -class Multisite_Add_Plugin_List { - - /** - * On this plugin status will not show the not or activated status in the table of plugins. - * - * @since 01/03/2014 - * @var array - */ - static protected $excluded_plugin_status = array( 'dropins', 'mustuse' ); - /** - * String for the transient string, there save the blog plugins. - * - * @since 2015-02-21 - * @var string - */ - static protected $site_transient_blogs_plugins = 'blogs_plugins'; - /** - * Define the allowed html tags for wp_kses. - * - * @var array - */ - static protected $wp_kses_allowed_html = array( - 'br' => array(), - 'nobr' => array( - 'class' => array(), - ), - 'span' => array( - 'class' => array(), - ), - 'ul' => array( - 'id' => array(), - 'class' => array(), - ), - 'li' => array( - 'title' => array(), - ), - 'a' => array( - 'href' => array(), - 'onclick' => array(), - 'title' => array(), - ), - 'p' => array(), - ); - /** - * Value to get sites in the Network. - * - * @since 2015-02-26 - * @var int - */ - private $sites_limit = 9999; - /** - * Member variable to store data about active plugins for each blog. - * - * @since 2015-02-21 - * @var array - */ - private $blogs_plugins; - - /** - * Init function to register all used hooks. - * - * @since 0.0.1 - */ - public function __construct() { - - add_action( 'load-plugins.php', array( $this, 'development_helper' ) ); - - // Fires after a plugin has been activated; but not on silently activated, like update. - add_action( 'activated_plugin', array( $this, 'clear_plugins_site_transient' ), 10, 2 ); - // Fires before a plugin is deactivate; but not on silently activated, like update. - add_action( 'deactivated_plugin', array( $this, 'clear_plugins_site_transient' ), 10, 2 ); - - if ( ! is_network_admin() ) { - return; - } - - /** - * Filter to change the value for get sites inside the network. - * - * @type integer - */ - $this->sites_limit = (int) apply_filters( 'multisite_enhancements_sites_limit', $this->sites_limit ); - - add_filter( 'manage_plugins-network_columns', array( $this, 'add_plugins_column' ), 10, 1 ); - add_action( 'manage_plugins_custom_column', array( $this, 'manage_plugins_custom_column' ), 10, 3 ); - } - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Print Network Admin Notices to inform, that the transient are deleted. - * - * @since 2016-10-23 - */ - public function notice_about_clear_cache() { - - $class = 'notice notice-info'; - $message = esc_attr__( 'Multisite Enhancements: Plugin usage information is not cached while WP_DEBUG is true.', - 'multisite-enhancements' ); - printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message ); - } - - /** - * Add in a column header. - * - * @since 0.0.1 - * - * @param array $columns An array of displayed site columns. - * - * @return array - */ - public function add_plugins_column( $columns ) { - - // If not set, then no changes on output. - if ( ! array_key_exists( 'plugin_status', $_GET ) ) { - $_GET['plugin_status'] = ''; - } - - // Not useful on different selections. - if ( ! in_array( esc_attr( $_GET['plugin_status'] ), self::$excluded_plugin_status, false ) ) { - // Translators: Active in is the head of the table column on plugin list. - $columns['active_blogs'] = '<nobr>' . _x( 'Usage', 'column name', 'multisite-enhancements' ) . '</nobr>'; - } - - return $columns; - } - - /** - * Get data for each row on each plugin. - * Echo the string. - * - * @since 0.0.1 - * - * @param String $column_name Name of the column. - * @param String $plugin_file Path to the plugin file. - * @param array $plugin_data An array of plugin data. - * - * @return void - */ - public function manage_plugins_custom_column( $column_name, $plugin_file, $plugin_data ) { - - if ( 'active_blogs' !== $column_name ) { - return null; - } - - // Is this plugin network activated. - if ( ! function_exists( 'is_plugin_active_for_network' ) ) { - require_once ABSPATH . '/wp-admin/includes/plugin.php'; - } - - $active_on_network = is_plugin_active_for_network( $plugin_file ); - - $output = ''; - - if ( $active_on_network ) { - // We don't need to check any further for network active plugins. - // Translators: The plugin is network wide active, the string is for each plugin possible. - $output .= __( '<nobr>Network Activated</nobr>', 'multisite-enhancements' ); - - // List Blogs, there is activated. - } else { - // Is this plugin active on any blogs in this network. - $active_on_blogs = $this->is_plugin_active_on_blogs( $plugin_file ); - - if ( ! $active_on_blogs ) { - // Translators: The plugin is not activated, the string is for each plugin possible. - $output .= __( '<nobr>Not Activated</nobr>', 'multisite-enhancements' ); - } else { - $active_count = sizeOf( $active_on_blogs ); - $output .= '<p>'; - - $is_list_hidden = false; - // Hide the list of sites if the class isn"t loaded or there's less or equal to 4 sites - if ( class_exists( 'Enqueue_Column_Style', false ) && $active_count > 4 ) { - $output .= sprintf( - _n( 'Active on %2$s %1$d site %3$s', 'Active on %2$s %1$d sites %3$s', $active_count, 'multisite-enhancements' ), - $active_count, - "<a onclick=\"jQuery('ul[id*=\'siteslist_{$plugin_file}\']').slideToggle('swing');\">", - '</a>' - ); - } else { - $output .= sprintf( - _n( 'Active on %s site', 'Active on %s sites', $active_count, 'multisite-enhancements' ), - $active_count - ); - $is_list_hidden = true; - } - $output .= '</p>'; - $output .= '<ul id="siteslist_' . $plugin_file; - $output .= ( $is_list_hidden ) ? '">' : '" class="siteslist">'; - - - foreach ( $active_on_blogs as $key => $value ) { - - // Check the site for archived. - $class = $hint = ''; - if ( $this->is_archived( $key ) ) { - $class = ' class="site-archived"'; - $hint = esc_attr__( ', Archived site', 'multisite-enhancements' ); - } - - $output .= '<li' . $class . ' title="Blog ID: ' . $key . $hint . '">'; - $output .= '<nobr><a href="' . get_admin_url( $key ) . 'plugins.php">' - . $value['name'] . '</a>' . $hint . '</nobr></li>'; - } - - $output .= '</ul>'; - } - } - - if ( ! isset($plugin_data['Network']) ) { - $plugin_data['Network'] = false; - } - - // Add indicator that the plugin is "Network Only". - if ( $plugin_data['Network'] ) { - $output .= '<br /><nobr class="submitbox"><span class="submitdelete">' - . esc_attr__( 'Network Only', 'multisite-enhancements' ) - . '</span></nobr>'; - } - - echo wp_kses( $output, self::$wp_kses_allowed_html ); - } - - /** - * Is plugin active in blogs. - * - * @since 0.0.1 - * - * @param string $plugin_file An name of the plugin file. - * - * @internal param $String - * - * @return array $active_in_plugins Which Blog ID and Name of Blog for each item in Array. - */ - public function is_plugin_active_on_blogs( $plugin_file ) { - - $blogs_plugins = $this->get_blogs_plugins(); - - $active_in_plugins = array(); - - foreach ( $blogs_plugins as $blog_id => $data ) { - if ( in_array( $plugin_file, $data['active_plugins'], true ) ) { - $active_in_plugins[ $blog_id ] = array( - 'name' => $data['blogname'], - 'path' => $data['blogpath'], - ); - } - } - - return $active_in_plugins; - } - - /** - * Gets an array of blog data including active plugins for each blog. - * - * @since 21/02/2015 - * - * @return array - */ - public function get_blogs_plugins() { - - // See if the data is present in the variable first. - if ( $this->blogs_plugins ) { - return $this->blogs_plugins; - - // If not, see if we can load data from the transient. - } elseif ( false === ( $this->blogs_plugins = get_site_transient( self::$site_transient_blogs_plugins ) ) ) { - - // Cannot load data from transient, so load from DB and set transient. - $this->blogs_plugins = array(); - - $blogs = (array) Multisite_Core::get_blog_list( 0, $this->sites_limit ); - - /** - * Data to each site of the network, blogs. - * - * @var array $blog - */ - foreach ( $blogs as $blog ) { - - // Convert object to array. - $blog = (array) $blog; - - $this->blogs_plugins[ $blog['blog_id'] ] = $blog; - $this->blogs_plugins[ $blog['blog_id'] ]['blogpath'] = get_blog_details( - $blog['blog_id'] - )->path; - $this->blogs_plugins[ $blog['blog_id'] ]['blogname'] = get_blog_details( - $blog['blog_id'] - )->blogname; - $this->blogs_plugins[ $blog['blog_id'] ]['active_plugins'] = array(); - $plugins = (array) get_blog_option( - $blog['blog_id'], 'active_plugins' - ); - if ( $plugins ) { - foreach ( $plugins as $plugin_file ) { - $this->blogs_plugins[ $blog['blog_id'] ]['active_plugins'][] = $plugin_file; - } - } - } - - if ( ! $this->development_helper() ) { - set_site_transient( self::$site_transient_blogs_plugins, $this->blogs_plugins ); - } - } - - // Data should be here, if loaded from transient or DB. - return $this->blogs_plugins; - } - - /** - * Run helpers if the debug constant is true to help on development, debugging. - * - * @since 2016-10-23 - * @return bool - */ - public function development_helper() { - - if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) { - return false; - } - - add_action( 'network_admin_notices', array( $this, 'notice_about_clear_cache' ) ); - $this->clear_plugins_site_transient(); - - return true; - } - - /** - * Clears the $blogs_plugins site transient when any plugins are activated/deactivated. - * - * @since 2015-02-25 - */ - public function clear_plugins_site_transient() { - - delete_site_transient( self::$site_transient_blogs_plugins ); - } - - /** - * Check, if the status of the site archived. - * - * @param integer $site_id ID of the site. - * - * @return bool - */ - public function is_archived( $site_id ) { - - $site_id = (int) $site_id; - - return (bool) get_blog_details( $site_id )->archived; - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-site-status-labels.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-site-status-labels.php deleted file mode 100644 index 46ca1e407..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-site-status-labels.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * Add status labels to blogs. - * - * @since 2015-07-14 - * @version 2016-10-28 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_Site_Status_labels', 'init' ) ); - -/** - * Add status labels to sites. - * - * Class Multisite_Add_Site_Status_labels - */ -class Multisite_Add_Site_Status_labels { - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * @since 2015-07-14 - */ - public function __construct() { - - if ( ! current_user_can( 'manage_network' ) ) { - return; - } - - add_action( 'admin_bar_menu', array( $this, 'add_status_label' ) ); - } - - /** - * Check string, if is a external url. - * - * @param string $haystack The string to search in. - * @param string $needle The search string. - * - * @return bool - */ - public function check_external_url( $haystack, $needle ) { - - // Remove last string for exactly check. - $needle = rtrim( $needle, '/' ); - - return $needle - && FALSE === strpos( - $haystack, - str_replace( array( 'http://', 'https://', '//' ), '', $needle ) - ); - } - - /** - * Check, if the status of the site public. - * - * @param integer $site_id ID of the site. - * - * @return bool - */ - public function is_site_live( $site_id ) { - - $site_id = (int) $site_id; - return (bool) get_blog_option( $site_id, 'blog_public' ); - } - - /** - * Add status label from each blog to Multisite Menu of "My Sites". - * - * Use the filter hook 'multisite_enhancements_status_label' to change style, dashicon, markup. - * - * @param \WP_Admin_Bar $admin_bar All necessary admin bar items. - * - * @return mixed - */ - public function add_status_label( \WP_Admin_Bar $admin_bar ) { - - foreach ( $admin_bar->user->blogs as $key => $blog ) { - - $url_hint = ''; - $live_hint = ''; - - if ( $this->check_external_url( $blog->siteurl, $admin_bar->user->domain ) ) { - $title = esc_attr__( 'external domain', 'multisite-enhancements' ); - $class = 'ab-icon dashicons-before dashicons-external'; - $url_hint = '<span title="' . $title . '" class="' . $class . '"></span>'; - } - - if ( ! $this->is_site_live( $blog->userblog_id ) ) { - $title = esc_attr__( 'noindex', 'multisite-enhancements' ); - $class = 'ab-icon dashicons-before dashicons-dismiss'; - $live_hint = '<span title="' . $title . '" class="' . $class . '"></span>'; - } - - // Add span markup. - $blogname = $url_hint . $live_hint . $blog->blogname; - - // Filter hook for custom style of the admin bar site string. - $blogname = apply_filters( 'multisite_enhancements_status_label', $blogname, $blog ); - - $admin_bar->user->blogs[ $key ]->blogname = $blogname; - } - - return $admin_bar; - } -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-ssl-identifier.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-ssl-identifier.php deleted file mode 100644 index f516a3ed5..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-ssl-identifier.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php # -*- coding: utf-8 -*- -/** - * Add a icon to identify the ssl protocol on each site. - * - * @since 2017-07-13 - * @version 2017-11-26 - * @package WordPress - */ - -namespace Bueltge\Multisite_Add_Ssh_Identifier; - -add_action( 'admin_init', __NAMESPACE__ . '\\bootstrap' ); -/** - * Create the instance of this class. - */ -function bootstrap() { - - $multisite_add_ssh_identifier = new Multisite_Add_Ssh_Identifier(); - $multisite_add_ssh_identifier->init(); -} - -/** - * Class Multisite_Add_Ssh_Identifier - */ -class Multisite_Add_Ssh_Identifier { - - /** - * Set column name to identifier the column. - * - * @var string - */ - private $column = 'site_ssl'; - - /** - * Use the WP hooks to include the functions in wp. - */ - public function init() { - - add_filter( 'wpmu_blogs_columns', array( $this, 'add_column' ) ); - add_action( 'manage_sites_custom_column', array( $this, 'get_protocol' ), 10, 2 ); - - add_action( 'admin_print_styles-sites.php', array( $this, 'add_style' ) ); - } - - /** - * Constructor. - * - * Multisite_Add_Ssh_Identifier constructor. - */ - public function __construct() {} - - /** - * Determines if SSL is used. - * - * @param integer $blog_id - * - * @return bool - */ - private function is_ssl( $blog_id ) { - - return ( strstr( get_home_url( $blog_id ), 'https' ) ) ? true : false; - } - - /** - * Add new column for the ssh identifier. - * - * @param array $columns - * - * @return array - */ - public function add_column( array $columns ) { - - $first_column = array_slice( $columns, 0, 1 ); - $after_first_columns = array_slice( $columns, 1 ); - $ssh_column = array( $this->column => esc_html__( 'https', 'multisite-enhancements' ) ); - - // Union of the arrays. - $columns = $first_column + $ssh_column + $after_first_columns; - - return $columns; - } - - /** - * Print icon, markup to identifier the protocol for each site. - * - * @param string $column_name - * @param integer $blog_id - * - * @return string - */ - public function get_protocol( $column_name, $blog_id ) { - - if ( $this->column === $column_name ) { - - $status = 'unlock'; - if ( $this->is_ssl( $blog_id ) ) { - $status = 'lock'; - } - - echo '<span class="dashicons dashicons-' . $status . '"></span>'; // WPCS: XSS ok. - } - return $column_name; - } - - /** - * Print custom style for the https column. - */ - public function add_style() { - - echo '<style>#' . esc_attr( $this->column ) . ' { width:5%; } .column-' . esc_attr( $this->column ) . ' { text-align: center; }</style>'; - } -} diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-theme-list.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-theme-list.php deleted file mode 100755 index f394db7d9..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-add-theme-list.php +++ /dev/null @@ -1,417 +0,0 @@ -<?php -/** - * On the network theme page, show which blog have the theme active. - * - * @since 2013-07-22 - * @version 2018-05-16 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_Theme_List', 'init' ) ); - -/** - * On the network theme page, show which blog have the theme active. - * - * Class Multisite_Add_Theme_List - */ -class Multisite_Add_Theme_List { - - /** - * String for the transient string, there save the blog themes. - * - * @since 2015-02-21 - * @var string - */ - static protected $site_transient_blogs_themes = 'blogs_themes'; - /** - * Define the allowed html tags for wp_kses. - * - * @var array - */ - static protected $wp_kses_allowed_html = array( - 'br' => array(), - 'nobr' => array( - 'class' => array(), - ), - 'span' => array( - 'class' => array(), - ), - 'ul' => array( - 'id' => array(), - 'class' => array(), - ), - 'li' => array( - 'title' => array(), - ), - 'a' => array( - 'href' => array(), - 'onclick' => array(), - 'title' => array(), - ), - 'p' => array(), - ); - /** - * Value to get sites in the Network. - * - * @since 2015-02-26 - * @var int - */ - private $sites_limit = 9999; - /** - * Member variable to store data about active theme for each blog. - * - * @since 21/02/2015 - * @var array - */ - private $blogs_themes; - - /** - * Init function to register all used hooks. - * - * @since 0.0.2 - */ - public function __construct() { - - // Delete transient on themes page. - add_action( 'load-themes.php', array( $this, 'development_helper' ) ); - - // Fires after the theme is switched. - add_action( 'switch_theme', array( $this, 'clear_themes_site_transient' ), 10, 1 ); - - if ( ! is_network_admin() ) { - return; - } - - /** - * Filter to change the value for get sites inside the network. - * - * @since 2015-02-26 - * @type integer - */ - $this->sites_limit = (int) apply_filters( 'multisite_enhancements_sites_limit', $this->sites_limit ); - - add_filter( 'manage_themes-network_columns', array( $this, 'add_themes_column' ), 10, 1 ); - add_action( 'manage_themes_custom_column', array( $this, 'manage_themes_custom_column' ), 10, 3 ); - - add_action( 'update_site_option_allowedthemes', array( $this, 'clear_themes_site_transient' ), 10, 1 ); - } - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Print Network Admin Notices to inform, that the transient are deleted. - * - * @since 2016-10-23 - */ - public function notice_about_clear_cache() { - - $class = 'notice notice-info'; - $message = esc_attr__( - 'Multisite Enhancements: Theme usage information is not cached while WP_DEBUG is true.', - 'multisite-enhancements' - ); - printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message ); - } - - /** - * Add in a column header. - * - * @since 0.0.2 - * - * @param array $columns An array of displayed site columns. - * - * @return array - */ - public function add_themes_column( $columns ) { - - $columns['active_blogs'] = '<nobr>' . _x( 'Usage', 'column name', 'multisite-enhancements' ) . '</nobr>'; - - return $columns; - } - - /** - * Get data for each row on each theme. - * Print the string about the usage. - * - * @since 0.0.2 - * - * @param String $column_name Name of the column. - * @param String $theme_key Path to the theme file. - * @param array|\WP_Theme $theme_data An array of theme data. - */ - public function manage_themes_custom_column( $column_name, $theme_key, \WP_Theme $theme_data ) { - - if ( 'active_blogs' !== $column_name ) { - return null; - } - - $output = ''; - - $active_on_blogs = $this->is_theme_active_on_blogs( $theme_key ); - - // Check, if is a child theme and return parent. - $child_context = ''; - $is_child = $this->is_child( $theme_data ); - if ( $is_child ) { - $parent_name = $theme_data->parent()->Name; - $child_context .= '<br>' . sprintf( - // Translators: The placeholder will be replaced by the name of the parent theme. - esc_attr__( 'This is a child theme of %s.', 'multisite-enhancements' ), - '<strong>' . esc_attr( $parent_name ) . '</strong>' - ); - } - - // Check if used as a parent theme for a child. - $parent_context = ''; - $used_as_parent = $this->is_parent( $theme_key ); - if ( count( $used_as_parent ) ) { - $parent_context .= '<br>' . esc_attr__( - 'This is used as a parent theme by:', - 'multisite-enhancements' - ) . ' '; - $parent_context .= implode( ', ', $used_as_parent ); - } - - if ( ! $active_on_blogs ) { - // Translators: The theme is not activated, the string is for each plugin possible. - $output .= __( '<nobr>Not Activated</nobr>', 'multisite-enhancements' ); - $output .= $child_context; - $output .= $parent_context; - } else { - $active_count = count( $active_on_blogs ); - $output .= '<p>'; - - $is_list_hidden = false; - // Hide the list of sites if the class isn"t loaded or there's less or equal to 4 sites. - if ( class_exists( 'Enqueue_Column_Style', false ) && $active_count > 4 ) { - $output .= sprintf( - _n( - 'Active on %2$s %1$d site %3$s', - 'Active on %2$s %1$d sites %3$s', - $active_count, - 'multisite-enhancements' - ), - $active_count, - "<a onclick=\"jQuery('ul[id*=\'siteslist_{$theme_key}\']').slideToggle('swing');\">", - '</a>' - ); - } else { - $output .= sprintf( - // Translators: The placeholder will be replaced by the count of sites there use that theme. - _n( 'Active on %s site', 'Active on %s sites', $active_count, 'multisite-enhancements' ), - $active_count - ); - $is_list_hidden = true; - } - $output .= '</p>'; - $output .= '<ul id="siteslist_' . $theme_key; - $output .= ( $is_list_hidden ) ? '">' : '" class="siteslist">'; - - foreach ( $active_on_blogs as $key => $value ) { - - // Check the site for archived. - $class = $hint = ''; - if ( $this->is_archived( $key ) ) { - $class = ' class="site-archived"'; - $hint = esc_attr__( ', Archived site', 'multisite-enhancements' ); - } - - $output .= '<li' . $class . ' title="Blog ID: ' . $key . $hint . '">'; - $output .= '<nobr><a href="' . get_admin_url( $key ) . 'themes.php">' - . $value['name'] . '</a>' . $hint . '</nobr>'; - $output .= '</li>'; - } - - $output .= '</ul>'; - $output .= $child_context; - $output .= $parent_context; - } - - echo wp_kses( $output, self::$wp_kses_allowed_html ); - } - - /** - * Is theme active in blogs. - * - * Return array with values to each theme - * - * @since 0.0.2 - * - * @param String $theme_key The key of each theme. - * - * @return array - */ - public function is_theme_active_on_blogs( $theme_key ) { - - $blogs_themes = $this->get_blogs_themes(); - - $active_in_themes = array(); - - foreach ( $blogs_themes as $blog_id => $data ) { - - if ( $data['stylesheet'] === $theme_key ) { - $active_in_themes[ $blog_id ] = array( - 'name' => $data['blogname'], - 'path' => $data['blogpath'], - ); - } - } - - return $active_in_themes; - } - - /** - * Gets an array of blog data including active theme for each blog. - * - * @since 21/02/2015 - * - * @return array - */ - public function get_blogs_themes() { - - // See if the data is present in the variable first. - if ( $this->blogs_themes ) { - return $this->blogs_themes; - - // If not, see if we can load data from the transient. - } elseif ( false === ( $this->blogs_themes = get_site_transient( self::$site_transient_blogs_themes ) ) ) { - - // Cannot load data from transient, so load from DB and set transient. - $this->blogs_themes = array(); - - $blogs = (array) Multisite_Core::get_blog_list( 0, $this->sites_limit ); - - /** - * Data to each site of the network, blogs. - * - * @var array $blog - */ - foreach ( $blogs as $blog ) { - - // Convert object to array. - $blog = (array) $blog; - - $this->blogs_themes[ $blog['blog_id'] ] = $blog; - $this->blogs_themes[ $blog['blog_id'] ]['blogpath'] = get_blog_details( - $blog['blog_id'] - )->path; - $this->blogs_themes[ $blog['blog_id'] ]['blogname'] = get_blog_details( - $blog['blog_id'] - )->blogname; - $this->blogs_themes[ $blog['blog_id'] ]['template'] = get_blog_option( - $blog['blog_id'], 'template' - ); - $this->blogs_themes[ $blog['blog_id'] ]['stylesheet'] = get_blog_option( - $blog['blog_id'], 'stylesheet' - ); - } - - if ( ! $this->development_helper() ) { - set_site_transient( self::$site_transient_blogs_themes, $this->blogs_themes ); - } - } - - // Data should be here, if loaded from transient or DB. - return $this->blogs_themes; - } - - /** - * Run helpers if the debug constant is true to help on development, debugging. - * - * @since 2016-10-23 - * @return bool - */ - public function development_helper() { - - if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) { - return false; - } - - add_action( 'network_admin_notices', array( $this, 'notice_about_clear_cache' ) ); - $this->clear_themes_site_transient(); - - return true; - } - - /** - * Clears the $blogs_themes site transient when any themes are activated/deactivated. - * - * @since 2015-02-21 - */ - public function clear_themes_site_transient() { - - delete_site_transient( self::$site_transient_blogs_themes ); - } - - /** - * Check, the current theme have a parent value and is a child theme. - * - * @param array|\WP_Theme $theme_data An array of theme data. - * - * @return bool - */ - public function is_child( \WP_Theme $theme_data ) { - - return (bool) $theme_data->parent(); - } - - /** - * Gets an array of themes which have the selected one as parent. - * - * @since 21/02/2015 - * @version 2017-02-22 - * - * @param string $theme_key The key of each theme. - * - * @return array - */ - public function is_parent( $theme_key ) { - - $blogs_themes = $this->get_blogs_themes(); - $parent_of = array(); - - /** - * Provide the data to the Theme of each site. - * - * @var array $data - */ - foreach ( $blogs_themes as $blog_id => $data ) { - - $template = false; - if ( array_key_exists( 'template', $data ) ) { - $template = $data['template']; - } - - if ( $template === $theme_key && $template !== $data['stylesheet'] ) { - $theme = wp_get_theme( $data['stylesheet'] ); - $parent_of[] = $theme->get( 'Name' ); - } - } - - return array_unique( $parent_of ); - } - - /** - * Check, if the status of the site archived. - * - * @param integer $site_id ID of the site. - * - * @return bool - */ - public function is_archived( $site_id ) { - - $site_id = (int) $site_id; - - return (bool) get_blog_details( $site_id )->archived; - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-admin-bar-tweaks.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-admin-bar-tweaks.php deleted file mode 100755 index ab92e5742..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-admin-bar-tweaks.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php -/** - * Adds several useful items to the multisite 'Network Admin' admin bar. - * - * @since 2013-07-19 - * @version 2016-10-28 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Admin_Bar_Tweaks', 'init' ) ); - -/** - * Class Multisite_Admin_Bar_Tweaks - */ -class Multisite_Admin_Bar_Tweaks { - - /** - * Initialize this class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * @since 0.0.1 - */ - public function __construct() { - - add_action( 'wp_before_admin_bar_render', array( $this, 'enhance_network_admin_bar' ) ); - add_action( 'wp_before_admin_bar_render', array( $this, 'enhance_network_blog_admin_bar' ) ); - } - - /** - * Enhance network item. - * - * @since 0.0.1 - */ - public function enhance_network_admin_bar() { - - global $wp_admin_bar; - - // Show only when the user has at least one site, or they're a super admin. - if ( ! isset( $wp_admin_bar->user->blogs ) || count( $wp_admin_bar->user->blogs ) < 1 ) { - return; - } - - // Since WP version 3.7 is the plugin link in core. - // Return, if is active. - /** - * Toolbar API class. - * - * @var WP_Admin_Bar $wp_admin_bar - */ - $wp_admin_bar_nodes = (array) $wp_admin_bar->get_nodes(); - - if ( array_key_exists( 'network-admin-p', $wp_admin_bar_nodes ) ) { - return; - } - - // Add a link to the Network > Plugins page. - $wp_admin_bar->add_node( - array( - 'parent' => 'network-admin', - 'id' => 'network-admin-plugins', - 'title' => __( 'Plugins' ), - 'href' => network_admin_url( 'plugins.php' ), - ) - ); - } - - /** - * Enhance each blog menu in network admin bar. - * - * Add new 'Manage Comment' Item with count of comments, there wait for moderate - * - * @since 0.0.1 - */ - public function enhance_network_blog_admin_bar() { - - /** - * The Toolbar API class. - * - * @var WP_Admin_Bar $wp_admin_bar - */ - global $wp_admin_bar; - - if ( ! isset( $wp_admin_bar->user->blogs ) ) { - return; - } - - foreach ( (array) $wp_admin_bar->user->blogs as $blog ) { - - switch_to_blog( $blog->userblog_id ); - - $menu_id = 'blog-' . $blog->userblog_id; - - if ( current_user_can( 'edit_posts' ) ) { - - $wp_admin_bar->remove_node( $menu_id . '-c' ); - - $awaiting_mod = wp_count_comments(); - $awaiting_mod = $awaiting_mod->moderated; - - $title = __( 'Manage Comments' ) - . '<span class="ab-label awaiting-mod pending-count count-' - . (int) $awaiting_mod . '" style="margin-left:.2em">' . number_format_i18n( $awaiting_mod ) . '</span>'; - - $awaiting_title = esc_attr( - sprintf( - _n( - '%s comment awaiting moderation', - '%s comments awaiting moderation', - $awaiting_mod - ), number_format_i18n( $awaiting_mod ) - ) - ); - - $wp_admin_bar->add_menu( - array( - 'parent' => $menu_id, - 'id' => $menu_id . '-comments', - 'title' => $title, - 'href' => admin_url( 'edit-comments.php' ), - 'meta' => array( 'title' => $awaiting_title ), - ) - ); - - } - - restore_current_blog(); - - } - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-change-footer-text.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-change-footer-text.php deleted file mode 100755 index 371eb4633..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-change-footer-text.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php -/** - * Change/Enhance the admin footer text with RAM, SQL Queries and RAM version in Footer. - * - * Only for Admins - * - * Use the follow filter hooks for different changes - * Use the filter hook to change capability to view the new text on admin footer - * - Hook: multisite_enhancements_admin_footer_text_capability - * - default is: manage_options - * Reset of text from wp default - * - Hook: multisite_enhancements_reset_admin_footer_text - * - default is: TRUE - * Change content if admin footer text - * - Hook: multisite_enhancements_admin_footer_text - * - default is: Blog-Name, RAM, SQL, RAM Version - * - * @since 2013-07-23 - * @version 2016-10-28 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Change_Footer_Text', 'init' ) ); - -/** - * Class Multisite_Change_Footer_Text - */ -class Multisite_Change_Footer_Text { - - /** - * Define the capability to view the new admin footer text. - * - * @since 0.0.2 - * @var String - */ - static protected $capability = 'manage_options'; - - /** - * Filter to reset admin footer message. - * - * @since 0.0.2 - * @var Boolean - */ - static protected $reset_footer_text = TRUE; - - /** - * Initialize the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * Use the filter hook to change capability to view the new text on admin footer - * Hook: multisite_enhancements_admin_footer_text_capability - * - * @since 0.0.2 - */ - public function __construct() { - - /** - * Use this filter to change capability to view the new text on admin footer. - * - * @type string - */ - $capability = apply_filters( - 'multisite_enhancements_admin_footer_text_capability', - self::$capability - ); - - // Get default content for non admins. - if ( current_user_can( $capability ) ) { - add_action( 'admin_footer_text', array( $this, 'get_footer_text' ) ); - } - } - - /** - * Change admin footer text. - * - * Use the two different filters for change - * Reset of text from wp default - Hook: multisite_enhancements_reset_admin_footer_text - * Change content - Hook: multisite_enhancements_admin_footer_text - * - * @since 0.0.2 - * - * @param String $footer_text The string for the footer to inform the users. - * - * @return String - */ - public function get_footer_text( $footer_text ) { - - /** - * Filter to reset admin footer message. - * - * @type string - */ - if ( apply_filters( - 'multisite_enhancements_reset_admin_footer_text', - self::$reset_footer_text - ) - ) { - $footer_text = ''; - } - - // Set string of admin area. - $blogname = get_bloginfo( 'name' ); - if ( is_network_admin() ) { - $blogname = ' ' . esc_html( $GLOBALS[ 'current_site' ]->site_name ); - } - - $footer_text .= wp_html_excerpt( $blogname, 40, __( '…', 'multisite-enhancements' ) ); - $footer_text .= ' • <abbr title="' - . esc_html__( 'Random-access memory', 'multisite-enhancements' ) - . '">' . esc_html__( 'RAM', 'multisite-enhancements' ) . '</abbr> ' - . number_format_i18n( - memory_get_peak_usage( true ) / 1024 / 1024, - 1 - ) - . esc_html__( '/', 'multisite-enhancements' ) . WP_MEMORY_LIMIT; - $footer_text .= ' • <abbr title="' . esc_html__( 'Structured Query Language', - 'multisite-enhancements' ) . '">' . esc_html__( 'SQL', - 'multisite-enhancements' ) . '</abbr> ' . $GLOBALS[ 'wpdb' ]->num_queries; - $footer_text .= ' • <abbr title="' . esc_html__( 'Version of PHP (Hypertext Preprocessor)', - 'multisite-enhancements' ) . '">' . esc_html__( 'PHPv', - 'multisite-enhancements' ) . '</abbr> ' . phpversion(); - - /** - * Filter for change content form other source. - * - * @type string - */ - return apply_filters( 'multisite_enhancements_admin_footer_text', $footer_text ); - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-core.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-core.php deleted file mode 100755 index 5893d30ec..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-core.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php -/** - * Core methods, there will be used. - * - * @since 2013-07-24 - * @version 2016-10-28 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Core', 'init' ) ); - -/** - * Class Multisite_Core - */ -class Multisite_Core { - - /** - * Init the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Returns an array of arrays containing information about each public blog hosted on this WPMU install. - * - * Only blogs marked as public and flagged as safe (mature flag off) are returned. - * - * @param Integer $start The first blog to return in the array. - * @param Integer $num The number of blogs to return in the array (thus the size of the array). - * Setting this to string 'all' returns all blogs from $start. - * @param Boolean $details Get also Postcount for each blog, default is False for a better performance. - * @param Integer $expires Time until expiration in seconds, default 86400s (1day). - * - * @return array Returns an array of arrays each representing a blog. - * Details are represented in the following format: - * blog_id (integer) ID of blog detailed. - * domain (string) Domain used to access this blog. - * path (string) Path used to access this blog. - * postcount (integer) The number of posts in this blog. - */ - public static function get_blog_list( $start = 0, $num = 10, $details = FALSE, $expires = 86400 ) { - - // Since WP version 4.6.0 is a new function inside the core to get this value. - if ( function_exists( 'get_sites' ) ) { - return get_sites( - array( - 'number' => $num, - ) - ); - } - - // For WordPress smaller version 4.6.0, available since WordPress 3.7. - if ( function_exists( 'wp_get_sites' ) ) { - return wp_get_sites( - array( - 'limit' => $num, - ) - ); - } - - // Get blog list from cache. - $blogs = get_site_transient( 'multisite_blog_list' ); - - // For debugging purpose. - if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { - $blogs = FALSE; - } - - if ( FALSE === $blogs ) { - - global $wpdb; - - // Add limit for select. - $limit = "LIMIT $start, $num"; - if ( 'all' === $num ) { - $limit = ''; - } - - /** @noinspection SqlDialectInspection */ - /** @noinspection SqlNoDataSourceInspection */ - $blogs = $wpdb->get_results( - $wpdb->prepare( - " - SELECT blog_id, domain, path - FROM $wpdb->blogs - WHERE site_id = %d - AND public = '1' - AND archived = '0' - AND mature = '0' - AND spam = '0' - AND deleted = '0' - ORDER BY registered ASC - $limit - ", $wpdb->siteid - ), - ARRAY_A - ); - - // Set the Transient cache. - set_site_transient( 'multisite_blog_list', $blogs, $expires ); - } - - // Only if usable, set via var. - if (TRUE === $details ) { - - /** - * Get data to each site in the network. - * - * @var array $blog_list - */ - $blog_list = get_site_transient( 'multisite_blog_list_details' ); - - // For debugging purpose. - if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { - $blog_list = FALSE; - } - - if ( FALSE === $blog_list ) { - - global $wpdb; - /** - * The data details of each site of the network. - * - * @var array $blog_details - */ - foreach ( (array) $blogs as $blog_details ) { - $blog_list[ $blog_details[ 'blog_id' ] ] = $blog_details; - $blog_list[ $blog_details[ 'blog_id' ] ][ 'postcount' ] = $wpdb->get_var( - "SELECT COUNT(ID) - FROM " . $wpdb->get_blog_prefix( $blog_details[ 'blog_id' ] ) . "posts - WHERE post_status='publish' - AND post_type='post'" - ); - } - - // Set the Transient cache. - set_site_transient( 'multisite_blog_list_details', $blog_list, $expires ); - } - unset( $blogs ); - $blogs = $blog_list; - } - - if ( FALSE === is_array( $blogs ) ) { - return array(); - } - - return $blogs; - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-plugins.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-plugins.php deleted file mode 100644 index 91db91fb3..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-plugins.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * Add simple javascript to filter the plugin list on network and single plugin page of WordPress back end. - * - * @since 2015-11-29 - * @package WordPress - */ - -add_action( 'admin_init', array( 'Filtering_Plugins', 'init' ) ); - -/** - * Class Filtering_Plugins - */ -class Filtering_Plugins { - - /** - * Init the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Filtering_Plugins constructor. - */ - public function __construct() { - - add_action( 'admin_print_scripts-plugins.php', array( $this, 'enqueue_script' ) ); - } - - /** - * Enqueue scripts. - */ - public function enqueue_script() { - - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; - - wp_register_script( - 'me_filtering_plugins', - plugins_url( '/inc/assets/js/filtering-plugins' . $suffix . '.js', MULTISITE_ENHANCEMENT_BASE ), - array( 'jquery' ), - '2015-11-29', - TRUE - ); - wp_enqueue_script( 'me_filtering_plugins' ); - } -} diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-themes.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-themes.php deleted file mode 100644 index 57daf730b..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-filtering-themes.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * Add simple javascript to filter the theme list on network and single site theme page of WordPress back end. - * - * @since 2016-10-05 - * @package WordPress - */ - -add_action( 'admin_init', array( 'Filtering_Themes', 'init' ) ); - -/** - * Class Filtering_Themes - */ -class Filtering_Themes { - - /** - * Init the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Filtering_Plugins constructor. - */ - public function __construct() { - - add_action( 'admin_print_scripts-themes.php', array( $this, 'enqueue_script' ) ); - } - - /** - * Enqueue scripts. - */ - public function enqueue_script() { - - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; - - wp_register_script( - 'me_filtering_plugins', - plugins_url( '/inc/assets/js/filtering-themes' . $suffix . '.js', MULTISITE_ENHANCEMENT_BASE ), - array( 'jquery' ), - '2016-10-05', - TRUE - ); - wp_enqueue_script( 'me_filtering_plugins' ); - } -} diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/class-multisite-add-new-plugin.php b/wp-content/plugins/multisite-enhancements/inc/autoload/class-multisite-add-new-plugin.php deleted file mode 100755 index 29d9213de..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/class-multisite-add-new-plugin.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * Enables an 'Add New' link under the Plugins menu for Network admins. - * - * @since 2013-07-19 - * @version 2016-01-15 - * @package WordPress - */ - -add_action( 'init', array( 'Multisite_Add_New_Plugin', 'init' ) ); - -/** - * Class Multisite_Add_New_Plugin - */ -class Multisite_Add_New_Plugin { - - /** - * Init the class. - */ - public static function init() { - - $class = __CLASS__; - if ( empty( $GLOBALS[ $class ] ) ) { - $GLOBALS[ $class ] = new $class; - } - } - - /** - * Init function to register all used hooks. - * - * @since 0.0.1 - */ - public function __construct() { - - // Only on each blog, not network admin. - if ( is_network_admin() ) { - return; - } - - add_action( 'admin_menu', array( $this, 'add_plugins_page' ) ); - } - - /** - * Add menu item. - * - * @since 0.0.1 - */ - public function add_plugins_page() { - - add_plugins_page( - __( 'Add New' ), - __( 'Add New' ), - 'manage_network', - 'plugin-install.php' - ); - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/inc/autoload/core.php b/wp-content/plugins/multisite-enhancements/inc/autoload/core.php deleted file mode 100755 index 3e67445e3..000000000 --- a/wp-content/plugins/multisite-enhancements/inc/autoload/core.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * Core functions, there was missed in WP Core for use with Multisite. - * - * Hint: Since WordPress version 3.7.0 use the function 'wp_get_sites()', - * Hint again: Since WordPress version 4.6.0 is the function 'get_sites()' the right alternative, - * a alternative inside the core of WP - * - * @since 2013-07-24 - * @version 2016-10-05 - * @package WordPress - */ - -if ( ! function_exists( 'get_blog_list' ) ) { - - /** - * Returns an array of arrays containing information about each public blog hosted on this WPMU install. - * - * Only sites marked as public and flagged as safe (mature flag off) are returned. - * - * @param Integer $start The first blog to return in the array. - * @param Integer $num The number of sites to return in the array (thus the size of the array). - * Setting this to string 'all' returns all sites from $start. - * @param Integer $expires Time until expiration in seconds, default 86400s (1day). - * - * @return array|bool - * Details are represented in the following format: - * blog_id (integer) ID of blog detailed. - * domain (string) Domain used to access this blog. - * path (string) Path used to access this blog. - * postcount (integer) The number of posts in this blog. - */ - function get_blog_list( $start = 0, $num = 10, $expires = 86400 ) { - if ( ! is_multisite() ) { - return false; - } - - if ( ! class_exists( 'Multisite_Core' ) ) { - require_once __DIR__ . '/class-core.php'; - new Multisite_Core(); - } - - return Multisite_Core::get_blog_list( $start, $num, $expires ); - } -} // end if fct exist diff --git a/wp-content/plugins/multisite-enhancements/multisite-enhancements.php b/wp-content/plugins/multisite-enhancements/multisite-enhancements.php deleted file mode 100644 index 391fd7f81..000000000 --- a/wp-content/plugins/multisite-enhancements/multisite-enhancements.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php # -*- coding: utf-8 -*- -/** - * Plugin Name: Multisite Enhancements - * Description: Enhance Multisite for Network Admins with different topics - * Plugin URI: https://github.com/bueltge/WordPress-Multisite-Enhancements - * Version: 1.5.1 - * Author: Frank Bültge - * Author URI: https://bueltge.de - * License: GPLv2+ - * License URI: ./assets/LICENSE - * Text Domain: multisite-enhancements - * Domain Path: /languages - * Network: true - */ - -! defined( 'ABSPATH' ) && exit; - -add_filter( 'plugins_loaded', array( 'Multisite_Enhancements', 'get_object' ) ); - -/** - * Class Multisite_Enhancements. - * Plugin wrapper to list as plugin in WordPress environment and load all necessary files. - * Use the filter hook 'multisite_enhancements_autoload' to unset classes, there is not necessary for you. - */ -class Multisite_Enhancements { - - /** - * Define folder, there have inside the autoload files. - * - * @since 0.0.1 - * @var String - */ - static protected $file_base = ''; - - /** - * The class object. - * - * @since 0.0.1 - * @var String - */ - static protected $class_object; - - /** - * Load the object and get the current state. - * - * @since 0.0.1 - * @return String $class_object - */ - public static function get_object() { - - if ( NULL === self::$class_object ) { - self::$class_object = new self; - } - - return self::$class_object; - } - - /** - * Init function to register all used hooks. - * - * @since 0.0.1 - */ - public function __construct() { - - // This check prevents using this plugin not in a multisite. - if ( function_exists( 'is_multisite' ) && ! is_multisite() ) { - add_filter( 'admin_notices', array( $this, 'error_msg_no_multisite' ) ); - - return; - } - - $this->load_translation(); - - // Since 2015-08-18 only PHP 5.3, use now __DIR__ as equivalent to dirname(__FILE__). - self::$file_base = __DIR__ . '/inc'; - self::load(); - } - - /** - * Load translation file. - * - * @since 2016-10-23 - */ - public function load_translation() { - - load_plugin_textdomain( - 'multisite-enhancements', - FALSE, - basename( __DIR__ ) . '/languages/' - ); - } - - /** - * Display an Admin Notice if multisite is not active. - * - * @since 0.0.1 - */ - public function error_msg_no_multisite() { - - deactivate_plugins( plugin_basename( __FILE__ ) ); - ?> - <div class="error"> - <p> - <?php esc_html_e( - 'The plugin only works in a multisite installation. See how to install a multisite network:', - 'multisite-enhancements' - ); ?> - <a href="http://codex.wordpress.org/Create_A_Network" title="<?php esc_html_e( - 'WordPress Codex: Create a network', 'multisite-enhancements' - ); ?>"> - <?php esc_html_e( 'WordPress Codex: Create a network', 'multisite-enhancements' ); ?> - </a> - </p> - </div> - - <div class="updated notice"> - <p> - <?php echo wp_kses( - __( 'Plugin <strong>deactivated</strong>.', 'multisite-enhancements' ), - array( - 'strong' => array(), - ) - ); ?> - </p> - </div> - <?php - } - - /** - * Load all files in folder inc. - * Use the filter hook 'multisite_enhancements_autoload' to unset classes, there is not necessary for you. - * - * @since 0.0.1 - */ - public static function load() { - - $file_base = self::$file_base; - define( 'MULTISITE_ENHANCEMENT_BASE', $file_base ); - - $autoload_paths = glob( "$file_base/autoload/*.php" ); - - foreach ( $autoload_paths as $classnames => $path ) { - $path_split = explode( DIRECTORY_SEPARATOR, $path ); - $class = end( $path_split ); - $autoload_files[$class] = $path; - } - - $autoload_files = (array) apply_filters( 'multisite_enhancements_autoload', $autoload_files ); - - // Load files. - foreach ( $autoload_files as $path ) { - /** - * Path of each file, that we load. - * - * @var string $path - */ - require_once $path; - } - } - -} // end class diff --git a/wp-content/plugins/multisite-enhancements/readme.txt b/wp-content/plugins/multisite-enhancements/readme.txt deleted file mode 100644 index 07c2f421b..000000000 --- a/wp-content/plugins/multisite-enhancements/readme.txt +++ /dev/null @@ -1,213 +0,0 @@ -=== Multisite Enhancements === -Contributors: Bueltge, inpsyde -Tags: multisite, administration, admin bar, network, -Requires at least: 4.6 -Tested up to: 5.1 -Requires PHP: 5.6 -Stable tag: 1.5.1 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html - -Enhance Multisite for Network Admins with different topics - -== Description == -When you work quite a bit with WordPress Multisites, sometimes you need more information or menu items. This plugin enhances the network area for super admins with useful functions. - -* Adds Blog and User ID in network view [more](http://wpengineer.com/2188/view-blog-id-in-wordpress-multisite/) -* Enables an 'Add New' link under the Plugins menu for Network admins -* Adds several useful items to the multisite 'Network Admin' admin bar -* On the network plugins page, shows which site has this plugin active -* On the network theme page, shows which blog has the theme active and is a Child theme -* Change Admin footer text for Administrators to view currently used RAM, SQL, RAM version fast -* Adds Favicon from theme folder to the admin area to easily identify the blog, use the `favicon.ico` file in the theme folder of the active theme in each blog -* Adds Favicon to each blog on the Admin Bar Item 'My Sites'. If you a like a custom path for each favicon, please see the [documentation](https://github.com/bueltge/WordPress-Multisite-Enhancements/wiki/Filter-Hook-for-Favicon-File-Path) for this feature. -* Removes also the 'W' logo and his sub-links in admin bar -* Adds the status to each site in the admin bar to identify fastly if the site has a `noindex` status and to see the external url. -* Handy ssl identifier to each site in network site view page. -* Add functions to be used in your install - * The function `get_blog_list()` is currently deprecated in the WP Core, but currently usable. The plugin checks this and gets an alternative in [`inc/autoload/core.php`](./inc/autoload/core.php) - * If you will develop with the alternative to this function from my source, then use the method `get_blog_list()` in class `Multisite_Core`. My source also use caching with the Transient API. More about the function in [`inc/autoload/class-core.php`](./inc/autoload/class-core.php). - * If you use WordPress version 3.7 and higher, then check the function `wp_get_sites()`, the new alternative function inside the core to get all sides inside the network. The function accepts a array with arguments, see the [description](http://wpseek.com/wp_get_sites/). - * But if you use WordPress 4.6 and higher then that new alternative ;) - `get_sites()` - is the current function to get all sites in the network. The helper method of this plugin `Multisite_Core::get_blog_list()` or the function `get_blog_list()` have all checks included. - -* Filter theme list to find your target fast. Works on single theme page and also network theme page. - -= Crafted by Inpsyde = -The team at [Inpsyde](http://inpsyde.com/) is engineering the web and WordPress since 2006. - -= Donation? = -You want to donate - we prefer a [positive review](https://wordpress.org/support/view/plugin-reviews/multisite-enhancements?rate=5#postform), nothing more. - -== Installation == - -= Requirements = -* WordPress Multisite 3.0+ -* PHP 5.6*, newer PHP versions will work faster. (It should work also under PHP 5.3, but untested.) - -= Installation = -* Use the installer via back-end of your install or ... - -1. Unpack the download-package -2. Upload the files to the `/wp-content/plugins/` directory -3. Activate the plugin through the 'Network/Plugins' menu in WordPress and hit 'Network Activate' -4. No options, no settings, it works - -== Screenshots == -1. Add Blog-ID on Sites -2. Add User-ID on Users -3. Add New link to install new plugin on each blog -4. Manage Comments with Counter on Admin Bar -5. On which blog is the plugin active -6. On which blog is the theme active -7. New Admin footer text -8. Favicon on Admin bar -9. Filter Themes - -== Other Notes == - -**Crafted by [Inpsyde](https://inpsyde.com) · The team is engineering the Web since 2006.** - -= Hints, knowledge = -See also for helpful hints on the [wiki page](https://github.com/bueltge/wordpress-multisite-enhancements/wiki). -Especially the follow topics are interest: - -* [Filter Hook for Favicon File Path - Define your custom Favicon path](https://github.com/bueltge/WordPress-Multisite-Enhancements/wiki/Filter-Hook-for-Favicon-File-Path) -* [Large Network Problem](https://github.com/bueltge/wordpress-multisite-enhancements/wiki/Large-Network-Problem) - -= Bugs, technical hints or contribute = -Please give me feedback, contribute and file technical bugs on this -[GitHub Repo](https://github.com/bueltge/WordPress-Multisite-Enhancements/issues), use Issues. - -= License = -Good news, this plugin is free for everyone! Since it's released under the GPL, -you can use it free of charge on your personal or commercial blog. But if you enjoy this plugin, -you can thank me and leave a -[small donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6069955 "Paypal Donate link") -for the time I've spent writing and supporting this plugin. -And I really don't want to know how many hours of my life this plugin has already eaten ;) - -= Contact & Feedback = -The plugin is designed and developed by me [Frank Bültge](http://bueltge.de), [G+ Page](https://plus.google.com/+FrankBültge/about?rel=author) - -Please let me know if you like the plugin or you hate it or whatever ... -Please fork it, add an issue for ideas and bugs on the [Github Repository](https://github.com/bueltge/WordPress-Multisite-Enhancements). - -= Disclaimer = -I'm German and my English might be gruesome here and there. -So please be patient with me and let me know of typos or grammatical parts. Thanks - -== Changelog == -= 1.5.0 (2019-02-25) = -* Remove feature 'Networkmenu is now scrollable'. - -= 1.5.0 (2019-02-24) = -* Networkmenu is now scrollable. -* More clearance for the message about inactive cache. -* Small php fixes. - -= 1.4.3 (2018-05-17) = -* Fix undefined index Network on plugin list, #46 -* Fix small php notes. -* Fix the possibility to translate the footer message about RAM, SQL queries. -* Add fix to leave message for the parent theme in a single line. -* Add Ui change to list more as 4 themes in Theme usage overview. Probs @n-goncalves #44 - -= 1.4.2 (2017-02-22) = -* Change syntax for usage of plugins, themes; probs @cfoellmann -* Count the usage in sites for plugins, themes; probs @cfoellmann -* Change of the autoloader, the removal of a function is now more solid. See [the wiki page](https://github.com/bueltge/wordpress-multisite-enhancements/wiki/Remove-features); probs @cfoellmann -* Added option to display or hide the list of sites if too big #44; probs @n-goncalves - -= 1.4.1 (2017-08-10) = -* Added a change for initialization of the class to run also on php 5.3 installs. - -= 1.4.0 (2017-07-23) = -* Adds handy ssl identifier to each site in network site view page. - -= 1.3.8 (2017-02-23) = -* Fixed duplicated view on parent theme usage. -* Adds status text to a site, if is a archived site on plugin/theme list. - -= 1.3.7 (2016-10-24) = -* Fix the usage of plugins for each site in the network on the plugin network view. -* Add helpers to remove transient caching for development, debugging, if `WP_DEBUG` is true. -* Fix markup error of missing closing tag in footer text. -* Fix markup error on comment admin bar menu item in each site item of the item 'My Sites'. -* Add possibility to translate the plugin. - -= 1.3.6 (2016-10-07) = -* Switch to new core function `get_sites` -* Remove Plugin Search, now inside the core, since WP 3.6.0 -* Add Theme filter search to single and network theme page to find fast and simple the result. - -= 1.3.5 (2016-05-30) = -* Performance: Change the function to get all sites of a user to set favicon. [#25](https://github.com/bueltge/wordpress-multisite-enhancements/issues/25) - -= 1.3.4 (2016-05-19) = -* Fix value type for nodes from admin bar. -* Enhance the Multisite requirements check. - -= 1.3.3 (2016-01-15) = -* Fix Blog Id enhancement, change filter type. -* Change different code topics for better performance and stability. - -= 1.3.2 (2015-12-17) = -* Prevent PHP Warning. Props noelboss - -= 1.3.1 (2015-12-03) = -* Enhance the external domain check for more exactly check, that's also work on root domain of multisite. Props Matt [Thread](https://wordpress.org/support/topic/main-blog-being-tagged-as-external-domain) - -= 1.3.0 (2015-11-28) = -* Add new functionality to filter plugin list live. -* Improve status label filter `multisite_enhancements_status_label`, now with the parameters `$blogname` and `$blog`. - -= 1.2.1 (2015-09-24) = -* Bugfix: Correction for the site icon topic. The functions "has_site_icon" and "get_site_icon_url" aren't compatible with multisites. Icon only displayed when on that blog, in network or other blog the WP logo showed. -* Enhancement: Check for active usage of admin bar before add favicon to Admin Bar. - -= 1.2.0 (2015-09-03) = -* Add support for Favicon feature `wp_site_icon` since WP 4.3, probs [JoryHogeveen](https://github.com/JoryHogeveen) -* Add status label to each site in the admin bar, probs JoryHogeveen -* Codex changes -* Add hook `multisite_enhancements_autoload` to unset files, there not necessary on autoload, see also the [Wiki](https://github.com/bueltge/wordpress-multisite-enhancements/wiki) for more information - -= 1.1.0 (2015-02-26) = -* Some modifications to plugin and theme admin columns for better performance and usage on Multisites with more as 100 blogs, plugins, themes [Issue #16](https://github.com/bueltge/wordpress-multisite-enhancements/pull/16) -* Code inspections -* Enhance the value to get sites inside the network form WordPress default 100 to 9999 -* Add hook `multisite_enhancements_sites_limit` to change this value, see [wiki page](https://github.com/bueltge/wordpress-multisite-enhancements/wiki/Large-Network-Problem) - -= 1.0.7 (09/23/2014) = -* Code maintenance -* Add parameters for custom favicon, see [documentation](https://github.com/bueltge/WordPress-Multisite-Enhancements/wiki/Filter-Hook-for-Favicon-File-Path) - -= 1.0.6 (09/13/2014) = -* Add check for child theme, that you fast see, if is a child and what is the parent inside the network view of themes - -= 1.0.5 (05/15/2014) = -* Fix list of active plugin in plugin network view -* Add hook for custom favicon path, see [documentation](https://github.com/bueltge/WordPress-Multisite-Enhancements/wiki/Filter-Hook-for-Favicon-File-Path) - -= 1.0.4 (04/27/2014) = -* Add break, if no plugin is active, fixed [Error in "Active In" column](http://wordpress.org/support/topic/error-in-active-in-column) - -= 1.0.3 (03/09/2014) = -* Remove Super Admin check, that works the enhancements also on other roles. -* Add indicator for "Network Only" Plugins. -* Add Favicon Indicator also in Admin Bar on Front end side. - -= 1.0.2 (02/03/2014) = - * Add Favicon in Admin Bar also in Front end - * Enhance style for favicon size - * Grammar fix in tags, readme - * Small changes for columns and 3.8 design - -= 1.0.1 (01/03/2014) = - * Add CSS rule for new WP 3.8 back end design (mp6 plugin) - * Add more whitespace on the comment count in admin bar - * Enhance the filter to list active plugins [#1](https://github.com/bueltge/WordPress-Multisite-Enhancements/issues/1) - -= 1.0.0 (10/31/2013) = - * First release on wordpress.org after different installs with different users - -For more information about changes see the commits on the [working repository](https://github.com/bueltge/WordPress-Multisite-Enhancements/commits/master). -- GitLab