Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // This code add basic access permissions to Real Media Library
- /**
- * @param string $role
- * @param MatthiasWeb\RealMediaLibrary\api\IFolder $folder
- * @return bool
- */
- function rmlp_role_has_access_to_folder($role, MatthiasWeb\RealMediaLibrary\api\IFolder $folder) {
- $allowed_groups = get_media_folder_meta($folder->getId(), 'allowed_groups', true);
- if($allowed_groups) {
- return in_array($role, $allowed_groups);
- }
- elseif($folder->getParent() >= 0) {
- return rmlp_role_has_access_to_folder($role, wp_rml_get_by_id($folder->getParent()));
- }
- else {
- return false;
- }
- }
- add_filter('RML/Tree/Parsed', function ($parsed) {
- $logged_in_user = wp_get_current_user();
- $roles = ( array )$logged_in_user->roles;
- // Skip permission checks for administrators
- if(in_array('administrator', $roles)) {
- return $parsed;
- }
- foreach ($parsed as $folder) {
- $folder->setVisible(false);
- }
- foreach ($roles as $role) {
- foreach ($parsed as $folder) {
- if(rmlp_role_has_access_to_folder($role, $folder)) {
- //var_dump($role);
- $folder->setVisible(true);
- }
- }
- }
- return $parsed;
- });
- // Permissions metabox
- // Allow only administrators to change access permissions
- if ( in_array( 'administrator', (array) wp_get_current_user()->roles ) ) {
- add_filter("RML/Folder/Meta/Groups", function($groups) {
- $groups["permissions"] = __("Permissions");
- return $groups;
- });
- add_rml_meta_box(
- 'allowed_groups',
- new class implements MatthiasWeb\RealMediaLibrary\api\IMetadata {
- public function content($content, $folder) {
- $allowed_groups = get_media_folder_meta($folder->getId(), 'allowed_groups', true);
- if(!is_array($allowed_groups)) $allowed_groups = [];
- ob_start();
- foreach(wp_roles()->role_names as $role_key => $role_name):
- ?>
- <div>
- <input type="checkbox" name="rmlp_allowed_groups[<?php echo $role_key; ?>]" <?php echo in_array($role_key, $allowed_groups) ? 'checked' : '' ?> value="<?php echo $role_key; ?>"> <?php echo $role_name; ?>
- </div>
- <?php
- endforeach;
- return ob_get_clean();
- }
- public function save($response, $folder, $request) {
- $allowed_groups = array_values($_POST['rmlp_allowed_groups']);
- update_media_folder_meta($folder->getId(), 'rmlp_allowed_groups', $allowed_groups);
- return $response;
- }
- public function scripts($assets) {
- }
- },
- false,
- 10,
- 'permissions'
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement