Making WordPress.org

Changeset 12687


Ignore:
Timestamp:
07/03/2023 06:19:58 PM (3 years ago)
Author:
coffee2code
Message:

Moderation: Add Photo Admin role.

See #7119.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/photo-directory/inc/moderation.php

    r12551 r12687  
    6464
    6565        /**
    66          * Adds the 'Photos Moderator' role.
    67          */
    68         public static function add_roles() {
    69                 add_role(
    70                         'photos_moderator',
    71                         __( 'Photos Moderator', 'wporg-photos' ),
    72                         [
    73                                 // Capabilities for photo posts.
    74                                 'read'                    => true,
    75                                 'edit_photos'             => true,
    76                                 'delete_photos'           => true,
    77                                 'publish_photos'          => true,
    78                                 'edit_others_photos'      => true,
    79                                 'delete_others_photos'    => true,
    80                                 'edit_published_photos'   => true,
    81                                 'delete_published_photos' => true,
     66         * Returns all capabilities for photos-related roles.
     67         *
     68         * @param bool $for_photos_admin Optional. Should capabilites include those
     69         *                               exclusive to Photo Admins?
     70         *                               Default false.
     71         * @return array
     72         */
     73        public static function get_photos_caps( $for_photos_admin = false ) {
     74                $caps = [
     75                        // Capabilities for photo posts.
     76                        'read'                    => true,
     77                        'edit_photos'             => true,
     78                        'delete_photos'           => true,
     79                        'publish_photos'          => true,
     80                        'edit_others_photos'      => true,
     81                        'delete_others_photos'    => true,
     82                        'edit_published_photos'   => true,
     83                        'delete_published_photos' => true,
     84                        'upload_files'            => true,
     85                ];
     86
     87                if ( $for_photos_admin ) {
     88                        $caps = array_merge( $caps, [
     89                                // Manage flagged and private photos.
     90                                'manage_flagged_photos'   => true,
     91                                'delete_private_photos'   => true,
    8292                                'edit_private_photos'     => true,
    83                                 'delete_private_photos'   => true,
    8493                                'read_private_photos'     => true,
    85                                 'upload_files'            => true,
    8694                                // Capabilities for posts and media.
    8795                                'edit_posts'              => true,
    … …  
    92100                                'edit_published_posts'    => true,
    93101                                'delete_published_posts'  => true,
    94                                 'edit_private_posts'      => true,
    95                                 'delete_private_posts'    => true,
    96                                 'read_private_posts'      => true,
    97102                                'edit_post'               => true,
    98103                                'delete_post'             => true,
    99104                                'read_post'               => true,
    100                         ]
    101                 );
     105                        ] );
     106                }
     107
     108                return $caps;
     109        }
     110
     111        /**
     112         * Adds the photos-specific roles.
     113         *
     114         * Adds:
     115         * - photos_moderator: User who can moderate photos.
     116         * - photos_administrator: Same as photos moderator, but can additionally:
     117         *     - Access and manage private (aka flagged) photos.
     118         *     - Create/edit/delete posts.
     119         */
     120        public static function add_roles() {
     121                // Remove the roles first, in case the permission set has changed.
     122                remove_role( 'photos_moderator' );
     123                remove_role( 'photos_administrator' );
     124
     125                add_role(
     126                        'photos_moderator',
     127                        __( 'Photo Moderator', 'wporg-photos' ),
     128                        self::get_photos_caps()
     129                );
     130
     131                $admin_caps = self::get_photos_caps( true );
     132
     133                add_role(
     134                        'photos_administrator',
     135                        __( 'Photo Admin', 'wporg-photos' ),
     136                        $admin_caps
     137                );
     138
     139                // Add capabilites to administrator role.
     140                $admin = get_role( 'administrator' );
     141                if ( $admin ) {
     142                        foreach ( $admin_caps as $cap => $val ) {
     143                                $admin->add_cap( $cap );
     144                        }
     145                }
     146        }
     147
     148        /**
     149         * Removes the photo-specific roles.
     150         *
     151         * Removes:
     152         * - photos_moderator
     153         * - photos_administrator
     154         */
     155        public static function remove_roles() {
     156                remove_role( 'photos_moderator' );
     157                remove_role( 'photos_administrator' );
     158
     159                // Remove added capabilites from administrator role.
     160                $admin = get_role( 'administrator' );
     161                foreach ( self::get_photos_caps( true ) as $cap => $val ) {
     162                        // Only remove photos-specific caps.
     163                        if ( false !== strpos( $cap, 'photo' ) ) {
     164                                $admin->remove_cap( $cap );
     165                        }
     166                }
    102167        }
    103168
    … …  
    562627                }
    563628
    564                 $content .= '<h2>' . __( 'Submissions awaiting moderation', 'wporg-photos' ) . "</h2>\n";
     629                $content .= '<h3>' . __( 'Submissions awaiting moderation', 'wporg-photos' ) . "</h3>\n";
    565630                $content .= '<p>';
    566631                $max_pending_submissions = User::get_concurrent_submission_limit( $user_id );
    … …  
    661726
    662727register_activation_hook( WPORG_PHOTO_DIRECTORY_DIRECTORY . '/photo-directory.php', [ __NAMESPACE__ . '\Moderation', 'add_roles' ] );
     728register_deactivation_hook( WPORG_PHOTO_DIRECTORY_DIRECTORY . '/photo-directory.php', [ __NAMESPACE__ . '\Moderation', 'remove_roles' ] );
    663729
    664730add_action( 'plugins_loaded', [ __NAMESPACE__ . '\Moderation', 'init' ] );
Note: See TracChangeset for help on using the changeset viewer.