* @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
* @param string $prefix Prefix, that listener uses for system integration
* @param Array $params Params, that are used for url building or created during url parsing.
* @param Array $url_parts Url parts to parse (only for parsing).
* @param bool $keep_events Keep event names in resulting url (only for building).
* @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
*/
function WidgetRewriteListener($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false)
{
if ($rewrite_mode == REWRITE_MODE_BUILD) {
- if ($params['t'] == 'widgets/widget_detail') {
- // this is default template for this prefix, so don't add it to resulting url
+ * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
+ * @param string $prefix Prefix, that listener uses for system integration
+ * @param Array $params Params, that are used for url building or created during url parsing.
+ * @param Array $url_parts Url parts to parse (only for parsing).
+ * @param bool $keep_events Keep event names in resulting url (only for building).
+ * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
- WHERE Title = ' . $this->Conn->qstr($url_parts[1]);
- $id = $this->Conn->GetOne($sql);
- $to_parse = $url_parts;
-
- if ($id > 0) {
- // id found
- $params[$prefix . '_id'] = $id;
- $to_parse = array_slice($to_parse, 2); // cut off first two parts - "widgets/<widget+name>"
- $params['pass'][] = $prefix; // otherwise this prefix won't passed when pass="all" parameter used
- }
-
- $template = implode('/', $to_parse);
-
- if ($template) {
- // let others guess what template is
- return true;
- }
-
- // template missing -> set default
- $params['t'] = 'widgets/widget_detail';
- return false;
+ $ret[0] = rtrim($ret[0], '/');
+ $ret[1] = rtrim($ret[1], '/');
+
+ return array_map('mb_strtolower', $ret);
+ }
+
+ /**
+ * Builds/parses widget part of url
+ *
+ * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
+ * @param string $prefix Prefix, that listener uses for system integration
+ * @param Array $params Params, that are used for url building or created during url parsing.
+ * @param Array $url_parts Url parts to parse (only for parsing).
+ * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
+ */
+ function WidgetRewriteParser($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts)
+ {
+ if ($url_parts[0] == 'widgets') {
+ $sql = 'SELECT WidgetId
+ FROM ' . TABLE_PREFIX . 'Widgets
+ WHERE Title = ' . $this->Conn->qstr($url_parts[1]);
+ $id = $this->Conn->GetOne($sql);
+ $to_parse = $url_parts;
+
+ if ($id > 0) {
+ // id found
+ $params[$prefix . '_id'] = $id;
+ $to_parse = array_slice($to_parse, 2); // cut off first two parts - "widgets/<widget+name>"
+ $params['pass'][] = $prefix; // otherwise this prefix won't passed when pass="all" parameter used