Esempio n. 1
0
 /**
  * Return the singleton instnace of PlgContentfilterChain. This method also imports all the
  * content filter plugins.
  *
  * @return PlgContentfilterChain
  */
 public static function getInstance()
 {
     static $_instance;
     if (!$_instance) {
         $_instance = new self(new KConfig(array('service_container' => KService::getInstance())));
         KService::set('plg:contentfilter.chain', $_instance);
         JPluginHelper::importPlugin('contentfilter');
     }
     return $_instance;
 }
Esempio n. 2
0
 /**
  * Constructor.
  *
  * @param mixed $dispatcher A dispatcher
  * @param array $config     An optional KConfig object with configuration options.
  *
  * @return void
  */
 public function __construct($dispatcher = null, $config = array())
 {
     if (isset($config['params'])) {
         $config = (array) JRegistryFormat::getInstance('ini')->stringToObject($config['params']);
     }
     $config = new KConfig($config);
     parent::__construct($config);
     $this->_params = $config;
     KService::set('plg:storage.default', $this);
 }
Esempio n. 3
0
 public function __construct($subject, $config = array())
 {
     //Intercept the events for profiling
     if (KDEBUG) {
         //Create the event profiler
         $profiler = KService::get('com://admin/debug.profiler.events');
         //Replace the event dispatcher
         KService::set('koowa:event.dispatcher', $profiler);
     }
     parent::__construct($subject, $config);
 }
Esempio n. 4
0
 /**
  * Get a service api
  *
  * @param  string $service The service name.
  * 
  * @return ComConnectOauthApiAbstract
  */
 public static function getAPI($service)
 {
     $service = strtolower($service);
     $identifier = 'com://site/connect.oauth.service.' . $service;
     if (!KService::has($identifier)) {
         $config = array();
         $config['consumer'] = self::getConsumer($service);
         $config['enabled'] = self::enabled($service);
         KService::set($identifier, KService::get($identifier, $config));
     }
     return KService::get($identifier);
 }
Esempio n. 5
0
 /**
  * Constructor.
  *
  * @param KConfig $config An optional KConfig object with configuration options.
  */
 public function __construct(KConfig $config)
 {
     KService::set($config->service_identifier, $this);
     parent::__construct($config);
     $this->_entityset = $config->entityset;
     $this->_prototype = $config->prototype;
     $this->_store = $config->store;
     $this->_space = $config->space;
     $this->_resources = $config->resources;
     $this->_description = new AnDomainDescriptionDefault($config);
     //$this->_description		 = $this->getService($config->description, KConfig::unbox($config));
     //now set the attributes and relationships
     $this->_description->setAttribute(KConfig::unbox($config->attributes));
     $this->_description->setRelationship(KConfig::unbox($config->relationships));
     $this->_query = $this->getService($config->query, $config->toArray());
     // Mixin the behavior interface
     $config->mixer = $this;
     $this->mixin(new KMixinCommand($config));
     $this->mixin(new KMixinBehavior($config));
     //insert the reposiry with highest priority
     $this->getCommandChain()->enqueue($this, -PHP_INT_MAX);
 }
Esempio n. 6
0
 /**
  * Constructor.
  *
  * Prevent creating instances of this class by making the contructor private
  *
  * @param  array  An optional array with configuration options.
  */
 private final function __construct($config = array())
 {
     //store the path
     $this->_path = dirname(__FILE__);
     //instantiate koowa
     Koowa::getInstance(array('cache_prefix' => $config['cache_prefix'], 'cache_enabled' => $config['cache_enabled']));
     //if caching is not enabled then reset the apc cache to
     //to prevent corrupt identifier
     if (!$config['cache_enabled']) {
         clean_apc_with_prefix($config['cache_prefix']);
     }
     require_once dirname(__FILE__) . '/loader/adapter/anahita.php';
     KLoader::addAdapter(new AnLoaderAdapterAnahita(array('basepath' => dirname(__FILE__))));
     KLoader::addAdapter(new AnLoaderAdapterDefault(array('basepath' => JPATH_LIBRARIES . '/default')));
     AnServiceClass::getInstance();
     KServiceIdentifier::addLocator(new AnServiceLocatorAnahita());
     KServiceIdentifier::addLocator(new AnServiceLocatorRepository());
     //register an empty path for the application
     //a workaround to remove the applicaiton path from an identifier
     KServiceIdentifier::setApplication('', '');
     //create a central event dispatcher
     KService::set('anahita:event.dispatcher', KService::get('koowa:event.dispatcher'));
 }
Esempio n. 7
0
 /**
  * Push the toolbar into the view
  * .
  *
  * @param	KEvent	A event object
  */
 public function onBeforeControllerGet(KEvent $event)
 {
     KService::set('com:controller.toolbar', $this);
     $event->getPublisher()->getView()->toolbar = $this;
 }
Esempio n. 8
0
 /**
  * Renders emails for a list of people
  *
  * @param array $config Config parameter
  *
  * @return array
  */
 protected function _renderMails($config)
 {
     $mails = array();
     $config = new KConfig($config);
     $settings = $config->settings;
     $people = $config->people;
     $notification = $config->notification;
     foreach ($people as $person) {
         $setting = $settings->{$person->id};
         if (!($ret = $notification->shouldNotify($person, $setting))) {
             $notification->removeSubscribers($person);
             continue;
         }
         $person->addNotification($notification);
         if ($ret !== ComNotificationsDomainDelegateSettingInterface::NOTIFY_WITH_EMAIL) {
             continue;
         }
         //since each owner revieces the mail, they are in fact the viewer
         //so we need to set the as viewer while processing the notification
         KService::set('com:people.viewer', $person);
         $notification->owner = $person;
         $data = new KConfig($this->_parser->parse($notification));
         $data->append(array('email_subject' => $data->title, 'email_title' => pick($data->email_subject, $data->title), 'email_body' => $data->body, 'notification' => $notification));
         if ($notification->target && !$notification->target->eql($person)) {
             $data->commands->insert('notification_setting', array('actor' => $notification->target));
         }
         $body = $this->renderMail(array('layout' => false, 'template' => 'notification', 'data' => array('person' => $person, 'commands' => $data->commands, 'subject' => $notification->subject, 'title' => $data->email_title, 'body' => $data->email_body)));
         $mails[] = array('subject' => $data->email_subject, 'body' => $body, 'to' => $person->email);
     }
     return $mails;
 }
Esempio n. 9
0
 static function renderComponent($name, $params = array())
 {
     global $mainframe, $option;
     // Define component path
     define('JPATH_COMPONENT', JPATH_BASE . DS . 'components' . DS . $name);
     define('JPATH_COMPONENT_SITE', JPATH_SITE . DS . 'components' . DS . $name);
     define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . DS . 'components' . DS . $name);
     if (!file_exists(JPATH_COMPONENT)) {
         JError::raiseError(404, JText::_('Component Not Found'));
     }
     $file = substr($name, 4);
     // get component path
     if ($mainframe->isAdmin() && file_exists(JPATH_COMPONENT . DS . 'admin.' . $file . '.php')) {
         $path = JPATH_COMPONENT . DS . 'admin.' . $file . '.php';
     } else {
         $path = JPATH_COMPONENT . DS . $file . '.php';
     }
     $identifier = KService::getIdentifier("com:{$file}.aliases");
     $identifier->application = $mainframe->isAdmin() ? 'admin' : 'site';
     $lang =& JFactory::getLanguage();
     $lang->load($name);
     KLoader::getInstance()->loadIdentifier($identifier);
     //new way of doing it
     if (!file_exists($path)) {
         $identifier->name = 'dispatcher';
         register_default(array('identifier' => $identifier, 'default' => 'ComBaseDispatcherDefault'));
         $dispatcher = ComBaseDispatcher::getInstance();
         KService::setAlias('component.dispatcher', $dispatcher->getIdentifier());
         KService::set('component.dispatcher', $dispatcher);
         return $dispatcher->dispatch();
     } else {
         $contents = self::_renderComponent($path);
         // Build the component toolbar
         jimport('joomla.application.helper');
         if (($path = JApplicationHelper::getPath('toolbar')) && $mainframe->isAdmin()) {
             // Get the task again, in case it has changed
             $task = JRequest::getString('task');
             // Make the toolbar
             include_once $path;
         }
         return $contents;
     }
 }
Esempio n. 10
0
 /**
  * Helper mehtod to return a repository for an entity.
  *
  * @param string $identifier Entity Identifier
  * @param array  $config     Configuration
  *
  * @return AnDomainRepositoryAbstract
  */
 public static function getRepository($identifier, $config = array())
 {
     if (strpos($identifier, 'repos:') === 0) {
         $repository = KService::get($identifier);
     } else {
         $strIdentifier = (string) $identifier;
         if (!KService::has($identifier)) {
             $identifier = self::getEntityIdentifier($identifier);
         }
         if (!KService::has($identifier)) {
             KService::set($strIdentifier, KService::get($identifier, $config));
         }
         $repository = KService::get($identifier)->getRepository();
     }
     return $repository;
 }
Esempio n. 11
0
 /**
  * Creates the admin user
  */
 public static function createAdminUser(&$vars)
 {
     $DBtype = JArrayHelper::getValue($vars, 'DBtype', 'mysqli');
     $DBhostname = JArrayHelper::getValue($vars, 'DBhostname', '');
     $DBuserName = JArrayHelper::getValue($vars, 'DBuserName', '');
     $DBpassword = JArrayHelper::getValue($vars, 'DBpassword', '');
     $DBname = JArrayHelper::getValue($vars, 'DBname', '');
     $DBPrefix = JArrayHelper::getValue($vars, 'DBPrefix', '');
     $adminPassword = JArrayHelper::getValue($vars, 'adminPassword', '');
     $adminEmail = JArrayHelper::getValue($vars, 'adminEmail', '');
     jimport('joomla.user.helper');
     // Create random salt/password for the admin user
     $salt = JUserHelper::genRandomPassword(32);
     $crypt = JUserHelper::getCryptedPassword($adminPassword, $salt);
     $cryptpass = $crypt . ':' . $salt;
     $db =& JInstallationHelper::getDBO($DBtype, $DBhostname, $DBuserName, $DBpassword, $DBname, $DBPrefix);
     $vars = array_merge(array('adminLogin' => 'admin', 'adminName' => 'Administrator'), $vars);
     $adminLogin = $vars['adminLogin'];
     $adminName = $vars['adminName'];
     // create the admin user
     $installdate = date('Y-m-d H:i:s');
     $nullDate = $db->getNullDate();
     $query = "INSERT INTO #__users VALUES (62, '{$adminName}', '{$adminLogin}', " . $db->Quote($adminEmail) . ", " . $db->Quote($cryptpass) . ", 'Super Administrator', 0, 1, 25, '{$installdate}', '{$nullDate}', '', '')";
     $db->setQuery($query);
     if (!$db->query()) {
         // is there already and existing admin in migrated data
         if ($db->getErrorNum() == 1062) {
             $vars['adminLogin'] = JText::_('Admin login in migrated content was kept');
             $vars['adminPassword'] = JText::_('Admin password in migrated content was kept');
             return;
         } else {
             echo $db->getErrorMsg();
             return;
         }
     }
     // add the ARO (Access Request Object)
     $query = "INSERT INTO #__core_acl_aro VALUES (10,'users','62',0,'Administrator',0)";
     $db->setQuery($query);
     if (!$db->query()) {
         echo $db->getErrorMsg();
         return;
     }
     // add the map between the ARO and the Group
     $query = "INSERT INTO #__core_acl_groups_aro_map VALUES (25,'',10)";
     $db->setQuery($query);
     if (!$db->query()) {
         echo $db->getErrorMsg();
         return;
     }
     //Anahita Installation
     require_once JPATH_LIBRARIES . '/anahita/anahita.php';
     //instantiate anahita and nooku
     Anahita::getInstance(array('cache_prefix' => uniqid(), 'cache_enabled' => false));
     KServiceIdentifier::setApplication('site', JPATH_SITE);
     KServiceIdentifier::setApplication('admin', JPATH_ADMINISTRATOR);
     KLoader::addAdapter(new AnLoaderAdapterComponent(array('basepath' => JPATH_BASE)));
     KServiceIdentifier::addLocator(KService::get('anahita:service.locator.component'));
     KLoader::addAdapter(new KLoaderAdapterPlugin(array('basepath' => JPATH_ROOT)));
     KServiceIdentifier::addLocator(KService::get('koowa:service.locator.plugin'));
     KService::setAlias('anahita:domain.space', 'com:base.domain.space');
     KService::set('koowa:database.adapter.mysqli', KService::get('koowa:database.adapter.mysqli', array('connection' => $db->_resource, 'table_prefix' => $DBPrefix)));
     KService::set('anahita:domain.store.database', KService::get('anahita:domain.store.database', array('adapter' => KService::get('koowa:database.adapter.mysqli'))));
     KService::set('plg:storage.default', new KObject());
     $person = KService::get('repos://site/people')->getEntity()->setData(array('name' => $adminName, 'userId' => 62, 'username' => $adminLogin, 'userType' => 'Super Administrator', 'email' => $adminEmail));
     $note = KService::get('repos://site/notes')->getEntity()->setData(array('author' => $person, 'owner' => $person, 'body' => 'Welcome to Anahita!'));
     $comment = $note->addComment(array('author' => $person, 'body' => 'The best Social Platform there is', 'component' => 'com_notes'));
     $story = KService::get('repos://site/stories')->getEntity()->setData(array('component' => 'com_notes', 'name' => 'note_comment', 'object' => $note, 'comment' => $comment, 'target' => $person, 'owner' => $person, 'subject' => $person));
     $entities = array();
     $comment->save($entities);
     return true;
 }