function pieRefererList($resource, $context) { $page = new Page(); $referers = array(); // Traverse all pages and search for matching links. for ($item = $page->first(); $item; $item = $page->next()) { if (!$page->read($item, 0)) { return false; } // Check for aliases that refer to originals. if ($page->meta['type'] == "alias" && $page->meta['original'] == $resource) { $referers[$item] = true; continue; } if ($context == "page") { if (!$page->meta['pages']) { continue; } $links = explode(" ", $page->meta['pages']); } elseif ($context == "file") { if (!$page->meta['files']) { continue; } $links = explode(" ", $page->meta['files']); } else { return false; } if (!in_array($resource, $links)) { continue; } // $item refers to $resource. $referers[$item] = true; } $referers = array_keys($referers); sort($referers); return $referers; }
$hint_show = $GLOBALS['pie']['locale']->key("Show"); $hint_edit = $GLOBALS['pie']['locale']->key("Edit"); $ip = pieMakeString('[[$^icon_link]]'); foreach ($referers as $name => $i) { $n++; print '<tr class="' . ($n % 2 ? "oddRow" : "evenRow") . '">' . '<td>' . pieMakeLink(htmlspecialchars($name), array('page' => $name), array('class' => "itemLink")) . '</td>' . "<td style=\"text-align: right;\">{$i}</td>" . '<td>' . pieMakeLink("<img src=\"{$ip}/information.png\" />", array('action' => "pageinfo", 'page' => $name), array('title' => $hint_info)) . '</td>' . '<td>' . pieMakeLink("<img src=\"{$ip}/page_edit.png\" />", array('action' => "edit", 'page' => $name), array('title' => $hint_edit)) . '</td>' . "</tr>\n"; } print "</table>\n"; } elseif (@$_REQUEST['mode'] == "links") { // Walk all pages and examine their links. // Collect a list of _links_, i. e. destinations of broken links. $page = new Page(); $file = new File(); $deadpages = array(); $deadfiles = array(); for ($name = $page->first(); $name; $name = $page->next()) { if (!$page->read($name, 0)) { pieError("SourceReadError"); } if ($page->meta['pages']) { // There are page links that are to be checked. $list = explode(" ", $page->meta['pages']); foreach ($list as $i) { if (!$page->exists($i)) { $deadpages[$i]++; } } } if ($page->meta['files']) { // There are file links that are to be checked. $list = explode(" ", $page->meta['files']);
/** * Set up paging * * @access public * @static * @param array $segments */ public static function setUp(&$segments = array()) { $count = count($segments); self::$end = self::$offset; if (isset($segments[$count - 2]) && isset($segments[$count - 1])) { if ($segments[$count - 2] == 'page' && is_numeric($segments[$count - 1])) { if ($segments[$count - 1] > 1) { self::$page = $segments[$count - 1]; self::$start = (self::$page - 1) * self::$offset; self::$end = self::$offset * self::$page; } unset($segments[$count - 2]); unset($segments[$count - 1]); } } self::$next = '/' . implode('/', $segments) . '/page/'; self::$next .= self::$page + 1; if (self::$page > 1) { self::$previous = '/' . implode('/', $segments) . '/page/'; self::$previous .= self::$page - 1; } }