1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| <?php
class sfMondongoPluginConfiguration extends sfPluginConfiguration
{
protected $logs = array();
/**
* @see sfPluginConfiguration
*/
public function initialize()
{
echo"coucou";
require_once(dirname(__FILE__).'/../lib/vendor/mondongo/lib/vendor/symfony/src/Symfony/Component/HttpFoundation/UniversalClassLoader.php');
$loader = new Symfony\Component\HttpFoundation\UniversalClassLoader();
$loader->registerNamespaces(array(
'Mondongo\\Extension\\Extra' => sfConfig::get('sf_mondongo-extensions_lib_dir', dirname(__FILE__).'/../lib/vendor/mondongo-extensions-extra/lib'),
'Mondongo' => sfConfig::get('sf_mondongo_lib_dir', dirname(__FILE__).'/../lib/vendor/mondongo/lib')
));
$loader->register();
$this->dispatcher->connect('context.load_factories', array($this, 'listenToContextLoadFactories'));
$this->dispatcher->connect('component.method_not_found', array($this, 'listenToComponentMethodNotFound'));
}
/**
* Listen to context.load_factories event.
*
* Initialize the Mondongo.
*
* @param sfEvent $event The event object.
*
* @return void
*/
public function listenToContextLoadFactories(sfEvent $event)
{
$context = $event->getSubject();
$mondongo = new Mondongo\Mondongo();
// databases
$databaseManager = $context->getDatabaseManager();
foreach ($databaseManager->getNames() as $name)
{
$database = $databaseManager->getDatabase($name);
if ($database instanceof sfMondongoDatabase)
{
$mondongo->setConnection($name, $database->getMondongoConnection());
}
}
// log
if (sfConfig::get('sf_logging_enabled'))
{
$mondongo->setLoggerCallable(array($this, 'log'));
if (sfConfig::get('sf_web_debug'))
{
$this->dispatcher->connect('debug.web.load_panels', array($this, 'listenToDebugWebLoadPanels'));
}
}
// context
$context->set('mondongo', $mondongo);
// container
Mondongo\Container::setDefault($mondongo);
}
/**
* Listen to component.method_not_fount event.
*
* Returns the Mondongo in actions and components: $this->getMondongo()
*
* @param sfEvent $event The event.
*
* @return bool If it returns the Mondongo.
*/
public function listenToComponentMethodNotFound(sfEvent $event)
{
if ('getMondongo' == $event['method'])
{
$event->setReturnValue($event->getSubject()->getContext()->get('mondongo'));
return true;
}
return false;
}
/**
* Returns the logs.
*
* @return array The logs.
*/
public function getLogs()
{
return $this->logs;
}
/**
* Save a mondongo log.
*
* @param array $log The log.
*
* @return void
*/
public function log(array $log)
{
$this->dispatcher->notify(new sfEvent('sfMondongo', 'application.log', array('sfMondongo')));
$this->logs[] = $log;
}
/**
* Listen to debug.web_load_panels event.
*
* @param sfEvent $event The event.
*
* @return void
*/
public function listenToDebugWebLoadPanels(sfEvent $event)
{
$event->getSubject()->setPanel('mondongo', new sfMondongoWebDebugPanel($event->getSubject()));
}
} |
Partager