Changeset View
Changeset View
Standalone View
Standalone View
modules/custom/units/widgets/widget_eh.php
Show First 20 Lines • Show All 187 Lines • ▼ Show 20 Line(s) | |||||
*/ | */ | ||||
protected function OnAfterItemLoad(kEvent $event) | protected function OnAfterItemLoad(kEvent $event) | ||||
{ | { | ||||
parent::OnAfterItemLoad($event); | parent::OnAfterItemLoad($event); | ||||
} | } | ||||
/** | |||||
* 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). | |||||
* @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) { | |||||
return $this->WidgetRewriteBuilder($rewrite_mode, $prefix, $params, $url_parts, $keep_events); | |||||
} | |||||
if ($rewrite_mode == REWRITE_MODE_PARSE) { | |||||
return $this->WidgetRewriteParser($rewrite_mode, $prefix, $params, $url_parts); | |||||
} | |||||
return true; | |||||
} | |||||
/** | |||||
* 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). | |||||
* @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 WidgetRewriteBuilder($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false) | |||||
{ | |||||
$template = $this->Application->getPhysicalTemplate($params['t']); | |||||
if ( $template == 'widgets/widget_detail' ) { | |||||
// this is default template for this prefix, so don't add it to resulting url | |||||
$params['pass_template'] = false; | |||||
} | |||||
$rewrite_processor = $this->Application->recallObject('kRewriteUrlProcessor'); | |||||
/* @var $rewrite_processor kRewriteUrlProcessor */ | |||||
$processed_params = $rewrite_processor->getProcessedParams($prefix, $params, $keep_events); | |||||
if ( $processed_params === false ) { | |||||
return ''; | |||||
} | |||||
$ret = Array ('', ''); | |||||
$filename = isset($params[$prefix . '_filename']) ? $params[$prefix . '_filename'] : $this->Application->GetVar($prefix . '_filename'); | |||||
unset($params[$prefix . '_filename']); | |||||
if ( $processed_params[$prefix . '_id'] > 0 ) { | |||||
// add id | |||||
if ( !$filename ) { | |||||
$sql = 'SELECT Title | |||||
FROM ' . TABLE_PREFIX . 'Widgets | |||||
WHERE WidgetId = ' . $processed_params[$prefix . '_id']; | |||||
$filename = $this->Conn->GetOne($sql); | |||||
} | |||||
$ret[0] .= 'widgets/' . $filename . '/'; | |||||
} | |||||
elseif ( $processed_params[$prefix . '_Page'] > 1 ) { | |||||
// add page, only when ID is missing | |||||
$ret[1] .= $processed_params[$prefix . '_Page'] . '/'; | |||||
} | |||||
$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) | |||||
{ | |||||
$widget_id = 0; | |||||
$widget_filename = ''; | |||||
$widget_index = array_search('widgets', $url_parts); | |||||
if ( $widget_index !== false && isset($url_parts[$widget_index + 1]) ) { | |||||
$widget_filename = $url_parts[$widget_index + 1]; | |||||
} | |||||
$rewrite_processor = $this->Application->recallObject('kRewriteUrlProcessor'); | |||||
/* @var $rewrite_processor kRewriteUrlProcessor */ | |||||
if ( $widget_filename ) { | |||||
$sql = 'SELECT WidgetId | |||||
FROM ' . TABLE_PREFIX . 'Widgets | |||||
WHERE Title = ' . $this->Conn->qstr($widget_filename); | |||||
$widget_id = $this->Conn->GetOne($sql); | |||||
if ( $widget_id ) { | |||||
$params[$this->Prefix . '_id'] = $widget_id; | |||||
$params[$this->Prefix . '_filename'] = $widget_filename; | |||||
$params['pass'][] = $this->Prefix; | |||||
$rewrite_processor->partParsed('widgets'); | |||||
$rewrite_processor->partParsed($widget_filename); | |||||
} | |||||
} | |||||
if ( $widget_id && !$rewrite_processor->moreToParse() ) { | |||||
// widget was last url part - use default template | |||||
$params['t'] = 'widgets/widget_detail'; | |||||
} | |||||
return true; | |||||
} | } | ||||
} | |||||
No newline at end of file |