Browse Source

- Huge optimisation patch (in the Event system)

pull/16/head
Jaussoin Timothée 12 years ago
parent
commit
d4118698a2
  1. 5
      app/widgets/Login/Login.php
  2. 8
      system/Event.php
  3. 2
      system/widget/WidgetBase.php
  4. 36
      system/widget/WidgetWrapper.php

5
app/widgets/Login/Login.php

@ -240,6 +240,11 @@ class Login extends WidgetBase {
$sess = Session::start(APP_NAME);
$sess->set('session', $session);
$wrapper = WidgetWrapper::getInstance(false);
\movim_log($wrapper->register_events());
$sess->set('registered_events', $wrapper->register_events());
// BOSH + XMPP connexion test
$warning = moxl\login();

8
system/Event.php

@ -18,22 +18,22 @@ class Event
$widgets = WidgetWrapper::getInstance(false);
$widgets->iterate('runEvents', array(
/* $widgets->iterate('runEvents', array(
array(
'type' => 'allEvents',
'data' => $event,
)));
)));*/
$widgets->iterate('runEvents', array(
array(
'type' => $type,
'data' => $event,
)));
$widgets->iterateAll('isEvents', array(
/*$widgets->iterateAll('isEvents', array(
array(
'type' => $type,
'data' => $event,
)));
)));*/
// Outputting any RPC calls.
RPC::commit();

2
system/widget/WidgetBase.php

@ -25,7 +25,7 @@ class WidgetBase
protected $tpl;
protected $user;
protected $name;
protected $events;
public $events;
protected $cached;

36
system/widget/WidgetWrapper.php

@ -26,6 +26,7 @@ class WidgetWrapper
private $all_widgets = array();
private $loaded_widgets = array();
private $loaded_widgets_old;
private $registered_events = array();
private static $instance;
@ -47,6 +48,8 @@ class WidgetWrapper
$this->loaded_widgets_old = $widgets;
}
$this->registered_events = $sess->get('registered_events');
// We search all the existent widgets
$this->all_widgets = array();
@ -158,6 +161,32 @@ class WidgetWrapper
return $result;
}
/**
* We register all the events of all the widgets in the database
*
* @return the registered events
*/
function register_events() {
$widgets = $this->get_all_widgets();
foreach($widgets as $widget_name) {
$widget = $this->load_widget($widget_name);
// We save the registered events of the widget for the filter
if(isset($widget->events))
foreach($widget->events as $key => $value) {
if(array_key_exists($key, $this->registered_events)) {
$we = $this->registered_events[$key];
array_push($we, $widget_name);
$this->registered_events[$key] = $we;
} else {
$this->registered_events[$key] = array($widget_name);
}
}
}
return $this->registered_events;
}
/**
* Calls a particular function with the given parameters on
@ -168,7 +197,12 @@ class WidgetWrapper
*/
function iterate($method, array $params = NULL)
{
$widgets = $this->get_loaded_widgets();
// We only load the interesting widgets
if(isset($params)) {
$fct = $params[0]['type'];
$widgets = $this->registered_events[$fct];
} else
$widgets = $this->get_loaded_widgets();
foreach($widgets as $widget)
$this->run_widget($widget, $method, $params);

Loading…
Cancel
Save