| 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 |
?> |