Skip to content

Instantly share code, notes, and snippets.

@pasamio
Created January 24, 2014 06:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pasamio/8593116 to your computer and use it in GitHub Desktop.
Save pasamio/8593116 to your computer and use it in GitHub Desktop.
<?php
// Load the builder class for the core.php file.
jimport('grisgris.builder.registry');
jimport('grisgris.builder.builder');
jimport('grisgris.builder.aggregate');
jimport('grisgris.builder.generic');
jimport('grisgris.builder.cache');
jimport('grisgris.builder.table');
jimport('grisgris.provider.provider');
// Initialise the builder.
CFactory::getBuilder();
class CFactory {
/**
* Get a static builder instance and configure it to build stuff for us.
*
* @return Grisgris\Builder\Builder A builder instance.
*/
static public function getBuilder()
{
static $builder = null;
if (is_null($builder))
{
$provider = CFactory::getProvider();
$tableBuilder = new \Grisgris\Builder\Table;
$genericBuilder = new \Grisgris\Builder\Generic;
$aggregateBuilder = new \Grisgris\Builder\Aggregate;
$genericBuilder->setProvider($provider);
$tableBuilder->setProvider($provider);
$aggregateBuilder->setBuilder('table', $tableBuilder);
$aggregateBuilder->setBuilder('generic', $genericBuilder);
$builder = new \Grisgris\Builder\Cache($aggregateBuilder);
$provider->set('builder', $builder);
$provider->set('database', JFactory::getDbo());
$provider->set('registry', new \Grisgris\Builder\Registry($builder));
$provider->set('builder.table', $tableBuilder);
$provider->set('builder.generic', $genericBuilder);
$genericBuilder->setListBuilder('JSUser', function ($provider, $keys) {
$users = array();
CFactory::loadUsers($keys);
foreach ($keys as $key)
{
$users[$key] = CFactory::getUser($key);
}
return $users;
});
$tableBuilder->setMapping('CTableDiscussion', 'Discussion', 'CTable', '#__community_groups_discuss', 'id');
$tableBuilder->setMapping('CTableGroup', 'Group', 'CTable', '#__community_groups', 'id');
$tableBuilder->setMapping('CTableEvent', 'Event', 'CTable', '#__community_events', 'id');
$tableBuilder->setMapping('CTableAlbum', 'Album', 'CTable', '#__community_photos_albums', 'id');
$tableBuilder->setMapping('CTableVideo', 'Video', 'CTable', '#__community_videos', 'id');
}
return $builder;
}
/**
* Get the provider.
*
* @return Grisgris\Provider\Provider A provider instance.
*/
static public function getProvider()
{
static $provider = null;
if (is_null($provider))
{
$provider = new \Grisgris\Provider\Provider;
}
return $provider;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment