/** * Right handler routed * * handles chain call $ajax->someApi->uploader(); * * @param unknown_type $value */ function callbackHandler($sender, $receiver, $setting) { switch ($setting) { case 'postCallback': $event = CoreEvents::$cache[$receiver->id]; $callback = CoreEvents::$cache[$sender->id]; $event['postCallback'][$sender->id] = $callback; $sender->delete(); $callbacks = CoreEvents::processScache($event['postCallback']); $callbacks = CoreEvents::mkArray($callbacks, 'json', true); $event['postCallback'] = "<cjax>{$callbacks}</cjax>"; CoreEvents::$cache[$receiver->id] = $event; CoreEvents::simpleCommit(); break; } }
function __set($setting, $value) { if (is_a($value, __CLASS__) || is_a($value, 'plugin')) { if (is_a($value, 'plugin')) { if (method_exists($value, 'callbackHandler')) { if ($value->callbackHandler($value->xml, $this, $setting)) { return $value; } } } switch ($setting) { case 'waitFor': $value = $value->id; break; case 'callback': if (isset(CoreEvents::$callbacks[$value->id])) { $cb = CoreEvents::$callbacks[$value->id]; $cb = CoreEvents::processScache($cb); //die("s<Pre>".print_r($cb,1)); CoreEvents::$cache[$value->id]['callback'] = CoreEvents::mkArray($cb, 'json', true); CoreEvents::$callbacks[$this->id][$value->id] = CoreEvents::$cache[$value->id]; $value->delete(); } else { CoreEvents::$callbacks[$this->id][$value->id] = CoreEvents::$cache[$value->id]; $value->delete(); } //die('sss<pre>'.print_r(CoreEvents::$cache,1) . "ddd<pre".print_r(CoreEvents::$callbacks,1)); return; break; default: //nothing to handle return; } } $event = CoreEvents::$cache[$this->id]; $event[$setting] = $value; CoreEvents::$cache[$this->id] = $event; if ($setting == 'waitFor') { CoreEvents::$cache[$value]['onwait'][$this->id] = $this->xml(); $this->delete(); } CoreEvents::simpleCommit(); }
function callbacks($cache, $test = false) { if (CoreEvents::$callbacks) { foreach (CoreEvents::$callbacks as $k => $v) { if (!$test) { $cb = CoreEvents::processScache($v); } else { $cb = CoreEvents::processScache($v); } if (!isset($cache[$k])) { $v[$k]['callback'] = CoreEvents::mkArray($cb, 'json', true); } else { if (!$test) { $cache[$k]['callback'] = CoreEvents::mkArray($cb, 'json', true); } else { $cache[$k]['callback'] = $cb; } } } } return $cache; }
/** * * Set variables that can be accessed as this.var */ private function _setVar($setting, $value, $instance_id) { if (!isset(CoreEvents::$cache[$instance_id])) { return; } $item = CoreEvents::$cache[$instance_id]; if (is_array($value)) { $value = CoreEvents::mkArray($value); } $item['extra'][$setting] = $value; CoreEvents::UpdateCache($instance_id, $item); }
/** * Bind events to elements * * @param $selector * @param $actions * @param $event */ function Exec($selector, $actions, $event = "click") { if (!self::getCache()) { return false; } if (is_array($selector)) { $selector = implode('|', $selector); } if ($event) { if (substr($event, 0, 2) != "on" && $event != 'click') { $event = "on{$event}"; } $this->event = $event; } $_actions = array(); if ($actions && is_array($actions)) { $cache = CoreEvents::$cache; foreach ($actions as $k => $v) { if (is_object($v) && (is_a($v, 'xmlItem') || is_a($v, 'plugin'))) { if (is_a($v, 'plugin')) { $v->element_id = $selector; $v->xml->element_id = $selector; if (method_exists($v, 'onEvent')) { call_user_method('onEvent', $v, $selector); } } $_actions[$v->id] = $v->xml(); if (isset(CoreEvents::$callbacks[$v->id]) && CoreEvents::$callbacks[$v->id]) { $_actions[$v->id]['callback'] = CoreEvents::processScache(CoreEvents::$callbacks[$v->id]); $_actions[$v->id]['callback'] = CoreEvents::mkArray($v[$v->id], 'json', true); } $v->delete(); } else { if (is_object($v)) { //some functions return the ajax object? continue; } $_actions[$v] = CoreEvents::$cache[$v]; unset(CoreEvents::$cache[$v]); } } return $this->AddEventTo($selector, $_actions, $event); } if (is_a($actions, 'xmlItem') || is_a($actions, 'plugin')) { if (is_a($actions, 'plugin')) { $actions->element_id = $selector; $actions->xml->element_id = $selector; if (method_exists($actions, 'onEvent')) { call_user_method('onEvent', $actions, $selector); } } $item = $actions->xml(); $item['event'] = $event; if (isset(CoreEvents::$callbacks[$actions->id]) && CoreEvents::$callbacks[$actions->id]) { $item['callback'] = CoreEvents::processScache(CoreEvents::$callbacks[$actions->id]); $item['callback'] = CoreEvents::mkArray($item['callback'], 'json', true); } $actions->delete(); return $this->AddEventTo($selector, array($actions->id => $item), $event); } else { $_actions = CoreEvents::$cache[$actions]; $_actions['event'] = $event; $this->removeLastCache(1); return $this->AddEventTo($selector, array($actions => $_actions), $event); } }