/application/libraries/Engine/Comet.php
PHP | 111 lines | 76 code | 12 blank | 23 comment | 16 complexity | b3daa7ea3ef4b077ab05669e2508aea3 MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-3.0, LGPL-2.1
- <?php
- /**
- * SocialEngine
- *
- * @category Engine
- * @package Engine_Comet
- * @copyright Copyright 2006-2010 Webligo Developments
- * @license http://www.socialengine.net/license/
- * @version $Id: Comet.php 7244 2010-09-01 01:49:53Z john $
- */
- /**
- * @category Engine
- * @package Engine_Comet
- * @copyright Copyright 2006-2010 Webligo Developments
- * @license http://www.socialengine.net/license/
- */
- class Engine_Comet
- {
- /**
- * @var Engine_Comet_Backend_Abstract
- */
- protected $_backend;
- /**
- * @var Engine_Comet_Frontend_Abstract
- */
- protected $_frontent;
-
- public function __construct($options = array())
- {
- if( is_array($options) ) {
- $this->setOptions($options);
- }
- // Check options
- if( null === $this->_backend ) {
- throw new Engine_Comet_Exeption('No backend configured.');
- }
- if( null === $this->_frontend ) {
- throw new Engine_Comet_Exeption('No frontend configured.');
- }
- }
- public function setOptions(array $options)
- {
- foreach( $options as $key => $value ) {
- $method = 'set' . ucfirst($key);
- if( method_exists($this, $method) ) {
- $this->$method($value);
- }
- }
- return $this;
- }
- public function setBackend($backend)
- {
- if( is_array($backend) ) {
- $backend = $this->_loadBackend($backend);
- } else if( !($backend instanceof Engine_Comet_Backend_Abstract) ) {
- throw new Engine_Comet_Exception(sprintf('Invalid type passed to %s : %s', __METHOD__, gettype($backend)));
- }
- $this->_backend = $backend;
- return $this;
- }
- public function setFrontend($frontend)
- {
- if( is_array($frontend) ) {
- $frontend = $this->_loadFrontend($frontend);
- } else if( !($frontend instanceof Engine_Comet_Frontend_Abstract) ) {
- throw new Engine_Comet_Exception(sprintf('Invalid type passed to %s : %s', __METHOD__, gettype($frontend)));
- }
- $this->_frontend = $frontend;
- return $this;
- }
- // Utility
-
- protected function _loadBackend(array $options)
- {
- if( !isset($options['adapter']) || !is_string($options['adapter']) ) {
- throw new Engine_Comet_Exception('Adapter not set or not string.');
- }
- $adapter = $options['adapter'];
- unset($options['adapter']);
- $class = 'Engine_Comet_Backend_' . ucfirst($adapter);
- Engine_Loader::loadClass($class);
- if( !is_subclass_of($class, 'Engine_Comet_Backend_Abstract') ) {
- throw new Engine_Comet_Exception(sprintf('Adapter %s does not extend Engine_Comet_Backend_Abstract', $class));
- }
- return new $class($options);
- }
- protected function _loadFrontend(array $options)
- {
- if( !isset($options['adapter']) || !is_string($options['adapter']) ) {
- throw new Engine_Comet_Exception('Adapter not set or not string.');
- }
- $adapter = $options['adapter'];
- unset($options['adapter']);
- $class = 'Engine_Comet_Frontend_' . ucfirst($adapter);
- Engine_Loader::loadClass($class);
- if( !is_subclass_of($class, 'Engine_Comet_Frontend_Abstract') ) {
- throw new Engine_Comet_Exception(sprintf('Adapter %s does not extend Engine_Comet_Frontend_Abstract', $class));
- }
- return new $class($options);
- }
- };