private function getFilters(&$query, &$filter_roster) { global $wgRequest, $wgUser; $filter = array(); $created_type = $wgRequest->getVal('new_created_type', $wgRequest->getVal('created_type', 'exactly')); $created_num = $wgRequest->getVal('new_created_number', $wgRequest->getVal('created_number', null)); $created_unit = $wgRequest->getVal('new_created_unit', $wgRequest->getVal('created_unit', 'day')); if ($created_num) { $filter[] = "DATE(created) " . ($created_type == 'exactly' ? '=' : '>=') . " DATE(DATE_SUB(NOW(), INTERVAL {$created_num} {$created_unit}))"; $query[] = "created_type={$created_type}"; $query[] = "created_number={$created_num}"; $query[] = "created_unit={$created_unit}"; if ($created_type == 'exactly') { $filter_roster['CreatedTypeExact'] = 1; } if ($created_type == 'after') { $filter_roster['CreatedTypeAfter'] = 1; } if ($created_unit == 'day') { $filter_roster['CreatedUnitDays'] = 1; } if ($created_unit == 'week') { $filter_roster['CreatedUnitWeeks'] = 1; } $filter_roster['CreatedNum'] = $created_num; } $attempted_type = $wgRequest->getVal('new_attempted_type', $wgRequest->getVal('attempted_type', 'exactly')); $attempted_num = $wgRequest->getVal('new_attempted_number', $wgRequest->getVal('attempted_number', null)); $attempted_unit = $wgRequest->getVal('new_attempted_unit', $wgRequest->getVal('attempted_unit', 'day')); if ($attempted_num) { $filter[] = "DATE(attempted) " . ($attempted_type == 'exactly' ? '=' : '>=') . " DATE(DATE_SUB(NOW(), INTERVAL {$attempted_num} {$attempted_unit}))"; $query[] = "attempted_type={$attempted_type}"; $query[] = "attempted_number={$attempted_num}"; $query[] = "attempted_unit={$attempted_unit}"; if ($attempted_type == 'exactly') { $filter_roster['AttemptedTypeExact'] = 1; } if ($attempted_type == 'after') { $filter_roster['AttemptedTypeAfter'] = 1; } if ($attempted_unit == 'day') { $filter_roster['AttemptedUnitDays'] = 1; } if ($attempted_unit == 'week') { $filter_roster['AttemptedUnitWeeks'] = 1; } $filter_roster['attemptedNum'] = $attempted_num; } $transmitted_type = $wgRequest->getVal('new_transmitted_type', $wgRequest->getVal('transmitted_type', 'exactly')); $transmitted_num = $wgRequest->getVal('new_transmitted_number', $wgRequest->getVal('transmitted_number', null)); $transmitted_unit = $wgRequest->getVal('new_transmitted_unit', $wgRequest->getVal('transmitted_unit', 'day')); if ($transmitted_num) { $filter[] = "DATE(transmitted) " . ($transmitted_type == 'exactly' ? '=' : '>=') . " DATE(DATE_SUB(NOW(), INTERVAL {$transmitted_num} {$transmitted_unit}))"; $query[] = "transmitted_type={$transmitted_type}"; $query[] = "transmitted_number={$transmitted_num}"; $query[] = "transmitted_unit={$transmitted_unit}"; if ($transmitted_type == 'exactly') { $filter_roster['TransmittedTypeExact'] = 1; } if ($transmitted_type == 'after') { $filter_roster['TransmittedTypeAfter'] = 1; } if ($transmitted_unit == 'day') { $filter_roster['TransmittedUnitDays'] = 1; } if ($transmitted_unit == 'week') { $filter_roster['TransmittedUnitWeeks'] = 1; } $filter_roster['TransmittedNum'] = $transmitted_num; } $filter_wiki_name = $wgRequest->getVal('new_filter_wiki_name', null); if ($filter_wiki_name) { $filter_wiki_name = preg_replace('!^http://|/$!', '', $filter_wiki_name); $filter_wiki_name = preg_replace('!\\.wikia\\.com!', '', $filter_wiki_name); $wgRequest->setVal('new_filter_wiki_id', Wikifactory::DBtoId($filter_wiki_name)); } $filter_wiki_id = $wgRequest->getVal('new_filter_wiki_id', $wgRequest->getVal('filter_wiki_id', null)); $filter_dst = $wgRequest->getVal('new_filter_dst', $wgRequest->getVal('filter_dst', null)); // Force a few values depending on who the viewer is if (!$wgUser->isAllowed("mailerlog")) { $filter_dst = $wgUser->getEmail(); $forced_dst = true; } if ($wgRequest->getVal('off_filter_wiki_id', null) && !isset($forced_wiki_id)) { $filter_wiki_id = null; } if ($filter_wiki_id) { $filter[] = "city_id = {$filter_wiki_id}"; if (!isset($forced_wiki_id)) { $query[] = "filter_wiki_id={$filter_wiki_id}"; $filter_roster['Wiki'] = array('value' => Wikifactory::IdtoDB($filter_wiki_id), 'off' => 'off_filter_wiki_id'); } } if ($wgRequest->getVal('off_filter_dst', null) && !isset($forced_dst)) { $filter_dst = null; } if ($filter_dst) { $filter[] = "dst = '{$filter_dst}'"; if (!isset($forced_dst)) { $query[] = "filter_dst={$filter_dst}"; $filter_roster['Email'] = array('value' => $filter_dst, 'off' => 'off_filter_dst'); } } $filter_subject = $wgRequest->getVal('new_filter_subject', $wgRequest->getVal('filter_subject', null)); if ($filter_subject) { $filter[] = "subj LIKE '%{$filter_subject}%'"; $query[] = "filter_subject={$filter_subject}"; $filter_roster['Subject'] = $filter_subject; } $filter_body = $wgRequest->getVal('new_filter_body', $wgRequest->getVal('filter_body', null)); if ($filter_body) { $filter[] = "msg LIKE '%{$filter_body}%'"; $query[] = "filter_body={$filter_body}"; $filter_roster['Body'] = $filter_body; } $filter_errors = $wgRequest->getVal('new_filter_errors', $wgRequest->getVal('filter_errors', null)); if ($wgRequest->getVal('off_filter_errors', null)) { $filter_errors = null; } if ($filter_errors) { $filter[] = 'error_msg IS NOT NULL'; $query[] = "filter_errors={$filter_errors}"; $filter_roster['Errors'] = 'Show'; } return $filter; }