PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / classes / WpMatomo / Roles.php
matomo / classes / WpMatomo Last commit date
Admin 5 years ago Commands 6 years ago Db 6 years ago Ecommerce 6 years ago Report 6 years ago Site 5 years ago TrackingCode 5 years ago User 5 years ago views 6 years ago API.php 5 years ago Access.php 6 years ago AjaxTracker.php 5 years ago Annotations.php 6 years ago Bootstrap.php 6 years ago Capabilities.php 6 years ago Compatibility.php 6 years ago Email.php 5 years ago Installer.php 6 years ago Logger.php 5 years ago OptOut.php 5 years ago Paths.php 6 years ago PrivacyBadge.php 6 years ago Referral.php 6 years ago Roles.php 6 years ago ScheduledTasks.php 6 years ago Settings.php 5 years ago Site.php 6 years ago TrackingCode.php 5 years ago Uninstaller.php 6 years ago Updater.php 6 years ago User.php 6 years ago
Roles.php
109 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 * @package matomo
8 */
9
10 namespace WpMatomo;
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit; // if accessed directly
14 }
15
16 class Roles {
17 const OPTION_SETUP_NAME = 'roles-setup';
18 const ROLE_PREFIX = 'matomo_';
19 const ROLE_VIEW = 'matomo_view_role';
20 const ROLE_WRITE = 'matomo_write_role';
21 const ROLE_ADMIN = 'matomo_admin_role';
22 const ROLE_SUPERUSER = 'matomo_superuser_role';
23
24 /**
25 * @var Settings
26 */
27 private $settings;
28
29 public function __construct( $settings ) {
30 $this->settings = $settings;
31 }
32
33 public function register_hooks() {
34 add_action( 'init', array( $this, 'add_roles' ) );
35 }
36
37 public function get_available_roles_for_configuration() {
38 global $wp_roles;
39 $is_network_enabled = $this->settings->is_network_enabled();
40 $roles = array();
41
42 foreach ( $wp_roles->role_names as $role_name => $name ) {
43 if ( ! $is_network_enabled && 'administrator' === $role_name ) {
44 // when multi site, then we consider "administrator" just a regular role and not a super user
45 // when not multi site, administrator is automatically the super user
46 continue;
47 }
48
49 if ( $this->is_matomo_role( $role_name ) ) {
50 // a matomo capability which we don't want to change
51 continue;
52 }
53
54 $roles[ $role_name ] = $name;
55 }
56
57 return $roles;
58 }
59
60 public function is_matomo_role( $role_name ) {
61 return strpos( $role_name, self::ROLE_PREFIX ) === 0;
62 }
63
64 public function get_matomo_roles() {
65 return array(
66 self::ROLE_VIEW => array(
67 'name' => 'Matomo View',
68 'defaultCap' => Capabilities::KEY_VIEW,
69 ),
70 self::ROLE_WRITE => array(
71 'name' => 'Matomo Write',
72 'defaultCap' => Capabilities::KEY_WRITE,
73 ),
74 self::ROLE_ADMIN => array(
75 'name' => 'Matomo Admin',
76 'defaultCap' => Capabilities::KEY_ADMIN,
77 ),
78 self::ROLE_SUPERUSER => array(
79 'name' => 'Matomo Super User',
80 'defaultCap' => Capabilities::KEY_SUPERUSER,
81 ),
82 );
83 }
84
85 public function add_roles() {
86 if ( ! $this->has_set_up_roles() ) {
87 foreach ( $this->get_matomo_roles() as $role_name => $config ) {
88 add_role( $role_name, $config['name'], array( $config['defaultCap'] => true ) );
89 }
90 $this->mark_roles_set_up();
91 }
92 }
93
94 private function mark_roles_set_up() {
95 update_option( Settings::OPTION_PREFIX . self::OPTION_SETUP_NAME, 1, 1 );
96 }
97
98 private function has_set_up_roles() {
99 return (bool) get_option( Settings::OPTION_PREFIX . self::OPTION_SETUP_NAME );
100 }
101
102 public function uninstall() {
103 foreach ( $this->get_matomo_roles() as $role_name => $role ) {
104 remove_role( $role_name );
105 }
106 Uninstaller::uninstall_options( Settings::OPTION_PREFIX . self::OPTION_SETUP_NAME );
107 }
108 }
109