forked from lonnieezell/Bonfire
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Sparks integration into Bonfire core. Fixes lonnieezell#985
- Loading branch information
1 parent
be8902c
commit 79aa2c3
Showing
14 changed files
with
1,144 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,265 @@ | ||
<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); | ||
/** | ||
* Sparks | ||
* | ||
* An open source application development framework for PHP 5.1.6 or newer | ||
* | ||
* @package CodeIgniter | ||
* @author CodeIgniter Reactor Dev Team | ||
* @author Kenny Katzgrau <[email protected]> | ||
* @since CodeIgniter Version 1.0 | ||
* @filesource | ||
*/ | ||
|
||
/** | ||
* Loader Class | ||
* | ||
* Loads views and files | ||
* | ||
* @package CodeIgniter | ||
* @subpackage Libraries | ||
* @author CodeIgniter Reactor Dev Team | ||
* @author Kenny Katzgrau <[email protected]> | ||
* @category Loader | ||
* @link http://codeigniter.com/user_guide/libraries/loader.html | ||
*/ | ||
class Sparks_Loader extends CI_Loader | ||
{ | ||
/** | ||
* Keep track of which sparks are loaded. This will come in handy for being | ||
* speedy about loading files later. | ||
* | ||
* @var array | ||
*/ | ||
var $_ci_loaded_sparks = array(); | ||
|
||
/** | ||
* Is this version less than CI 2.1.0? If so, accomodate | ||
* @bubbafoley's world-destroying change at: http://bit.ly/sIqR7H | ||
* @var bool | ||
*/ | ||
var $_is_lt_210 = false; | ||
|
||
/** | ||
* Constructor. Define SPARKPATH if it doesn't exist, initialize parent | ||
*/ | ||
function __construct() | ||
{ | ||
if(!defined('SPARKPATH')) | ||
{ | ||
define('SPARKPATH', config_item('sparks_path')); | ||
} | ||
|
||
$this->_is_lt_210 = (is_callable(array('CI_Loader', 'ci_autoloader')) | ||
|| is_callable(array('CI_Loader', '_ci_autoloader'))); | ||
|
||
parent::__construct(); | ||
} | ||
|
||
/** | ||
* To accomodate CI 2.1.0, we override the initialize() method instead of | ||
* the ci_autoloader() method. Once sparks is integrated into CI, we | ||
* can avoid the awkward version-specific logic. | ||
* @return Loader | ||
*/ | ||
function initialize() | ||
{ | ||
parent::initialize(); | ||
|
||
if(!$this->_is_lt_210) | ||
{ | ||
$this->ci_autoloader(); | ||
} | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Load a spark by it's path within the sparks directory defined by | ||
* SPARKPATH, such as 'markdown/1.0' | ||
* @param string $spark The spark path withint he sparks directory | ||
* @param <type> $autoload An optional array of items to autoload | ||
* in the format of: | ||
* array ( | ||
* 'helper' => array('somehelper') | ||
* ) | ||
* @return <type> | ||
*/ | ||
function spark($spark, $autoload = array()) | ||
{ | ||
if(is_array($spark)) | ||
{ | ||
foreach($spark as $s) | ||
{ | ||
$this->spark($s); | ||
} | ||
} | ||
|
||
$spark = ltrim($spark, '/'); | ||
$spark = rtrim($spark, '/'); | ||
|
||
$spark_path = SPARKPATH . $spark . '/'; | ||
$parts = explode('/', $spark); | ||
$spark_slug = strtolower($parts[0]); | ||
|
||
# If we've already loaded this spark, bail | ||
if(array_key_exists($spark_slug, $this->_ci_loaded_sparks)) | ||
{ | ||
return true; | ||
} | ||
|
||
# Check that it exists. CI Doesn't check package existence by itself | ||
if(!file_exists($spark_path)) | ||
{ | ||
show_error("Cannot find spark path at $spark_path"); | ||
} | ||
|
||
if(count($parts) == 2) | ||
{ | ||
$this->_ci_loaded_sparks[$spark_slug] = $spark; | ||
} | ||
|
||
$this->add_package_path($spark_path); | ||
|
||
foreach($autoload as $type => $read) | ||
{ | ||
if($type == 'library') | ||
$this->library($read); | ||
elseif($type == 'model') | ||
$this->model($read); | ||
elseif($type == 'config') | ||
$this->config($read); | ||
elseif($type == 'helper') | ||
$this->helper($read); | ||
elseif($type == 'view') | ||
$this->view($read); | ||
else | ||
show_error ("Could not autoload object of type '$type' ($read) for spark $spark"); | ||
} | ||
|
||
// Looks for a spark's specific autoloader | ||
$this->ci_autoloader($spark_path); | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* Pre-CI 2.0.3 method for backward compatility. | ||
* | ||
* @param null $basepath | ||
* @return void | ||
*/ | ||
function _ci_autoloader($basepath = NULL) | ||
{ | ||
$this->ci_autoloader($basepath); | ||
} | ||
|
||
/** | ||
* Specific Autoloader (99% ripped from the parent) | ||
* | ||
* The config/autoload.php file contains an array that permits sub-systems, | ||
* libraries, and helpers to be loaded automatically. | ||
* | ||
* @param array|null $basepath | ||
* @return void | ||
*/ | ||
function ci_autoloader($basepath = NULL) | ||
{ | ||
if($basepath !== NULL) | ||
{ | ||
$autoload_path = $basepath.'config/autoload'.EXT; | ||
} | ||
else | ||
{ | ||
$autoload_path = APPPATH.'config/autoload'.EXT; | ||
} | ||
|
||
if(! file_exists($autoload_path)) | ||
{ | ||
return FALSE; | ||
} | ||
|
||
include($autoload_path); | ||
|
||
if ( ! isset($autoload)) | ||
{ | ||
return FALSE; | ||
} | ||
|
||
if($this->_is_lt_210 || $basepath !== NULL) | ||
{ | ||
// Autoload packages | ||
if (isset($autoload['packages'])) | ||
{ | ||
foreach ($autoload['packages'] as $package_path) | ||
{ | ||
$this->add_package_path($package_path); | ||
} | ||
} | ||
} | ||
|
||
// Autoload sparks | ||
if (isset($autoload['sparks'])) | ||
{ | ||
foreach ($autoload['sparks'] as $spark) | ||
{ | ||
$this->spark($spark); | ||
} | ||
} | ||
|
||
if($this->_is_lt_210 || $basepath !== NULL) | ||
{ | ||
if (isset($autoload['config'])) | ||
{ | ||
// Load any custom config file | ||
if (count($autoload['config']) > 0) | ||
{ | ||
$CI =& get_instance(); | ||
foreach ($autoload['config'] as $key => $val) | ||
{ | ||
$CI->config->load($val); | ||
} | ||
} | ||
} | ||
|
||
// Autoload helpers and languages | ||
foreach (array('helper', 'language') as $type) | ||
{ | ||
if (isset($autoload[$type]) AND count($autoload[$type]) > 0) | ||
{ | ||
$this->$type($autoload[$type]); | ||
} | ||
} | ||
|
||
// A little tweak to remain backward compatible | ||
// The $autoload['core'] item was deprecated | ||
if ( ! isset($autoload['libraries']) AND isset($autoload['core'])) | ||
{ | ||
$autoload['libraries'] = $autoload['core']; | ||
} | ||
|
||
// Load libraries | ||
if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0) | ||
{ | ||
// Load the database driver. | ||
if (in_array('database', $autoload['libraries'])) | ||
{ | ||
$this->database(); | ||
$autoload['libraries'] = array_diff($autoload['libraries'], array('database')); | ||
} | ||
|
||
// Load all other libraries | ||
foreach ($autoload['libraries'] as $item) | ||
{ | ||
$this->library($item); | ||
} | ||
} | ||
|
||
// Autoload models | ||
if (isset($autoload['model'])) | ||
{ | ||
$this->model($autoload['model']); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# CodeIgniter Spark | ||
|
||
Spark is a way to pull down packages automatically | ||
|
||
$ tools/spark install -v1.2 gravatar_helper | ||
|
||
And then you can load the package like so: | ||
|
||
$this->load->spark('gravatar_helper/1.2'); | ||
echo Gravatar_helper::from_email('[email protected]'); | ||
|
||
--- | ||
|
||
## Adding a package | ||
|
||
$ tools/spark install -v1.2 gravatar | ||
$ tools/spark install gravatar # most recent version | ||
|
||
## Removing a package | ||
|
||
$ tools/spark remove -v1.2 gravatar # remove a specific version | ||
$ tools/spark remove gravatar -f # remove all | ||
|
||
## Reinstalling a package | ||
|
||
$ tools/spark reinstall -v1.2 gravatar # reinstall a specific version | ||
$ tools/spark reinstall gravatar -f # remove all versions and install latest | ||
|
||
## Search for a package | ||
|
||
$ tools/spark search gravatar | ||
|
||
## List installed packages | ||
|
||
$ tools/spark list | ||
|
||
## Get Help | ||
|
||
$ tools/spark help | ||
|
||
--- | ||
|
||
## Install | ||
|
||
Go to your favorite CI project, and run (must have CURL installed): | ||
|
||
$ php -r "$(curl -fsSL http://www.getsparks.org/static/install.php)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# the main repository | ||
getsparks.org | ||
|
||
# list other repositories here |
Oops, something went wrong.