<?php
/*
$Id: filter.inc.php 112 2007-11-21 14:27:19Z randomperson83 $
Obsessive Web Statistics
Copyright (C) 2007 Dustin Spicuzza <hide@address.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
This code loads filters and runs them
*/
require 'plugin.inc.php';
require 'filter_utility.inc.php';
require 'filter_output.inc.php';
require 'dimensions.inc.php';
// loads filters
function run_filters($table,$domain){
global $cfg;
$filter = get_get_var('filter');
$filter_file = get_get_var('filter_file'); // makes it so we don't need to load all filters
// for an ajax call
// if no filters shown, give a selection
if ($filter == "")
return show_all_filters($table,$domain);
// load the plugin
if (!load_plugins($filter_file))
return;
if (!$plugin = get_plugin('filter',$filter))
return show_error("Invalid filter identifier");
echo "<p>Filter results retrieved " . date("F j, Y, g:i:s a") . "</p>";
$plugin->showResults($table,$domain);
}
function show_all_filters($table,$domain){
/*
this menu/filter display code needs to be more generic. Some ids and classes used:
id about_$id = filter about text
id option_$id = filter options
id return_$id = filter returned html
cls filter = a style used to show boxes for filter divs
cls filter_$id = filter class grabbed by menu to hide elements
*/
global $cfg;
// add to head
add_to_head(
'<script type="text/javascript" src="js/jquery.calendar.js"></script>
<script type="text/javascript" src="js/jquery.ajaxSubmit.js"></script>
<script type="text/javascript" src="js/filter.js"></script>
<style type="text/css">@import url("css/jquery.calendar.css");</style>
');
$filters = array();
if (!load_plugins(''))
return;
$plugins = get_plugins('filter');
foreach ($plugins as $plugin){
$id = htmlentities($plugin['plugin']->getPluginId());
$displayName = htmlentities($plugin['plugin']->getDisplayName());
add_to_menu("<li><a class=\"menu_a\" id=\"mmenu_$id\" onclick=\"return show_filter('$id');\" href=\"#\">$displayName</a></li>");
}
$results = array();
foreach ($plugins as $plugin){
$id = htmlentities($plugin['plugin']->getPluginId());
$results[] = $id;
echo "\n<div id=\"container_$id\" class=\"container\">
<div class=\"menu\">
<ul>
<li><a onclick=\"return switch_about('$id','option')\" class=\"menu_selected\" href=\"#\" id=\"smenu_option_$id\">Options</a></li>
<li><a onclick=\"return switch_about('$id','about')\" href=\"#\" id=\"smenu_about_$id\">About This Plugin</a></li>
</ul>
</div>";
echo "<div class=\"filter_option filter_$id\" id=\"option_$id\"><form class=\"filterform\" method=\"post\" action=\"async.php?domain=" . htmlentities($domain) . "&filter=$id\">";
$plugin['plugin']->showOptions();
echo "<p style=\"clear:both;\"><input type=\"submit\" value=\"Show Results\"/></p></form></div><div class=\"filter_about filter_$id\" id=\"about_$id\">";
// echo plugin information
if (!show_plugin_information_table($plugin))
echo "No extended information available for this plugin.";
echo "</div></div>\n";
}
echo "<div id=\"optional_limits\"><p><u>Optional Limits:</u></p><table>";
$plugins = get_plugins('limit');
foreach ($plugins as $plugin)
$plugin['plugin']->showLimits();
echo "</table><p><input id=\"ows_obsession\" type=\"checkbox\" onclick=\"show_obsessive();\" /> Enable excessively obsessive options";
if ($cfg['explain_sql'])
echo "<br/><input name=\"only_explain\" type=\"checkbox\" value=\"yes\" /> Do not execute query, only show EXPLAIN output";
echo "</p></div></div><div id=\"loading\"></div>";
foreach ($results as $result)
echo "<div class=\"result\" id=\"result_$result\"></div>";
echo "<div>";
}
?>