PluginProbe
Advanced Access Manager – Access Governance for WordPress / 6.9.26
Advanced Access Manager – Access Governance for WordPress v6.9.26
7.1.4 7.1.2 7.1.3 6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 All 210 releases
advanced-access-manager / application / Core / Cli.php
Cli.php
141 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * AAM CLI commands
12 *
13 * @package AAM
14 * @version 6.7.0
15 */
16 class AAM_Core_Cli
17 {
18
19 /**
20 * Export AAM settings
21 *
22 * ## OPTIONS
23 *
24 * [--roles]
25 * : Export list of roles and capabilities
26 *
27 * [--settings]
28 * : Export AAM access controls
29 *
30 * [--policies]
31 * : Export defined access policies
32 *
33 * [--configpress]
34 * : Export ConfigPress
35 *
36 * ## EXAMPLES
37 *
38 * wp aam export --roles
39 * wp aam export --settings --policies
40 *
41 * @param array $args
42 * @param array $assoc_args
43 *
44 * @return void
45 *
46 * @access public
47 * @subcommand export
48 * @version 6.7.0
49 */
50 public function export($args, $assoc_args)
51 {
52 $manager = new AAM_Backend_Feature_Settings_Manager();
53 $settings = $manager->exportSettings(true);
54
55 if ($settings) {
56 if (is_iterable($assoc_args) && count($assoc_args)) {
57 $dataset = array();
58
59 foreach(array_keys($assoc_args) as $group) {
60 if (isset($settings['dataset'][$group])) {
61 $dataset[$group] = $settings['dataset'][$group];
62 }
63 }
64
65 $settings['dataset'] = $dataset;
66 }
67
68 echo json_encode($settings);
69 } else {
70 WP_CLI::error('Failed to export settings');
71 }
72 }
73
74 /**
75 * Import AAM settings
76 *
77 * ## OPTIONS
78 *
79 * [<payload>]
80 * : JSON-formatted payload if omitted, the payload is taken from STDIN
81 *
82 * [--roles]
83 * : Import list of roles and capabilities
84 *
85 * [--settings]
86 * : Import AAM access controls
87 *
88 * [--policies]
89 * : Import defined access policies
90 *
91 * [--configpress]
92 * : Import ConfigPress
93 *
94 * ## EXAMPLES
95 *
96 * wp aam import < /tmp/settings.json
97 * wp aam import < ./settings.json --settings --policies
98 *
99 * @param array $args
100 * @param array $assoc_args
101 *
102 * @return void
103 *
104 * @access public
105 * @subcommand import
106 * @version 6.7.0
107 */
108 public function import($args, $assoc_args)
109 {
110 $manager = new AAM_Backend_Feature_Settings_Manager();
111
112 if (isset($args[0])) {
113 $payload = json_decode($args[0], true);
114 } else {
115 $payload = json_decode(
116 WP_CLI::get_value_from_arg_or_stdin($args, 1), true
117 );
118 }
119
120 if (is_iterable($assoc_args) && count($assoc_args)) {
121 $dataset = array();
122
123 foreach(array_keys($assoc_args) as $group) {
124 if (isset($payload['dataset'][$group])) {
125 $dataset[$group] = $payload['dataset'][$group];
126 }
127 }
128
129 $payload['dataset'] = $dataset;
130 }
131
132 $result = json_decode($manager->importSettings($payload));
133
134 if ($result->status === 'success') {
135 WP_CLI::success('Settings imported successfully');
136 } else {
137 WP_CLI::error($result->reason);
138 }
139 }
140
141 }