PluginProbe
Metricool – Social media and site statistics / trunk
Metricool – Social media and site statistics vtrunk
2.1.0 2.0.2 2.0.1 2.0.0 1.27 trunk
metricool / app / Controllers / CapabilityController.php

CapabilityController.php in Metricool – Social media and site statistics trunk, at app/Controllers/CapabilityController.php

56 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Metricool\Controllers;
6
7 if (!defined('ABSPATH')) {
8 exit;
9 }
10
11 use Metricool\Interfaces\ControllerInterface;
12 use Metricool\Services\CapabilityService;
13
14 class CapabilityController implements ControllerInterface
15 {
16 private CapabilityService $service;
17
18 public function __construct(CapabilityService $service)
19 {
20 $this->service = $service;
21 }
22
23 public function register(): void
24 {
25 add_action('metricool_activation', [$this, 'handlePluginActivation']);
26 add_action('metricool_plugin_version_upgrade', [$this, 'handlePluginUpgrade'], 10, 2);
27 add_action('wp_initialize_site', [$this, 'addCapabilityToNewSubsite'], 10, 2);
28 }
29
30 public function handlePluginActivation(): void
31 {
32 $this->service->addSiteCapability('metricool_manage');
33 }
34
35 /**
36 * Handle plugin upgrades
37 */
38 public function handlePluginUpgrade(string $previousVersion, string $newVersion): void
39 {
40 // If someone upgrades from legacy version we need to add the capability
41 if ($previousVersion && version_compare($previousVersion, '2.0', '<')) {
42 $this->service->addSiteCapability('metricool_manage');
43 }
44 }
45
46 /**
47 * When a new site is added, add our custom capability
48 */
49 public function addCapabilityToNewSubsite(\WP_Site $newSite, array $args): void
50 {
51 switch_to_blog((int) $newSite->blog_id);
52 $this->service->addSiteCapability('metricool_manage', false);
53 restore_current_blog();
54 }
55 }
56