function wikiplugin_contributionsdashboard($data, $params)
{
    global $tikilib, $headerlib, $user;
    $trklib = TikiLib::lib("trk");
    $logsqrylib = TikiLib::lib("logsqry");
    $smarty = TikiLib::lib("smarty");
    static $iContributionsDashboard = 0;
    ++$iContributionsDashboard;
    $i = $iContributionsDashboard;
    $smarty->assign('iContributionsDashboard', $iContributionsDashboard);
    $default = array("start" => time() - 365 * 24 * 60 * 60, "end" => time(), "types" => "trackeritems,toptrackeritemsusers,toptrackeritemsusersip");
    $params = array_merge($default, $params);
    extract($params, EXTR_SKIP);
    $start = !empty($_REQUEST["raphaelStart{$i}"]) ? strtotime($_REQUEST["raphaelStart{$i}"]) : $start;
    $end = !empty($_REQUEST["raphaelEnd{$i}"]) ? strtotime($_REQUEST["raphaelEnd{$i}"]) : $end;
    $types = explode(',', $types);
    $headerlib->add_jsfile("vendor/jquery/jquery-sheet/plugins/raphael-min.js", "external");
    $headerlib->add_jsfile("vendor/jquery/jquery-sheet/plugins/g.raphael-min.js", "external");
    $headerlib->add_jq_onready("\$('.cDashDate').datepicker();");
    $usersTrackerItems = array();
    foreach ($tikilib->fetchAll("SELECT itemId FROM tiki_tracker_items WHERE createdBy = ?", array("simon")) as $item) {
        $usersTrackerItems[] = $item['itemId'];
    }
    $headerlib->add_jq_onready("\$.fn.chart = function(s) {\n\t\t\ts = \$.extend({\n\t\t\t\tlabels: [],\n\t\t\t\tdata: []\n\t\t\t}, s);\n\n\t\t\tvar me = \$(this);\n\t\t\tvar r = Raphael(me[0]);\n\n\t\t\tr.g.barchart(10,10, me.width(), me.height(), [s.data])\n\t\t\t\t.hover(function () {\n\t\t\t\t\tthis.flag = r.g.popup(\n\t\t\t\t\t\tthis.bar.x,\n\t\t\t\t\t\tthis.bar.y,\n\t\t\t\t\t\ts.labels[\$(this.bar.node).index() - 2] + ' - ' + this.bar.value || '0'\n\t\t\t\t\t).insertBefore(this);\n\t\t\t\t},function () {\n\t\t\t\t\tthis.flag.animate({\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\t300,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tthis.remove();\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tif (s.label) r.g.label(\$(this).width() / 2,30, s.label);\n\t\t};");
    foreach ($types as $type) {
        if ($type == "trackeritems") {
            $data = array();
            $dates = array();
            foreach (LogsQueryLib::trackerItem()->start($start)->end($end)->countByDateFilterId($usersTrackerItems) as $date => $count) {
                $data[] = $count * 1;
                $dates[] = $date;
            }
            $headerlib->add_jq_onready("\$('#raphaelTrackeritems{$i}').chart({\n\t\t\t\t\tlabels: \t" . json_encode($dates) . ",\n\t\t\t\t\tdata:\t\t" . json_encode($data) . ",\n\t\t\t\t\tlabel:\t\t'Tracker Item Activity Grouped By Date'\n\t\t\t\t});");
            $result .= "<div id='raphaelTrackeritems{$i}' style='width: 100%; height: 400px; display: block;'></div>";
        }
        if ($type == "toptrackeritemsusers") {
            $hits = array();
            $users = array();
            foreach (LogsQueryLib::trackerItem()->start($start)->end($end)->countUsersFilterId($usersTrackerItems) as $user => $count) {
                $hits[] = $count;
                $users[] = $user;
            }
            $headerlib->add_jq_onready("\$('#raphaelTrackeritemsUsers{$i}').chart({\n\t\t\t\t\tlabels: \t" . json_encode($users) . ",\n\t\t\t\t\tdata:\t\t" . json_encode($hits) . ",\n\t\t\t\t\tlabel:\t\t'Tracker Item Activity Grouped By Users'\n\t\t\t\t});");
            $result .= "<div id='raphaelTrackeritemsUsers{$i}' style='width: 100%; height: 400px; display: block;'></div>";
        }
        if ($type == "toptrackeritemsusersip") {
            $hits = array();
            $users = array();
            foreach (LogsQueryLib::trackerItem()->start($start)->end($end)->countUsersIPFilterId($usersTrackerItems) as $data => $count) {
                $data = json_decode($data);
                $hits[] = $count;
                $users[] = $data->user . ' ' . $data->ip;
            }
            $headerlib->add_jq_onready("\$('#raphaelTrackeritemsUsersIP{$i}').chart({\n\t\t\t\t\tlabels: \t" . json_encode($users) . ",\n\t\t\t\t\tdata:\t\t" . json_encode($hits) . ",\n\t\t\t\t\tlabel:\t\t'Tracker Item Activity Grouped By Users & IP Address'\n\t\t\t\t});");
            $result .= "<div id='raphaelTrackeritemsUsersIP{$i}' style='width: 100%; height: 400px; display: block;'></div>";
        }
    }
    return "\n\t\t\t<style>\n\t\t\t\t.header {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\t\t\t\t.headerHelper {\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tfloat: right;\n\t\t\t\t\tpadding: 0px;\n\t\t\t\t\tmargin-top: -7px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<div class='ui-widget ui-widget-content ui-corner-all'>\n\t\t\t\t<h3 class='header ui-state-default ui-corner-tl ui-corner-tr' style='margin: 0; padding: 5px;'>\n\t\t\t\t\t" . tr("Contributions Dashboard") . "\n\t\t\t\t\t<form class='headerHelper'>\n\t\t\t\t\t\t" . tr("Date Range") . "\n\t\t\t\t\t\t<input type='text' name='raphaelStart{$i}' id='raphaelStart{$i}' class='cDashDate' value='" . strftime("%m/%d/%Y", $start) . "' />\n\t\t\t\t\t\t<input type='text' name='raphaelEnd{$i}' id='raphaelEnd{$i}' class='cDashDate' value='" . strftime("%m/%d/%Y", $end) . "' />\n\t\t\t\t\t\t<input type='hidden' name='refresh' value='1' />\n\t\t\t\t\t\t<input type='submit' id='raphaelUpdate{$i}' value='" . tr("Update") . "' />\n\t\t\t\t\t</form>\n\t\t\t\t</h3>\n\t\t\t\t{$result}\n\t\t\t</div>";
}
Exemple #2
0
 static function url($id = "")
 {
     return LogsQueryLib::type("url")->id($id);
 }