Index: branches/5.3.x/core/kernel/db/db_tag_processor.php
===================================================================
diff -u -r16111 -r16222
--- branches/5.3.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 16111)
+++ branches/5.3.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 16222)
@@ -1,6 +1,6 @@
Application->RecallVar($this->getPrefixSpecial() . '_view_filter');
if ( $view_filter === false ) {
- $event_params = Array ('prefix' => $this->Prefix, 'special' => $this->Special, 'name' => 'OnRemoveFilters');
- $this->Application->HandleEvent(new kEvent($event_params));
+ $this->Application->HandleEvent(new kEvent($this->getPrefixSpecial() . ':OnRemoveFilters'));
$view_filter = $this->Application->RecallVar($this->getPrefixSpecial() . '_view_filter');
}
Index: branches/5.3.x/core/units/priorites/priority_eh.php
===================================================================
diff -u -r15902 -r16222
--- branches/5.3.x/core/units/priorites/priority_eh.php (.../priority_eh.php) (revision 15902)
+++ branches/5.3.x/core/units/priorites/priority_eh.php (.../priority_eh.php) (revision 16222)
@@ -1,6 +1,6 @@
$del_info['prefix'], 'name'=>'Dummy' ) );
+ $dummy_event = new kEvent($del_info['prefix'] . ':OnDummy');
$ids = $priority_helper->recalculatePriorities($dummy_event, $del_info['constrain'], $del_info['joins']);
if ($ids) {
@@ -299,7 +299,7 @@
function OnChangePriority($event)
{
$prefix = $this->Application->GetVar('priority_prefix');
- $dummy_event = new kEvent( array('prefix'=>$prefix, 'name'=>'Dummy' ) );
+ $dummy_event = new kEvent($prefix . ':OnDummy');
$ids = $this->StoreSelectedIDs($dummy_event);
Index: branches/5.3.x/core/kernel/utility/event.php
===================================================================
diff -u -r16181 -r16222
--- branches/5.3.x/core/kernel/utility/event.php (.../event.php) (revision 16181)
+++ branches/5.3.x/core/kernel/utility/event.php (.../event.php) (revision 16222)
@@ -1,6 +1,6 @@
Init($prefix, $special);
- }
+ /**
+ * Create event from given prefix, special, name and specific params.
+ * Parameter $params could be be an an array with following keys: "prefix", "special" (optional), "name".
+ * Parameter $params could be a string in format: "prefix:name" or "prefix.special:name".
+ *
+ * @param mixed $event_string Params.
+ * @param array $specific_params Event specific params (none by default).
+ *
+ * @throws InvalidArgumentException When incorrect event string given.
+ */
+ public function __construct($event_string, array $specific_params = array())
+ {
+ parent::__construct();
- $this->Name = isset($params['name']) ? $params['name'] : '';
- }
- elseif ( is_string($params) ) {
- if ( preg_match('/([^.:]*)[.]{0,1}([^:]*):(.*)/', $params, $regs) ) {
- $prefix = $regs[1];
- $special = $regs[2];
+ if ( preg_match('/([^.:]*)[.]{0,1}([^:]*):(.*)/', $event_string, $regs) ) {
+ $prefix = $regs[1];
+ $special = $regs[2];
- if ( $prefix ) {
- $this->Init($prefix, $special);
- }
-
- $this->Name = $regs[3];
- }
- else {
- $error_msg = 'Invalid event string: "' . $params . '". ';
- $error_msg .= 'Should be in "prefix[.special]:OnEvent" format';
- throw new InvalidArgumentException($error_msg);
- }
- }
+ if ( $prefix ) {
+ $this->Init($prefix, $special);
}
- if ( isset($specific_params) ) {
- $this->specificParams = $specific_params;
- }
+ $this->Name = $regs[3];
+ $this->_specificParams = $specific_params;
}
-
- /**
- * Returns joined prefix and special if any
- *
- * @param bool $from_submit if true, then joins prefix & special by "_", uses "." otherwise
- * @return string
- * @access public
- */
- public function getPrefixSpecial($from_submit = false)
- {
- if (!$from_submit) {
- return parent::getPrefixSpecial();
- }
-
- return rtrim($this->Prefix . '_' . $this->Special, '_');
+ else {
+ $error_msg = 'Invalid event string: "' . $event_string . '". ';
+ $error_msg .= 'Should be in "prefix[.special]:OnEvent" format';
+ throw new InvalidArgumentException($error_msg);
}
+ }
- /**
- * Sets event parameter
- *
- * @param string $name
- * @param mixed $value
- * @access public
- */
- public function setEventParam($name,$value)
- {
- $this->specificParams[$name] = $value;
+ /**
+ * Returns joined prefix and special if any.
+ *
+ * @param boolean $from_submit If true, then joins prefix & special by "_", uses "." otherwise.
+ *
+ * @return string
+ */
+ public function getPrefixSpecial($from_submit = false)
+ {
+ if ( !$from_submit ) {
+ return parent::getPrefixSpecial();
}
- /**
- * Returns event parameter by name (supports digging)
- *
- * @param string $name
- * @return mixed
- * @access public
- */
- public function getEventParam($name)
- {
- $args = func_get_args();
+ return rtrim($this->Prefix . '_' . $this->Special, '_');
+ }
- if (count($args) > 1) {
- kUtil::array_unshift_ref($args, $this->specificParams);
+ /**
+ * Sets event parameter.
+ *
+ * @param string $name Name.
+ * @param mixed $value Value.
+ *
+ * @return void
+ */
+ public function setEventParam($name, $value)
+ {
+ $this->_specificParams[$name] = $value;
+ }
- return call_user_func_array('getArrayValue', $args); // getArrayValue($this->specificParams, $name);
- }
+ /**
+ * Returns event parameter by name (supports digging).
+ *
+ * @param string $name Name.
+ *
+ * @return mixed
+ */
+ public function getEventParam($name)
+ {
+ $args = func_get_args();
- return array_key_exists($name, $this->specificParams) ? $this->specificParams[$name] : false;
- }
+ if ( count($args) > 1 ) {
+ kUtil::array_unshift_ref($args, $this->_specificParams);
- /**
- * Returns all event parameters
- *
- * @return Array
- * @access public
- */
- public function getEventParams()
- {
- return $this->specificParams;
+ return call_user_func_array('getArrayValue', $args);
}
- /**
- * Set's pseudo class that differs from
- * the one specified in $Prefix
- *
- * @param string $appendix
- * @access public
- */
- public function setPseudoClass($appendix)
- {
- $this->pseudoClass = $this->Prefix . $appendix;
- }
+ return array_key_exists($name, $this->_specificParams) ? $this->_specificParams[$name] : false;
+ }
- /**
- * Performs event initialization
- * Also sets pseudo class same $prefix
- *
- * @param string $prefix
- * @param string $special
- * @access public
- */
- public function Init($prefix, $special)
- {
- $this->pseudoClass = $prefix;
+ /**
+ * Returns all event parameters.
+ *
+ * @return array
+ */
+ public function getEventParams()
+ {
+ return $this->_specificParams;
+ }
- parent::Init($prefix, $special);
- }
+ /**
+ * Set's pseudo class that differs from the one specified in $Prefix.
+ *
+ * @param string $appendix Appendix.
+ *
+ * @return void
+ */
+ public function setPseudoClass($appendix)
+ {
+ $this->_pseudoClass = $this->Prefix . $appendix;
+ }
- /**
- * Returns object used in event
- *
- * @param Array $params
- * @return kDBBase
- * @access public
- */
- public function getObject(array $params = Array())
- {
- if ( !$this->Application->hasObject($this->prefixSpecial) ) {
- $top_event = $this;
+ /**
+ * Performs event initialization.
+ *
+ * Also sets pseudo class same $prefix.
+ *
+ * @param string $prefix Prefix.
+ * @param string $special Special.
+ *
+ * @return void
+ */
+ public function Init($prefix, $special)
+ {
+ $this->_pseudoClass = $prefix;
- // when OnSave calls OnPreSave in first line, then this would make sure OnSave is used
- while ( is_object($top_event->MasterEvent) ) {
- $top_event = $top_event->MasterEvent;
- }
+ parent::Init($prefix, $special);
+ }
- $params['parent_event'] = $top_event;
+ /**
+ * Returns object used in event.
+ *
+ * @param array $params Params.
+ *
+ * @return kDBBase
+ */
+ public function getObject(array $params = array())
+ {
+ if ( !$this->Application->hasObject($this->prefixSpecial) ) {
+ $top_event = $this;
+
+ // When OnSave calls OnPreSave in first line, then this would make sure OnSave is used.
+ while ( is_object($top_event->MasterEvent) ) {
+ $top_event = $top_event->MasterEvent;
}
- return $this->Application->recallObject($this->prefixSpecial, $this->pseudoClass, $params);
+ $params['parent_event'] = $top_event;
}
- /**
- * Executes given event in context of current event
- * Sub-event gets this event in "kEvent::MasterEvent" attribute.
- * Sub-event execution results (status and redirect* properties) are copied back to current event.
- *
- * @param string $name name of callable event (optionally could contain prefix_special as well)
- * @see kEvent::MasterEvent
- * @todo Will overwrite master event data with called event data, which makes 'parent_event' useless in most cases
- */
- public function CallSubEvent($name)
- {
- if ( strpos($name, ':') === false ) {
- // PrefixSpecial not specified -> use from current event
- $name = $this->getPrefixSpecial() . ':' . $name;
- }
+ return $this->Application->recallObject($this->prefixSpecial, $this->_pseudoClass, $params);
+ }
- $child_event = new kEvent($name);
- $child_event->copyFrom($this, true);
-
- $this->Application->HandleEvent($child_event);
- $this->copyFrom($child_event);
- $this->specificParams = $child_event->specificParams;
+ /**
+ * Executes given event in context of current event.
+ *
+ * Sub-event gets this event in "kEvent::MasterEvent" attribute.
+ * Sub-event execution results (status and redirect* properties) are copied back to current event.
+ *
+ * @param string $name Name of callable event (optionally could contain prefix_special as well).
+ *
+ * @return void
+ * @see kEvent::MasterEvent
+ * @todo Overwrites master event data with called event data, which makes 'parent_event' useless in most cases.
+ */
+ public function CallSubEvent($name)
+ {
+ if ( strpos($name, ':') === false ) {
+ // PrefixSpecial not specified -> use from current event.
+ $name = $this->getPrefixSpecial() . ':' . $name;
}
- /**
- * Allows to copy data between events
- *
- * @param kEvent $source_event
- * @param bool $inherit
- * @access public
- */
- public function copyFrom($source_event, $inherit = false)
- {
- if ( $inherit ) {
- $this->MasterEvent = $source_event;
- }
- else {
- $this->status = $source_event->status;
- }
+ $child_event = new kEvent($name);
+ $child_event->copyFrom($this, true);
- $this->redirect = $source_event->redirect;
- $this->redirectParams = $source_event->redirectParams;
- $this->redirectScript = $source_event->redirectScript;
- $this->specificParams = $source_event->specificParams;
- }
+ $this->Application->HandleEvent($child_event);
+ $this->copyFrom($child_event);
+ $this->_specificParams = $child_event->_specificParams;
+ }
- /**
- * Returns all redirect parameters
- *
- * @return Array
- * @access public
- */
- public function getRedirectParams()
- {
- return $this->redirectParams;
+ /**
+ * Allows to copy data between events.
+ *
+ * @param kEvent $source_event Source event.
+ * @param boolean $inherit Keep reference to source event in copied event.
+ *
+ * @return void
+ */
+ public function copyFrom(kEvent $source_event, $inherit = false)
+ {
+ if ( $inherit ) {
+ $this->MasterEvent = $source_event;
}
-
- /**
- * Returns redirect parameter
- *
- * @param string $name
- * @return mixed
- * @access public
- */
- public function getRedirectParam($name)
- {
- return array_key_exists($name, $this->redirectParams) ? $this->redirectParams[$name] : false;
+ else {
+ $this->status = $source_event->status;
}
- /**
- * Set's redirect param for event
- *
- * @param string $name
- * @param string $value
- * @access public
- */
- public function SetRedirectParam($name, $value)
- {
- $this->redirectParams[$name] = $value;
- }
+ $this->redirect = $source_event->redirect;
+ $this->_redirectParams = $source_event->_redirectParams;
+ $this->redirectScript = $source_event->redirectScript;
+ $this->_specificParams = $source_event->_specificParams;
+ }
- /**
- * Allows to merge passed redirect params hash with existing ones
- *
- * @param Array $params
- * @param bool $append
- * @access public
- */
- public function setRedirectParams($params, $append = true)
- {
- if ( $append ) {
- // append new parameters to parameters set before
- $params = kUtil::array_merge_recursive($this->redirectParams, $params);
- }
+ /**
+ * Returns all redirect parameters.
+ *
+ * @return array
+ */
+ public function getRedirectParams()
+ {
+ return $this->_redirectParams;
+ }
- $this->redirectParams = $params;
- }
+ /**
+ * Returns redirect parameter.
+ *
+ * @param string $name Name.
+ *
+ * @return mixed
+ */
+ public function getRedirectParam($name)
+ {
+ return array_key_exists($name, $this->_redirectParams) ? $this->_redirectParams[$name] : false;
+ }
- /**
- * Allows to tell if this event was called some how (e.g. subevent, hook) from event requested
- *
- * @param string $event_key event key in format [prefix[.special]:]event_name
- * @return bool
- * @access public
- */
- public function hasAncestor($event_key)
- {
- if ( strpos($event_key, ':') === false ) {
- $event_key = $this->getPrefixSpecial() . ':' . $event_key;
- }
+ /**
+ * Set's redirect param for event.
+ *
+ * @param string $name Name.
+ * @param string $value Value.
+ *
+ * @return void
+ */
+ public function SetRedirectParam($name, $value)
+ {
+ $this->_redirectParams[$name] = $value;
+ }
- return $this->Application->EventManager->eventRunning($event_key);
+ /**
+ * Allows to merge passed redirect params hash with existing ones.
+ *
+ * @param array $params Params.
+ * @param boolean $append Append to existing parameters.
+ *
+ * @return void
+ */
+ public function setRedirectParams(array $params, $append = true)
+ {
+ if ( $append ) {
+ $params = kUtil::array_merge_recursive($this->_redirectParams, $params);
}
- /**
- * Returns permission section associated with event
- *
- * @return string
- * @access public
- */
- public function getSection()
- {
- $perm_section = $this->getEventParam('PermSection');
+ $this->_redirectParams = $params;
+ }
- if ( $perm_section ) {
- return $perm_section;
- }
+ /**
+ * Allows to tell if this event was called some how (e.g. sub-event, hook) from event requested.
+ *
+ * @param string $event_key Event key in format: "[prefix[.special]:]event_name".
+ *
+ * @return boolean
+ */
+ public function hasAncestor($event_key)
+ {
+ if ( strpos($event_key, ':') === false ) {
+ $event_key = $this->getPrefixSpecial() . ':' . $event_key;
+ }
- // 1. get section by current top_prefix
- $top_prefix = $this->getEventParam('top_prefix');
+ return $this->Application->EventManager->eventRunning($event_key);
+ }
- if ( $top_prefix == false ) {
- $top_prefix = $this->Application->GetTopmostPrefix($this->Prefix, true);
- $this->setEventParam('top_prefix', $top_prefix);
- }
+ /**
+ * Returns permission section associated with event.
+ *
+ * @return string
+ * @throws Exception When permission section not specified for event's unit.
+ */
+ public function getSection()
+ {
+ $perm_section = $this->getEventParam('PermSection');
- $section = $this->Application->getUnitConfig($top_prefix)->getPermSectionByName('main');
+ if ( $perm_section ) {
+ return $perm_section;
+ }
- // 2. check if this section has perm_prefix mapping to other prefix
- $sections_helper = $this->Application->recallObject('SectionsHelper');
- /* @var $sections_helper kSectionsHelper */
+ // 1. get section by current top_prefix.
+ $top_prefix = $this->getEventParam('top_prefix');
- $section_data =& $sections_helper->getSectionData($section);
+ if ( $top_prefix == false ) {
+ $top_prefix = $this->Application->GetTopmostPrefix($this->Prefix, true);
+ $this->setEventParam('top_prefix', $top_prefix);
+ }
- if ( $section_data && isset($section_data['perm_prefix']) && $section_data['perm_prefix'] != $top_prefix ) {
- $this->setEventParam('top_prefix', $section_data['perm_prefix']);
- $section = $this->Application->getUnitConfig($section_data['perm_prefix'])->getPermSectionByName('main');
- }
+ $section = $this->Application->getUnitConfig($top_prefix)->getPermSectionByName('main');
- if ( !$section ) {
- throw new Exception('Permission section not specified for prefix ' . $top_prefix . '');
- }
+ // 2. check if this section has perm_prefix mapping to other prefix.
+ $sections_helper = $this->Application->recallObject('SectionsHelper');
+ /* @var $sections_helper kSectionsHelper */
- return $section;
+ $section_data =& $sections_helper->getSectionData($section);
+
+ if ( $section_data && isset($section_data['perm_prefix']) && $section_data['perm_prefix'] != $top_prefix ) {
+ $this->setEventParam('top_prefix', $section_data['perm_prefix']);
+ $section = $this->Application->getUnitConfig($section_data['perm_prefix'])->getPermSectionByName('main');
}
- public function __toString()
- {
- return $this->getPrefixSpecial() . ':' . $this->Name;
+ if ( !$section ) {
+ $error_msg = 'Permission section not specified for';
+ $error_msg .= ' prefix ' . $top_prefix . '';
+ throw new Exception($error_msg);
}
+
+ return $section;
}
+
+ /**
+ * Casts object to string.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getPrefixSpecial() . ':' . $this->Name;
+ }
+
+}
Index: branches/5.3.x/core/kernel/application.php
===================================================================
diff -u -r16220 -r16222
--- branches/5.3.x/core/kernel/application.php (.../application.php) (revision 16220)
+++ branches/5.3.x/core/kernel/application.php (.../application.php) (revision 16222)
@@ -1,6 +1,6 @@
EventManager->HandleEvent($event);
}