/** * Builds a URL from link parameters * @param parameters Array of link parameters containing... * page String of page name * type String of type name * action String of action name * id Scalar of ID of row * parameter Scalar parameter or Array of parameters */ public static function url(array $parameters) { global $wgTitle; // Gets the base url if (!self::$urlBase) { self::$urlBase = $wgTitle->getFullUrl(); } $parameters = array_merge(array('page' => null, 'type' => null, 'id' => null, 'action' => null, 'parameter' => null, 'limit' => null, 'offset' => null), $parameters); $url = self::$urlBase; // Checks if the page is set now if ($parameters['page'] !== null) { // Adds page to url $url .= '/' . $parameters['page']; if ($parameters['type'] !== null) { // Adds type to url $url .= ':' . $parameters['type']; // Checks if object id was given if ($parameters['id'] !== null) { // Adds id to url $url .= ':' . $parameters['id']; } } // Checks if action was given if ($parameters['action'] !== null) { // Adds action to url $url .= '/' . $parameters['action']; // Checks if parameter was given if ($parameters['parameter'] !== null) { if (is_array($parameters['parameter'])) { // Adds parameter to url $url .= ':' . implode(',', $parameters['parameter']); } else { // Adds parameter to url $url .= ':' . $parameters['parameter']; } } } elseif ($parameters['limit'] !== null) { $url .= '/'; } if ($parameters['limit'] !== null) { $url .= '/' . $parameters['limit']; if ($parameters['offset'] !== null) { $url .= ':' . $parameters['offset']; } } } // Returns url return $url; }