PluginProbe
Redirection / 5.6.0
Redirection v5.6.0
5.10.0 5.9.0 5.8.1 5.8.0 3.7.2 3.7.3 4.0 4.0.1 4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.5 4.5.1 4.6.2 4.7.1 All 130 releases
redirection / models / module.php

module.php in Redirection 5.6.0, at models/module.php

161 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 require_once dirname( __DIR__ ) . '/modules/wordpress.php';
4 require_once dirname( __DIR__ ) . '/modules/apache.php';
5 require_once dirname( __DIR__ ) . '/modules/nginx.php';
6
7 /**
8 * Base class for redirect module.
9 *
10 * @phpstan-type WordPressModuleOptions array{}
11 * @phpstan-type ApacheModuleOptions array{
12 * location: string
13 * }
14 * @phpstan-type NginxModuleOptions array{
15 * location: string
16 * }
17 * @phpstan-type RedModuleOptions WordPressModuleOptions|ApacheModuleOptions|NginxModuleOptions
18 */
19 abstract class Red_Module {
20 /**
21 * Constructor. Loads options
22 *
23 * @param RedModuleOptions $options Any module options.
24 */
25 public function __construct( array $options = [] ) {
26 if ( ! empty( $options ) ) {
27 $this->load( $options );
28 }
29 }
30
31 /**
32 * Get a module based on the supplied ID, and loads it with appropriate options.
33 *
34 * @param integer $id Module ID.
35 * @return Red_Module|false
36 */
37 public static function get( $id ) {
38 $id = intval( $id, 10 );
39 $options = Red_Options::get();
40
41 if ( $id === Apache_Module::MODULE_ID ) {
42 return new Apache_Module( isset( $options['modules'][ Apache_Module::MODULE_ID ] ) ? $options['modules'][ Apache_Module::MODULE_ID ] : array() );
43 }
44
45 if ( $id === WordPress_Module::MODULE_ID ) {
46 return new WordPress_Module( isset( $options['modules'][ WordPress_Module::MODULE_ID ] ) ? $options['modules'][ WordPress_Module::MODULE_ID ] : array() );
47 }
48
49 if ( $id === Nginx_Module::MODULE_ID ) {
50 return new Nginx_Module( isset( $options['modules'][ Nginx_Module::MODULE_ID ] ) ? $options['modules'][ Nginx_Module::MODULE_ID ] : array() );
51 }
52
53 return false;
54 }
55
56 /**
57 * Check that an ID is valid.
58 *
59 * @param integer $id Module ID.
60 * @return boolean
61 */
62 public static function is_valid_id( $id ) {
63 if ( $id === Apache_Module::MODULE_ID || $id === WordPress_Module::MODULE_ID || $id === Nginx_Module::MODULE_ID ) {
64 return true;
65 }
66
67 return false;
68 }
69
70 /**
71 * Return a module ID given the module name
72 *
73 * @param string $name Module name.
74 * @return integer|false
75 */
76 public static function get_id_for_name( $name ) {
77 $names = array(
78 'wordpress' => WordPress_Module::MODULE_ID,
79 'apache' => Apache_Module::MODULE_ID,
80 'nginx' => Nginx_Module::MODULE_ID,
81 );
82
83 if ( isset( $names[ $name ] ) ) {
84 return $names[ $name ];
85 }
86
87 return false;
88 }
89
90 /**
91 * Flush the module that a group belongs to
92 *
93 * @param integer $group_id Module group ID.
94 * @return void
95 */
96 public static function flush( $group_id ) {
97 $group = Red_Group::get( $group_id );
98
99 if ( is_object( $group ) ) {
100 $module = self::get( $group->get_module_id() );
101
102 if ( $module !== false ) {
103 $module->flush_module();
104 }
105 }
106 }
107
108 /**
109 * Flush the module
110 *
111 * @param integer $module_id Module ID.
112 * @return void
113 */
114 public static function flush_by_module( $module_id ) {
115 $module = self::get( $module_id );
116
117 if ( $module !== false ) {
118 $module->flush_module();
119 }
120 }
121
122 /**
123 * Get the module ID
124 *
125 * @return integer
126 */
127 abstract public function get_id();
128
129 /**
130 * @return string
131 */
132 abstract public function get_name();
133
134 /**
135 * Update
136 *
137 * @param RedModuleOptions $data Data.
138 * @return array<string, string>|false
139 */
140 public function update( array $data ) {
141 return false;
142 }
143
144 /**
145 * Load
146 *
147 * @param RedModuleOptions $options Options.
148 * @return void
149 */
150 protected function load( array $options ) {
151 }
152
153 /**
154 * Flush
155 *
156 * @return void
157 */
158 protected function flush_module() {
159 }
160 }
161