PluginProbe
Redirection / 2.1.29
Redirection v2.1.29
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 / group.php

group.php in Redirection 2.1.29, at models/group.php

220 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Red_Group
4 {
5 function Red_Group ($values = '')
6 {
7 if (is_array ($values))
8 {
9 foreach ($values AS $key => $value)
10 $this->$key = $value;
11 }
12 }
13
14 function get ($id)
15 {
16 global $wpdb;
17
18 $id = intval ($id);
19 $row = $wpdb->get_row ("SELECT {$wpdb->prefix}redirection_groups.*,COUNT({$wpdb->prefix}redirection_items.id) AS items,SUM({$wpdb->prefix}redirection_items.last_count) AS redirects FROM {$wpdb->prefix}redirection_groups LEFT JOIN {$wpdb->prefix}redirection_items ON {$wpdb->prefix}redirection_items.group_id={$wpdb->prefix}redirection_groups.id WHERE {$wpdb->prefix}redirection_groups.id='$id' GROUP BY {$wpdb->prefix}redirection_groups.id", ARRAY_A);
20 if ($row)
21 return new Red_Group ($row);
22 return false;
23 }
24
25 function get_for_module ($module)
26 {
27 global $wpdb;
28
29 $sql = "SELECT SQL_CALC_FOUND_ROWS {$wpdb->prefix}redirection_groups.* FROM {$wpdb->prefix}redirection_groups WHERE {$wpdb->prefix}redirection_groups.module_id='$module'";
30
31 $rows = $wpdb->get_results ($sql, ARRAY_A);
32 $items = array ();
33 if (count ($rows) > 0)
34 {
35 foreach ($rows AS $row)
36 $items[] = new Red_Group ($row);
37 }
38
39 return $items;
40 }
41
42 function get_all ($module, $pager)
43 {
44 global $wpdb;
45
46 $sql = "SELECT SQL_CALC_FOUND_ROWS {$wpdb->prefix}redirection_groups.*,COUNT({$wpdb->prefix}redirection_items.id) AS items,SUM({$wpdb->prefix}redirection_items.last_count) AS redirects FROM {$wpdb->prefix}redirection_groups LEFT JOIN {$wpdb->prefix}redirection_items ON {$wpdb->prefix}redirection_items.group_id={$wpdb->prefix}redirection_groups.id WHERE {$wpdb->prefix}redirection_groups.module_id='$module'";
47
48 $pager->set_total ($wpdb->get_var ("SELECT FOUND_ROWS()"));
49 $sql .= $pager->to_limits ('', array ('name'), '', "GROUP BY {$wpdb->prefix}redirection_groups.id");
50
51 $rows = $wpdb->get_results ($sql, ARRAY_A);
52 $items = array ();
53 if (count ($rows) > 0)
54 {
55 foreach ($rows AS $row)
56 $items[] = new Red_Group ($row);
57 }
58
59 return $items;
60 }
61
62 function get_for_select ()
63 {
64 global $wpdb;
65
66 $data = array ();
67 $rows = $wpdb->get_results ("SELECT {$wpdb->prefix}redirection_modules.name AS module_name,{$wpdb->prefix}redirection_groups.name AS group_name,{$wpdb->prefix}redirection_groups.id FROM {$wpdb->prefix}redirection_groups INNER JOIN {$wpdb->prefix}redirection_modules ON {$wpdb->prefix}redirection_modules.id={$wpdb->prefix}redirection_groups.module_id ORDER BY {$wpdb->prefix}redirection_modules.name,{$wpdb->prefix}redirection_groups.position");
68 if ($rows)
69 {
70 foreach ($rows AS $row)
71 $data[$row->module_name][$row->id] = $row->group_name;
72 }
73
74 return $data;
75 }
76
77 function get_first_id ()
78 {
79 global $wpdb;
80
81 return $wpdb->get_var ("SELECT id FROM {$wpdb->prefix}redirection_groups ORDER BY id LIMIT 0,1");
82 }
83
84 function create ($data)
85 {
86 global $wpdb;
87
88 $name = $wpdb->escape (trim ($data['name']));
89 $module = intval ($data['module_id']);
90
91 if ($name != '' && $module > 0)
92 {
93 if (isset ($data['status']) && isset ($data['position']))
94 {
95 $extra = ',status';
96 $extra2 = ",'".$data['status']."'";
97 }
98
99 $position = $wpdb->get_var ("SELECT COUNT(*) FROM {$wpdb->prefix}redirection_groups WHERE module_id='$module'");
100 if (isset ($data['position']))
101 $position = $data['position'];
102
103 $wpdb->query ("INSERT INTO {$wpdb->prefix}redirection_groups (name,module_id,position$extra) VALUES ('$name','$module','$position'$extra2)");
104
105 Red_Module::flush ($module);
106 return $wpdb->insert_id;
107 }
108
109 return false;
110 }
111
112 function update ($data)
113 {
114 global $wpdb;
115
116 $this->tracking = isset ($data['tracking']) ? true : false;
117 $this->name = $data['name'];
118 $this->status = isset ($data['status']) ? 'enabled' : 'disabled';
119
120 $name = $wpdb->escape ($this->name);
121
122 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_groups SET name='$name', status='{$this->status}', tracking='{$this->tracking}' WHERE id='{$this->id}'");
123
124 Red_Module::flush ($this->module_id);
125 }
126
127 function delete ($group)
128 {
129 global $wpdb;
130
131 $obj = Red_Group::get ($group);
132
133 // Delete all items in this group
134 $wpdb->query ("DELETE FROM {$wpdb->prefix}redirection_items WHERE group_id='$group'");
135
136 // Delete the group
137 $wpdb->query ("DELETE FROM {$wpdb->prefix}redirection_groups WHERE id='$group'");
138
139 // Update positions
140 $rows = $wpdb->get_results ("SELECT id FROM {$wpdb->prefix}redirection_groups ORDER BY position");
141 if (count ($rows) > 0)
142 {
143 foreach ($rows AS $pos => $row)
144 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_groups SET position='$pos' WHERE id='{$row->id}'");
145 }
146 }
147
148 function save_order ($items, $start)
149 {
150 global $wpdb;
151 foreach ($items AS $pos => $id)
152 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_groups SET position='".($pos + $start)."' WHERE id='{$id}'");
153
154 $group = Red_Group::get ($items[0]);
155 Red_Module::flush ($group->module_id);
156 }
157
158 function move_to ($module)
159 {
160 global $wpdb;
161
162 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_groups SET module_id='$module' WHERE id='{$this->id}'");
163
164 Red_Module::flush ($module);
165 Red_Module::flush ($this->id);
166 }
167
168 function reset ()
169 {
170 global $wpdb;
171
172 $this->last_count = 0;
173 $this->last_access = '0000-00-00 00:00:00';
174
175 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_items SET last_count=0, last_access='{$this->last_access}' WHERE group_id='{$this->id}'");
176
177 RE_Log::delete_for_group ($this->id);
178 }
179
180 function items ()
181 {
182 if ($this->items > 0)
183 return sprintf (' (%d)', $this->items);
184 return '';
185 }
186
187 function type ()
188 {
189 if ($this->apache)
190 return '.ht';
191 return 'WP';
192 }
193
194 function tracked ()
195 {
196 if ($this->tracking == 1)
197 return 'Yes';
198 return 'No';
199 }
200
201 function toggle_status ()
202 {
203 global $wpdb;
204
205 $this->status = ($this->status == 'enabled') ? 'disabled' : 'enabled';
206
207 $wpdb->query ("UPDATE {$wpdb->prefix}redirection_groups SET status='{$this->status}' WHERE id='{$this->id}'");
208 }
209
210 function hits ()
211 {
212 global $wpdb;
213 // $count = $wpdb->get_var ("SELECT SUM(last_count) FROM {$wpdb->prefix}redirection_groups INNER JOIN {$wpdb->prefix}redirection_items ON {$wpdb->prefix}redirection_items.group_id=wp_redirection_groups.id WHERE wp_redirection_groups.module_id='{$this->id}'");
214 $count = $wpdb->get_var ("SELECT COUNT(id) FROM {$wpdb->prefix}redirection_logs WHERE group_id='{$this->id}'");
215 if ($count > 0)
216 return $count;
217 return 0;
218 }
219 }
220 ?>