function wikiplugin_zoterolist($data, $params) { if (! isset($params['tag'])) { return WikiParser_PluginOutput::argumentError(array('tag')); } $cachelib = TikiLib::lib('cache'); $tikilib = TikiLib::lib('tiki'); $cacheKey = 'zoterolist.' . $params['tag']; if ($cached = $cachelib->getSerialized($cacheKey, 'zotero')) { if (($cached['created'] + 3600) > $tikilib->now) { return WikiParser_PluginOutput::html($cached['data']); } } $zoterolib = TikiLib::lib('zotero'); $html = $zoterolib->get_formatted_references($params['tag']); $cachelib->cacheItem($cacheKey, serialize(array('created' => $tikilib->now, 'data' => $html)), 'zotero'); if ($html) { return WikiParser_PluginOutput::html($html); } else { return WikiParser_PluginOutput::error(tra('Error'), tra('No results obtained. The Zotero citation server may be down.')); } }
function wikiplugin_transclude( $data, $params ) { if ( ! isset( $params['page'] ) ) { return WikiParser_PluginOutput::argumentError(array( 'page' )); } $page = $params['page']; unset($params['page']); global $tikilib; if ( ! Perms::get('wiki page', $page)->view ) { return WikiParser_PluginOutput::error(tra('Permission Denied'), tra('Attempt to include a page that cannot be viewed.')); } if ( $info = $tikilib->get_page_info($page) ) { $parts = preg_split('/%%%text%%%/', $info['data']); $data = $tikilib->parse_data($data); $pass = $parts[0] . $data . $parts[1]; return preg_replace_callback( '/%%%([A-z0-9]+)%%%/', array( new WikiPlugin_Transclude_Replacer($params), 'callback' ), $pass ); } else { return WikiParser_PluginOutput::error(tr('Page not found'), tr('Page named "%0" does not exist at this time.', $page)); } }
function wikiplugin_trackeritemfield($data, $params) { global $userTracker, $group, $user, $userlib, $tiki_p_admin_trackers, $prefs, $smarty, $tikilib; global $trklib; include_once 'lib/trackers/trackerlib.php'; static $memoItemId = 0; static $memoTrackerId = 0; static $memoStatus = 0; static $memoUserTracker = false; static $memoItemObject = null; extract($params, EXTR_SKIP); if (empty($itemId) && !empty($_REQUEST['itemId'])) { if (!empty($trackerId)) { $info = $trklib->get_item_info($_REQUEST['itemId']); if (!empty($info) && $info['trackerId'] == $trackerId) { $itemId = $_REQUEST['itemId']; } } else { $itemId = $_REQUEST['itemId']; } } if (empty($itemId) && !empty($trackerId) && ($tracker_info = $trklib->get_tracker($trackerId))) { if ($t = $trklib->get_tracker_options($trackerId)) { $tracker_info = array_merge($tracker_info, $t); } $itemId = $trklib->get_user_item($trackerId, $tracker_info); } if (!empty($itemId) && $memoItemId == $itemId || empty($itemId) && !empty($memoItemId)) { $itemId = $memoItemId; if (empty($memoTrackerId)) { return tra('Incorrect param'); } $trackerId = $memoTrackerId; $itemObject = $memoItemObject; } else { if (!empty($trackerId) && !empty($_REQUEST['view_user'])) { $itemId = $trklib->get_user_item($trackerId, $tracker_info, $_REQUEST['view_user']); } if (empty($trackerId) && empty($itemId) && (isset($userTracker) && $userTracker == 'y' || isset($prefs) && $prefs['userTracker'] == 'y') && !empty($group) && ($utid = $userlib->get_tracker_usergroup($user)) && $utid['usersTrackerId']) { $trackerId = $utid['usersTrackerId']; $itemId = $trklib->get_item_id($trackerId, $utid['usersFieldId'], $user); } else { if (empty($trackerId) && !empty($itemId)) { $item = $trklib->get_tracker_item($itemId); $trackerId = $item['trackerId']; } } if (empty($itemId) && empty($test) && empty($status)) { // need an item return tra('Incorrect param') . ': itemId'; } if (!empty($status) && !$trklib->valid_status($status)) { return tra('Incorrect param') . ': status'; } $info = $trklib->get_tracker_item($itemId); if (!empty($info) && empty($trackerId)) { $trackerId = $info['trackerId']; } $itemObject = Tracker_Item::fromInfo($info); if (!$itemObject->canView()) { return WikiParser_PluginOutput::error(tr('Permission denied'), tr('You are not allowed to view this item.')); } $memoStatus = $info['status']; $memoItemId = $itemId; $memoTrackerId = $info['trackerId']; $memoItemObject = $itemObject; if (isset($_REQUEST['itemId']) && $_REQUEST['itemId'] != $itemId) { global $logslib; include_once 'lib/logs/logslib.php'; $logslib->add_action('Viewed', $itemId, 'trackeritem', $_SERVER['REQUEST_URI'] . '&trackeritemfield'); } } if (!isset($data)) { $data = $dataelse = ''; } elseif (!empty($data) && strpos($data, '{ELSE}')) { $dataelse = substr($data, strpos($data, '{ELSE}') + 6); $data = substr($data, 0, strpos($data, '{ELSE}')); } else { $dataelse = ''; } if (!empty($status)) { if (!strstr($status, $memoStatus)) { return $dataelse; } } if (empty($itemId) && !empty($test)) { return $dataelse; } elseif (empty($itemId)) { return tra('Incorrect param') . ': itemId'; } elseif (isset($fields)) { $all_fields = $trklib->list_tracker_fields($trackerId, 0, -1); $all_fields = $all_fields['data']; if (!empty($fields)) { foreach ($all_fields as $i => $fopt) { if (!in_array($fopt['fieldId'], $fields)) { unset($all_fields[$i]); } } if (empty($all_fields)) { return tra('Incorrect param'); } } $field_values = $trklib->get_item_fields($trackerId, $itemId, $all_fields, $itemUser); foreach ($field_values as $field_value) { if ($field_value['type'] == 'p' && $field_value['options_array'][0] == 'password' || $field_value['isHidden'] != 'n' && $field_value['isHidden'] != 'c') { continue; } if (!$itemObject->canViewField($field_value['fieldId'])) { continue; } if (empty($field_value['value'])) { return $dataelse; } } } elseif (!empty($fieldId)) { if (!($field = $trklib->get_tracker_field($fieldId))) { return tra('Incorrect param') . ': fieldId'; } if (!$itemObject->canViewField($fieldId)) { return WikiParser_PluginOutput::error(tr('Permission denied'), tr('You are not allowed to view this field.')); } if (empty($test)) { $test = false; } if (($val = $trklib->get_item_value($trackerId, $itemId, $fieldId)) !== false) { if ($test) { if (!empty($value) && $val != $value) { return $dataelse; } return $data; } else { $field['value'] = $val; $handler = $trklib->get_field_handler($field, $info); // gets the handler to blend back the value into the definitions array $out = $handler->renderOutput(array('showlinks' => 'n')); return $out; } } elseif ($test) { // testing the value of a field that does not exist yet return $dataelse; } } return $data; }