PluginProbe
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce / 1.2.3
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce v1.2.3
1.17.9 1.17.8 1.17.7 1.17.6 1.17.5 1.17.4 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.3.0 1.3.1 1.3.11 1.3.12 1.3.13 1.3.14 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 All 143 releases
erp / includes / framework / modules.php

modules.php in ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce 1.2.3, at includes/framework/modules.php

295 lines 7.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace WeDevs\ERP\Framework;
3 use WeDevs\ERP\Framework\Traits\Hooker;
4
5 /**
6 * Modules Class
7 *
8 * @package WeDevs\ERP\Framework
9 */
10 class Modules {
11
12 use Hooker;
13
14 /**
15 * Hold the modules
16 *
17 * @var
18 */
19 protected $modules;
20
21 /**
22 * initialize
23 */
24 public function __construct() {
25 $this->init_modules();
26
27 $this->action( 'erp_switch_redirect_to', 'module_switch_redirect', 10, 2 );
28 }
29
30 /**
31 * Initialize the modules
32 *
33 * @return void
34 */
35 public function init_modules() {
36 $this->modules = [
37 'hrm' => [
38 'title' => __( 'HR Management', 'erp' ),
39 'slug' => 'erp-hrm',
40 'description' => __( 'Human Resource Management', 'erp' ),
41 'callback' => '\WeDevs\ERP\HRM\Human_Resource',
42 'modules' => apply_filters( 'erp_hr_modules', [ ] )
43 ],
44 'crm' => [
45 'title' => __( 'CR Management', 'erp' ),
46 'slug' => 'erp-crm',
47 'description' => __( 'Client Resource Management', 'erp' ),
48 'callback' => '\WeDevs\ERP\CRM\Customer_Relationship',
49 'modules' => apply_filters( 'erp_crm_modules', [ ] )
50 ],
51 'accounting' => [
52 'title' => __( 'Accounting', 'erp' ),
53 'slug' => 'erp-accounting',
54 'description' => __( 'Accounting Management', 'erp' ),
55 'callback' => '\WeDevs\ERP\Accounting\Accounting',
56 'modules' => apply_filters( 'erp_ac_modules', [ ] )
57 ]
58 ];
59 }
60
61 /**
62 * Get all the registered modules
63 *
64 * @return mixed|void
65 */
66 public function get_modules() {
67 return apply_filters( 'erp_get_modules', $this->modules );
68 }
69
70 /**
71 * Get a module
72 *
73 * @param $module
74 *
75 * @return bool
76 */
77 public function get_module( $module ) {
78 if ( array_key_exists( $module, $this->modules ) ) {
79 return $this->modules[ $module ];
80 }
81
82 return false;
83 }
84
85 /**
86 * Get the first module as default module
87 *
88 * @return mixed
89 */
90 public function get_default_module() {
91 return reset( $this->modules );
92 }
93
94 /**
95 * Get the current mode of the admin UI
96 *
97 * @return bool|mixed
98 */
99 public function get_current_module() {
100 global $current_user;
101
102 $mode = get_user_meta( $current_user->ID, '_erp_mode', true );
103
104 if ( !empty( $mode ) && $this->get_module( $mode ) ) {
105 return $this->get_module( $mode );
106 }
107
108 return $this->get_default_module();
109 }
110
111 /**
112 * Redirect to the CRM/HRM dashboard page when switching from admin menu bar
113 *
114 * @param $url
115 * @param $new_mode
116 *
117 * @return string|void
118 */
119 public function module_switch_redirect( $url, $new_mode ) {
120 if ( 'crm' == $new_mode ) {
121 return admin_url( 'admin.php?page=erp-sales' );
122 } elseif ( 'hrm' == $new_mode ) {
123 return admin_url( 'admin.php?page=erp-hr' );
124 }
125
126 return $url;
127 }
128
129 /**
130 * Get module status
131 *
132 * @param string $module_key
133 *
134 * @since 0.1
135 *
136 * @return boolen
137 */
138 public function is_module_active( $module_key ) {
139 $modules = $this->get_active_modules();
140
141 if ( array_key_exists( $module_key, $modules ) ) {
142 return true;
143 }
144
145 return false;
146 }
147
148 /**
149 * Get active modules
150 *
151 * @since 0.1
152 *
153 * @return array
154 */
155 public function get_active_modules() {
156 return get_option( 'erp_modules', [] );
157 }
158
159 /**
160 * Get inactive modules
161 *
162 * @since 0.1
163 *
164 * @return array
165 */
166 public function get_inactive_modules() {
167 $all_modules = $this->get_modules();
168 $active_modules = $this->get_active_modules();
169
170 foreach ( $active_modules as $key => $module ) {
171 unset( $all_modules[$key] );
172 }
173
174 return $all_modules;
175 }
176
177 /**
178 * Get modules by query pram
179 *
180 * @param string $tab
181 *
182 * @since 0.1
183 *
184 * @return array
185 */
186 public function get_query_modules( $tab = false ) {
187
188 switch ( $tab ) {
189 case 'active':
190 return $this->get_active_modules();
191 break;
192
193 case 'inactive':
194 return $this->get_inactive_modules();
195 break;
196
197 default:
198 return $this->get_modules();
199 break;
200 }
201 }
202
203 /**
204 * Check for valid ERP modules
205 *
206 * @since 1.2.2
207 *
208 * @param array $modules Name of the module or modules
209 *
210 * @return mixed WP_Error if an invalid name is given or true on success
211 */
212 public function is_valid_module( $modules ) {
213 if ( ! is_array( $modules ) ) {
214 $modules = [ $modules ];
215 }
216
217 $erp_module_names = array_keys( $this->modules );
218
219 foreach ( $modules as $module_name ) {
220 if ( ! in_array( $module_name , $erp_module_names ) ) {
221 return new \WP_Error( 'invalid-module-name', sprintf( __( 'Invalid module name %s', 'erp' ), $module_name ) );
222 }
223 }
224
225 return true;
226 }
227
228 /**
229 * Activate single or multiple modules
230 *
231 * @since 1.2.2
232 *
233 * @param array $modules Name of the module or modules
234 *
235 * @return mixed WP_Error if an invalid name is given or true on success
236 */
237 public function activate_modules( $modules ) {
238 if ( ! is_array( $modules ) ) {
239 $modules = [ $modules ];
240 }
241
242 $is_valid_module = $this->is_valid_module( $modules );
243
244 if ( is_wp_error( $is_valid_module ) ) {
245 return $is_valid_module;
246 }
247
248 $active_modules = $this->get_active_modules();
249
250 foreach ( $modules as $module_name ) {
251 if ( ! in_array( $module_name, $active_modules ) ) {
252 $active_modules[ $module_name ] = $this->modules[ $module_name ];
253 }
254 }
255
256 update_option( 'erp_modules', $active_modules );
257
258 return true;
259 }
260
261 /**
262 * Deactivate single or multiple modules
263 *
264 * @since 1.2.2
265 *
266 * @param array $modules Name of the module or modules
267 *
268 * @return mixed WP_Error if an invalid name is given or true on success
269 */
270 public function deactivate_modules( $modules ) {
271 if ( ! is_array( $modules ) ) {
272 $modules = [ $modules ];
273 }
274
275 $is_valid_module = $this->is_valid_module( $modules );
276
277 if ( is_wp_error( $is_valid_module ) ) {
278 return $is_valid_module;
279 }
280
281 $active_modules = $this->get_active_modules();
282
283 foreach ( $active_modules as $module_name => $active_module ) {
284 if ( in_array( $module_name, $modules ) ) {
285 unset( $active_modules[ $module_name ] );
286 }
287 }
288
289 update_option( 'erp_modules', $active_modules );
290
291 return true;
292 }
293
294 }
295