| @@ -1,20 +1,20 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | 3 | * wp-init.php |
| 4 | - * | |
| 4 | + * | |
| 5 | 5 | * Copyright (c) "kento" Karim Rahimpur www.itthinx.com |
| 6 | - * | |
| 6 | + * | |
| 7 | 7 | * This code is released under the GNU General Public License. |
| 8 | 8 | * See COPYRIGHT.txt and LICENSE.txt. |
| 9 | - * | |
| 9 | + * | |
| 10 | 10 | * This code is distributed in the hope that it will be useful, |
| 11 | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | 13 | * GNU General Public License for more details. |
| 14 | - * | |
| 14 | + * | |
| 15 | 15 | * This header and all notices must be kept intact. |
| 16 | - * | |
| 16 | + * | |
| 17 | 17 | * @author Karim Rahimpur |
| 18 | 18 | * @package groups |
| 19 | 19 | * @since groups 1.0.0 |
| 20 | 20 | */ |
| @@ -35,10 +35,10 @@ | ||
| 35 | 35 | } |
| 36 | 36 | |
| 37 | 37 | // <= 3.2.1 |
| 38 | 38 | if ( !function_exists( 'is_user_member_of_blog' ) ) { |
| 39 | - function is_user_member_of_blog( $user_id, $blog_id = 0 ) { | |
| 40 | - return false !== get_user_by( "id", $user_id ); | |
| 39 | + function is_user_member_of_blog( $user_id, $blog_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | |
| 40 | + return false !== get_user_by( 'id', $user_id ); | |
| 41 | 41 | } |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | /** |
| @@ -44,67 +44,101 @@ | ||
| 44 | 44 | /** |
| 45 | 45 | * Load core : |
| 46 | 46 | */ |
| 47 | 47 | |
| 48 | +require_once GROUPS_VIEWS_LIB . '/class-groups-log.php'; | |
| 49 | + | |
| 50 | +require_once GROUPS_CORE_LIB . '/class-groups-lock.php'; | |
| 51 | +require_once GROUPS_CORE_LIB . '/class-groups-lock-exception.php'; | |
| 52 | + | |
| 48 | 53 | require_once GROUPS_CORE_LIB . '/class-groups-cache.php'; |
| 49 | 54 | require_once GROUPS_CORE_LIB . '/class-groups-cache-object.php'; |
| 50 | 55 | |
| 51 | -require_once( GROUPS_CORE_LIB . '/class-groups-utility.php' ); | |
| 56 | +require_once GROUPS_CORE_LIB . '/class-groups-utility.php'; | |
| 52 | 57 | |
| 53 | 58 | // options |
| 54 | -require_once( GROUPS_CORE_LIB . '/class-groups-options.php' ); | |
| 59 | +require_once GROUPS_CORE_LIB . '/class-groups-options.php'; | |
| 55 | 60 | |
| 56 | 61 | // plugin control: activation, deactivation, ... |
| 57 | -require_once( GROUPS_CORE_LIB . '/class-groups-controller.php' ); | |
| 62 | +require_once GROUPS_CORE_LIB . '/class-groups-controller.php'; | |
| 58 | 63 | |
| 64 | +// legacy enabled? | |
| 65 | +$groups_legacy_enable = Groups_Options::get_option( GROUPS_LEGACY_ENABLE, GROUPS_LEGACY_ENABLE_DEFAULT ); | |
| 66 | + | |
| 59 | 67 | // admin |
| 60 | 68 | if ( is_admin() ) { |
| 61 | - require_once( GROUPS_ADMIN_LIB . '/class-groups-admin.php' ); | |
| 69 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin.php'; | |
| 70 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-welcome.php'; | |
| 62 | 71 | if ( Groups_Options::get_option( GROUPS_SHOW_IN_USER_PROFILE, GROUPS_SHOW_IN_USER_PROFILE_DEFAULT ) ) { |
| 63 | - require_once( GROUPS_ADMIN_LIB . '/class-groups-admin-user-profile.php' ); | |
| 72 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-user-profile.php'; | |
| 64 | 73 | } |
| 65 | - require_once( GROUPS_ADMIN_LIB . '/class-groups-admin-users.php' ); | |
| 66 | - require_once( GROUPS_ADMIN_LIB . '/class-groups-admin-posts.php' ); | |
| 67 | - require_once( GROUPS_ADMIN_LIB . '/class-groups-admin-post-columns.php' ); | |
| 74 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-users.php'; | |
| 75 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-posts.php'; | |
| 76 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-post-columns.php'; | |
| 77 | + if ( $groups_legacy_enable ) { | |
| 78 | + require_once GROUPS_ADMIN_LIB . '/class-groups-admin-deprecation-notice.php'; // @since 4.2.0 | |
| 79 | + require_once GROUPS_LEGACY_LIB . '/admin/class-groups-admin-posts-legacy.php'; | |
| 80 | + require_once GROUPS_LEGACY_LIB . '/admin/class-groups-admin-post-columns-legacy.php'; | |
| 81 | + } | |
| 68 | 82 | } |
| 69 | 83 | |
| 70 | 84 | // help |
| 71 | 85 | if ( is_admin() ) { |
| 72 | - require_once( GROUPS_CORE_LIB . '/class-groups-help.php' ); | |
| 86 | + require_once GROUPS_CORE_LIB . '/class-groups-help.php'; | |
| 73 | 87 | } |
| 74 | 88 | |
| 75 | -require_once( GROUPS_CORE_LIB . '/class-groups-capability.php' ); | |
| 76 | -require_once( GROUPS_CORE_LIB . '/class-groups-group.php' ); | |
| 77 | -require_once( GROUPS_CORE_LIB . '/class-groups-group-capability.php' ); | |
| 78 | -require_once( GROUPS_CORE_LIB . '/class-groups-user.php' ); | |
| 79 | -require_once( GROUPS_CORE_LIB . '/class-groups-user-capability.php' ); | |
| 80 | -require_once( GROUPS_CORE_LIB . '/class-groups-user-group.php' ); | |
| 89 | +require_once GROUPS_CORE_LIB . '/class-groups-capability.php'; | |
| 90 | +require_once GROUPS_CORE_LIB . '/class-groups-group.php'; | |
| 91 | +require_once GROUPS_CORE_LIB . '/class-groups-group-capability.php'; | |
| 92 | +require_once GROUPS_CORE_LIB . '/class-groups-user.php'; | |
| 93 | +require_once GROUPS_CORE_LIB . '/class-groups-user-capability.php'; | |
| 94 | +require_once GROUPS_CORE_LIB . '/class-groups-user-group.php'; | |
| 81 | 95 | |
| 82 | 96 | /** |
| 83 | 97 | * Load auto : |
| 84 | 98 | */ |
| 85 | 99 | |
| 86 | -require_once( GROUPS_AUTO_LIB . '/class-groups-registered.php' ); | |
| 100 | +require_once GROUPS_AUTO_LIB . '/class-groups-registered.php'; | |
| 87 | 101 | |
| 88 | 102 | /** |
| 89 | 103 | * Load access : |
| 90 | 104 | */ |
| 91 | 105 | |
| 92 | -require_once( GROUPS_ACCESS_LIB . '/class-groups-post-access.php' ); | |
| 106 | +require_once GROUPS_ACCESS_LIB . '/class-groups-post-access.php'; | |
| 107 | +if ( $groups_legacy_enable ) { | |
| 108 | + require_once GROUPS_LEGACY_LIB . '/access/class-groups-post-access-legacy.php'; | |
| 109 | +} | |
| 110 | +require_once GROUPS_ACCESS_LIB . '/class-groups-comment-access.php'; | |
| 93 | 111 | |
| 94 | 112 | if ( is_admin() ) { |
| 95 | - require_once( GROUPS_ACCESS_LIB . '/class-groups-access-meta-boxes.php' ); | |
| 113 | + require_once GROUPS_ACCESS_LIB . '/class-groups-access-meta-boxes.php'; | |
| 114 | + if ( $groups_legacy_enable ) { | |
| 115 | + require_once GROUPS_LEGACY_LIB . '/access/class-groups-access-meta-boxes-legacy.php'; | |
| 116 | + } | |
| 96 | 117 | } |
| 97 | -require_once( GROUPS_ACCESS_LIB . '/class-groups-access-shortcodes.php' ); | |
| 98 | -require_once( GROUPS_VIEWS_LIB . '/class-groups-shortcodes.php' ); | |
| 118 | +require_once GROUPS_ACCESS_LIB . '/class-groups-access-shortcodes.php'; | |
| 119 | +require_once GROUPS_VIEWS_LIB . '/class-groups-shortcodes.php'; | |
| 99 | 120 | |
| 100 | 121 | /** |
| 101 | 122 | * Load wp : |
| 102 | 123 | */ |
| 103 | -require_once( GROUPS_WP_LIB . '/class-groups-wordpress.php' ); | |
| 124 | +require_once GROUPS_WP_LIB . '/class-groups-wordpress.php'; | |
| 104 | 125 | |
| 126 | +/** | |
| 127 | + * Load blocks : | |
| 128 | + */ | |
| 129 | +require_once GROUPS_BLOCKS_LIB . '/src/class-groups-blocks.php'; | |
| 130 | + | |
| 131 | +/** | |
| 132 | + * Extras ... | |
| 133 | + */ | |
| 134 | +require_once GROUPS_EXTRA_LIB . '/class-groups-extra.php'; | |
| 135 | + | |
| 136 | +// @since 4.0.0 | |
| 137 | +require_once GROUPS_CORE_LIB . '/class-groups-cache-robot.php'; | |
| 138 | + | |
| 105 | 139 | // widgets |
| 106 | -// include_once( GROUPS_CORE_LIB . '/class-groups-widgets.php' ); | |
| 140 | +// include_once GROUPS_CORE_LIB . '/class-groups-widgets.php'; | |
| 107 | 141 | // add_action( 'widgets_init', 'groups_widgets_init' ); |
| 108 | 142 | |
| 109 | 143 | /** |
| 110 | 144 | * Register widgets |
| @@ -112,16 +146,69 @@ | ||
| 112 | 146 | // function groups_widgets_init() { |
| 113 | 147 | // register_widget( 'Groups_Widget' ); |
| 114 | 148 | // } |
| 115 | 149 | |
| 116 | - | |
| 117 | - | |
| 118 | - | |
| 119 | 150 | /** |
| 120 | 151 | * Returns the prefixed DB table name. |
| 152 | + * | |
| 121 | 153 | * @param string $name the name of the DB table |
| 154 | + * | |
| 122 | 155 | * @return string prefixed DB table name |
| 123 | 156 | */ |
| 124 | -function _groups_get_tablename( $name ) { | |
| 157 | +function _groups_get_tablename( $name ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | |
| 125 | 158 | global $wpdb; |
| 126 | - return $wpdb->prefix . GROUPS_TP . $name; | |
| 159 | + | |
| 160 | + /** | |
| 161 | + * Filters the prefix of the database table to query. | |
| 162 | + * | |
| 163 | + * @since 2.11.0 | |
| 164 | + * | |
| 165 | + * @param str $wpdb->prefix The current WordPress table prefix. Allowed characters are a-z, A-Z, 0-9, the dash - and the underscore _. | |
| 166 | + * | |
| 167 | + * @return str The possibly-modified table prefix. | |
| 168 | + */ | |
| 169 | + $prefix = apply_filters( 'groups_get_table_prefix', $wpdb->prefix ); | |
| 170 | + | |
| 171 | + if ( is_string( $prefix ) ) { | |
| 172 | + $prefix = preg_replace( '/[^a-zA-Z0-9-_]+/', '', $prefix ); | |
| 173 | + } | |
| 174 | + | |
| 175 | + // use the default if the filter returned nonsense or null due to error | |
| 176 | + if ( !is_string( $prefix ) ) { | |
| 177 | + $prefix = $wpdb->prefix; | |
| 178 | + } | |
| 179 | + | |
| 180 | + // Return the constructed table name. | |
| 181 | + return $prefix . GROUPS_TP . $name; | |
| 182 | +} | |
| 183 | + | |
| 184 | +/** | |
| 185 | + * This returns true if admin override is enabled and the current user | |
| 186 | + * is an administrator, otherwise false. | |
| 187 | + * To enable admin override (AKA god mode for admins), add this to | |
| 188 | + * your wp-config.php : | |
| 189 | + * | |
| 190 | + * define( 'GROUPS_ADMINISTRATOR_OVERRIDE', true ); | |
| 191 | + * | |
| 192 | + * Enabling this is NOT recommended for production sites. | |
| 193 | + * | |
| 194 | + * @param int $user_id indicate the user ID or omit to check for the current user | |
| 195 | + * | |
| 196 | + * @return boolean | |
| 197 | + */ | |
| 198 | +function _groups_admin_override( $user_id = null ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | |
| 199 | + $result = false; | |
| 200 | + if ( ( $user_id === null ) && function_exists( 'get_current_user_id' ) ) { | |
| 201 | + $user_id = get_current_user_id(); | |
| 202 | + } | |
| 203 | + if ( $user_id ) { | |
| 204 | + if ( defined( 'GROUPS_ADMINISTRATOR_OVERRIDE' ) && ( GROUPS_ADMINISTRATOR_OVERRIDE === true ) ) { | |
| 205 | + // @since 3.1.0 user_can() relies on get_userdata() which is defined in wp-includes/pluggable.php | |
| 206 | + if ( function_exists( 'user_can' ) && function_exists( 'get_userdata' ) ) { | |
| 207 | + if ( user_can( $user_id, 'administrator' ) ) { | |
| 208 | + $result = true; | |
| 209 | + } | |
| 210 | + } | |
| 211 | + } | |
| 212 | + } | |
| 213 | + return $result; | |
| 127 | 214 | } |