function wikiplugin_trackerfilter($data, $params) { global $smarty, $prefs; global $trklib; include_once('lib/trackers/trackerlib.php'); static $iTrackerFilter = 0; if ($prefs['feature_trackers'] != 'y') { return $smarty->fetch("wiki-plugins/error_tracker.tpl"); } $iTrackerFilter++; $default = array('noflipflop'=>'n', 'action'=>'Filter', 'line' => 'n', 'displayList' => 'n', 'export_action' => '', 'export_itemid' => 'y', 'export_status' => 'n', 'export_created' => 'n', 'export_modif' => 'n', 'export_charset' => 'UTF-8', 'status' => 'opc'); if (isset($_REQUEST['reset_filter'])) { wikiplugin_trackerFilter_reset_filters($iTrackerFilter); } else if (!isset($_REQUEST['filter']) && isset($_REQUEST['session_filters']) && $_REQUEST['session_filters'] == 'y') { $params = array_merge($params, wikiplugin_trackerFilter_get_session_filters($iTrackerFilter)); } if (isset($_REQUEST["mapview"]) && $_REQUEST["mapview"] == 'y' && !isset($_REQUEST["searchmap"]) && !isset($_REQUEST["searchlist"]) || isset($_REQUEST["searchmap"]) && !isset($_REQUEST["searchlist"])) { $params["googlemap"] = 'y'; } if (isset($_REQUEST["mapview"]) && $_REQUEST["mapview"] == 'n' && !isset($_REQUEST["searchmap"]) && !isset($_REQUEST["searchlist"]) || isset($_REQUEST["searchlist"]) && !isset($_REQUEST["searchmap"]) ) { $params["googlemap"] = 'n'; } $params = array_merge($default, $params); extract($params, EXTR_SKIP); $dataRes = ''; if (isset($_REQUEST['msgTrackerFilter'])) { $smarty->assign('msgTrackerFilter', $_REQUEST['msgTrackerFilter']); } global $headerlib; include_once 'lib/headerlib.php'; $headerlib->add_jq_onready( '/* Maintain state of other trackerfilter plugin forms */ $(".trackerfilter form").submit( function () { var current_tracker = this; $(current_tracker).append("<input type=\"hidden\" name=\"tracker_filters[]\" value=\"" + $(current_tracker).serialize() + "\" />") $(".trackerfilter form").each( function() { if (current_tracker !== this && $("input[name=count_item]", this).val() > 0) { $(current_tracker).append("<input type=\"hidden\" name=\"tracker_filters[]\" value=\"" + $(this).serialize() + "\" />") } }); return true; });' ); if (!empty($_REQUEST['tracker_filters']) && count($_REQUEST['tracker_filters']) > 0) { foreach ($_REQUEST['tracker_filters'] as $tf_vals) { parse_str(urldecode($tf_vals), $vals); foreach ( $vals as $k => $v) { // if it's me and i had some items if ($k == 'iTrackerFilter' && $v == $iTrackerFilter && isset($vals['count_item']) && $vals['count_item'] > 0) { // unset request params for all the plugins (my one will be array_merged below) foreach ($_REQUEST['tracker_filters'] as $tf_vals2) { parse_str(urldecode($tf_vals2), $vals2); foreach ( $vals2 as $k2 => $v2) { unset($GLOBALS['_REQUEST'][$k2]); } } $_REQUEST = array_merge($_REQUEST, $vals); } } } } if (!isset($filters)) { if (empty($export_action)) { return tra('missing parameters').' filters'; } else { $listfields = array(); $filters = array(); $formats = array(); } } else { $listfields = wikiplugin_trackerFilter_split_filters($filters); foreach ($listfields as $i=>$f) { if (strchr($f, '/')) { list($fieldId, $format) = explode('/', $f); $listfields[$i] = $fieldId; $formats[$fieldId] = $format; } else { $formats[$f] = ''; } } } if (empty($trackerId) && !empty($_REQUEST['trackerId'])) { $trackerId = $_REQUEST['trackerId']; } $tracker_definition = Tracker_Definition::get($trackerId); if (empty($_REQUEST['filter']) && empty($export_action)) { // look if not coming from an initial and not exporting foreach ($_REQUEST as $key =>$val) { if (substr($key, 0, 2) == 'f_') { $_REQUEST['filter'] = 'y'; break; } } } if (!isset($sortchoice)) { $sortchoice = ''; } else { unset($params['sortchoice']); if (isset($_REQUEST["tr_sort_mode$iTrackerFilter"])) { $params['sort_mode'] = $_REQUEST["tr_sort_mode$iTrackerFilter"]; } foreach ($sortchoice as $i=>$sc) { $sc = explode('|', $sc); $sortchoice[$i] = array('value'=>$sc[0], 'label'=>empty($sc[1])?$sc[0]: $sc[1]); } } if (empty($trackerId) || !($tracker = $trklib->get_tracker($trackerId))) { return $smarty->fetch("wiki-plugins/error_tracker.tpl"); } $filters = wikiplugin_trackerFilter_get_filters($trackerId, $listfields, $formats, $status); if (empty($export_action)) { if (!is_array($filters)) { return $filters; } } if (($displayList == 'y' || isset($_REQUEST['filter']) || isset($_REQUEST['tr_offset']) || isset($_REQUEST['tr_sort_mode'])) && (!isset($_REQUEST['iTrackerFilter']) || $_REQUEST['iTrackerFilter'] == $iTrackerFilter)) { $ffs = array(); $values = array(); $exactValues = array(); wikiplugin_trackerfilter_build_trackerlist_filter($_REQUEST, $formats, $ffs, $values, $exactValues, $tracker_definition); // echo '<pre>BUILD_FILTER'; print_r($ffs); print_r($exactValues); echo '</pre>'; $params['fields'] = isset($fields) ? $fields : array(); if (empty($params['trackerId'] )) { $params['trackerId'] = $trackerId; } if (!empty($ffs)) { if (empty($params['filterfield'])) { $params['filterfield'] = $ffs; $params['exactvalue'] = $exactValues; $params['filtervalue'] = $values; } else { $c = count($params['filterfield']); $params['filterfield'] = array_merge($params['filterfield'], $ffs); for ($i = 0; $i < $c; ++$i) { $params['exactvalue'][$i] = empty($params['exactvalue'][$i])?'':$params['exactvalue'][$i]; $params['filtervalue'][$i] = empty($params['filtervalue'][$i])?'':$params['filtervalue'][$i]; } $params['exactvalue'] = array_merge($params['exactvalue'], $exactValues); $params['filtervalue'] = array_merge($params['filtervalue'], $values); } } if (empty($params['max'])) $params['max'] = $prefs['maxRecords']; if (!empty($_REQUEST['f_status'])) $params['status'] = $_REQUEST['f_status']; wikiplugin_trackerFilter_save_session_filters($params, $iTrackerFilter); $smarty->assign('urlquery', wikiplugin_trackerFilter_build_urlquery($params)); include_once('lib/wiki-plugins/wikiplugin_trackerlist.php'); $dataRes .= wikiplugin_trackerlist($data, $params); } else { $data = ''; } $smarty->assign_by_ref('sortchoice', $sortchoice); $smarty->assign_by_ref('filters', $filters); //echo '<pre>';print_r($filters); echo '</pre>'; $smarty->assign_by_ref('trackerId', $trackerId); $smarty->assign('line', ($line == 'y' || $line == 'in')? 'y': 'n'); $smarty->assign('indrop', $line == 'in'? 'y': 'n'); $smarty->assign('iTrackerFilter', $iTrackerFilter); if (!empty($export_action)) { $smarty->assign('export_action', $export_action); $smarty->assign('export_fields', implode(':', $fields)); $smarty->assign('export_itemid', $export_itemid == 'y' ? 'on' : ''); $smarty->assign('export_status', $export_status == 'y' ? 'on' : ''); $smarty->assign('export_created', $export_created == 'y' ? 'on' : ''); $smarty->assign('export_modif', $export_modif == 'y' ? 'on' : ''); $smarty->assign('export_charset', $export_charset); if (empty($params['filters'])) { if (!empty($filterfield)) { // convert param filters to export params $f_fields = array(); for ($i = 0, $cfilterfield = count($filterfield); $i < $cfilterfield ; $i++) { if (!empty($exactvalue[$i])) { $f_fields['f_' . $filterfield[$i]] = $exactvalue[$i]; } else if (!empty($filtervalue[$i])) { $f_fields['f_' . $filterfield[$i]] = $filtervalue[$i]; $f_fields['x_' . $filterfield[$i]] = 't'; // x_ is for not exact? } } $smarty->assign_by_ref('f_fields', $f_fields); } $filters = array(); // clear out filters set up earlier which default to all fields if not exporting } } if ($displayList == 'n' || !empty($_REQUEST['filter']) || $noflipflop == 'y' || $prefs['javascript_enabled'] != 'y' || (isset($_SESSION['tiki_cookie_jar']["show_trackerFilter$iTrackerFilter"]) && $_SESSION['tiki_cookie_jar']["show_trackerFilter$iTrackerFilter"] == 'y')) { $open = 'y'; $_SESSION['tiki_cookie_jar']["show_trackerFilter$iTrackerFilter"] = 'y'; } else { $open = 'n'; } $smarty->assign_by_ref('open', $open); $smarty->assign_by_ref('action', $action); $smarty->assign_by_ref('noflipflop', $noflipflop); $smarty->assign_by_ref('dataRes', $dataRes); if (isset($googlemapButtons)) { $smarty->assign('googlemapButtons', $googlemapButtons); } $dataF = $smarty->fetch('wiki-plugins/wikiplugin_trackerfilter.tpl'); static $first = true; if ( $first ) { $first = false; global $headerlib; $headerlib->add_jq_onready( '$("a.prevnext", "#trackerFilter' . $iTrackerFilter . ' + .trackerfilter-result").click( function( e ) { e.preventDefault(); $("#trackerFilter' . $iTrackerFilter . ' form") .attr("action", $(this).attr("href")) .submit(); } );' ); } return $data . $dataF; }
function wikiplugin_trackerfilter($data, $params) { global $smarty, $prefs; global $trklib; include_once 'lib/trackers/trackerlib.php'; if ($prefs['feature_trackers'] != 'y') { return $smarty->fetch("wiki-plugins/error_tracker.tpl"); } extract($params, EXTR_SKIP); $dataRes = ''; if (isset($_REQUEST['msgTrackerFilter'])) { $smarty->assign('msgTrackerFilter', $_REQUEST['msgTrackerFilter']); } if (!isset($filters)) { $smarty->assign('msg', tra("missing parameters")); return $dataRes . $smarty->fetch("error_simple.tpl"); } $listfields = split(':', $filters); foreach ($listfields as $i => $f) { if (strchr($f, '/')) { list($fieldId, $format) = split('/', $f); $listfields[$i] = $fieldId; $formats[$fieldId] = $format; } else { $formats[$f] = ''; } } if (!isset($displayList)) { $displayList = 'n'; } if (empty($trackerId) && !empty($_REQUEST['trackerId'])) { $trackerId = $_REQUEST['trackerId']; } if (!isset($line)) { $line = 'n'; } if (empty($_REQUEST['filter'])) { // look if not coming from an initial foreach ($_REQUEST as $key => $val) { if (substr($key, 0, 2) == 'f_') { $_REQUEST['filter'] = 'y'; break; } } } if ($displayList == 'y' || isset($_REQUEST['filter']) || isset($_REQUEST['tr_offset']) || isset($_REQUEST['tr_sort_mode'])) { if (!isset($trackerId) || !($tracker = $trklib->get_tracker($trackerId))) { return $smarty->fetch("wiki-plugins/error_tracker.tpl"); } if (!isset($fields)) { $smarty->assign('msg', tra("missing parameters")); return $msg; } foreach ($_REQUEST as $key => $val) { if (substr($key, 0, 2) == 'f_' && !empty($val) && (!is_array($val) || !empty($val[0]))) { $fieldId = substr($key, 2); $ffs[] = $fieldId; if (isset($formats[$fieldId]) && ($formats[$fieldId] == 't' || $formats[$fieldId] == 'i')) { $exactValues[] = ''; $values[] = $formats[$fieldId] == 'i' ? "{$val}%" : $val; } else { $exactValues[] = $val; $values[] = ''; } } } $params['fields'] = $fields; if (empty($params['trackerId'])) { $params['trackerId'] = $trackerId; } unset($params['filterfield']); unset($params['filtervalue']); if (!empty($ffs)) { $params['filterfield'] = $ffs; $params['exactvalue'] = $exactValues; $params['filtervalue'] = $values; } //echo '<pre>'; print_r($params);echo '</pre>'; include_once 'lib/wiki-plugins/wikiplugin_trackerlist.php'; $dataRes .= wikiplugin_trackerlist($data, $params); $dataRes .= '<br />'; } else { $data = ''; } $filters = wikiplugin_trackerFilter_get_filters($trackerId, $listfields, $formats); $smarty->assign_by_ref('filters', $filters); $smarty->assign_by_ref('trackerId', $trackerId); $smarty->assign_by_ref('line', $line); static $iTrackerFilter = 0; $smarty->assign('iTrackerFilter', $iTrackerFilter++); if ($displayList == 'n' || !empty($_REQUEST['filter'])) { $open = 'y'; } else { $open = 'n'; } $smarty->assign_by_ref('open', $open); if (!isset($action)) { $action = 'Filter'; //tra('Filter') } $smarty->assign_by_ref('action', $action); $dataF = $smarty->fetch('wiki-plugins/wikiplugin_trackerfilter.tpl'); return $data . $dataF . $dataRes; }
$smarty->assign('trackerId', $_REQUEST["trackerId"]); $smarty->assign('tracker_info', $tracker_info); $smarty->assign('fields', $fields['data']); $smarty->assign('ins_fields', $ins_fields['data']); $smarty->assign_by_ref('items', $items["data"]); $smarty->assign_by_ref('item_count', $items['cant']); $smarty->assign_by_ref('listfields', $listfields); $users = $userlib->list_all_users(); $smarty->assign_by_ref('users', $users); if ($tiki_p_export_tracker == 'y') { $trackers = $trklib->list_trackers(); $smarty->assign_by_ref('trackers', $trackers['data']); include_once ('lib/wiki-plugins/wikiplugin_trackerfilter.php'); $formats = ''; $filters = wikiplugin_trackerFilter_get_filters($_REQUEST['trackerId'], '', $formats); $smarty->assign_by_ref('filters', $filters); if (!empty($_REQUEST['displayedFields'])) { if (is_string($_REQUEST['displayedFields'])) { $smarty->assign('displayedFields', preg_split('/[:,]/', $_REQUEST['displayedFields'])); } else { $smarty->assign_by_ref('displayedFields', $_REQUEST['displayedFields']); } } $smarty->assign('recordsMax', $items['cant']); $smarty->assign('recordsOffset', 1); } include_once ('tiki-section_options.php'); $smarty->assign('uses_tabs', 'y'); $smarty->assign('show_filters', 'n'); if (count($fields['data']) > 0) {
$info['oneUserItem'] = ''; $info["writerGroupCanModify"] = ''; $info["defaultStatus"] = 'o'; $info["defaultStatusList"] = array(); $info["orderAttachments"] = 'name,created,filesize,hits,desc'; $info['start'] = 0; $info['end'] = 0; $info['autoCreateCategories'] = ''; if ($_REQUEST["trackerId"]) { $info = array_merge($info, $tikilib->get_tracker($_REQUEST["trackerId"])); $info = array_merge($info, $trklib->get_tracker_options($_REQUEST["trackerId"])); $cookietab = '2'; $fields = $trklib->list_tracker_fields($_REQUEST["trackerId"], 0, -1, 'position_asc', ''); $smarty->assign('action', ''); include_once 'lib/wiki-plugins/wikiplugin_trackerfilter.php'; $filters = wikiplugin_trackerFilter_get_filters($_REQUEST['trackerId']); $smarty->assign_by_ref('filters', $filters); } $dstatus = preg_split('//', $info['defaultStatus'], -1, PREG_SPLIT_NO_EMPTY); foreach ($dstatus as $ds) { $info["defaultStatusList"][$ds] = true; } $smarty->assign('fields', $fields['data']); $smarty->assign('name', $info["name"]); $smarty->assign('description', $info["description"]); $smarty->assign('descriptionIsParsed', $info["descriptionIsParsed"]); $smarty->assign('showCreated', $info["showCreated"]); $smarty->assign('showCreatedFormat', $info['showCreatedFormat']); $smarty->assign('showCreatedView', $info["showCreatedView"]); $smarty->assign('useExplicitNames', $info["useExplicitNames"]); $smarty->assign('doNotShowEmptyField', $info['doNotShowEmptyField']);