function helper($helper) { if(is_array($helper)) { return f_last(array_map(f_callable(array($this, 'helper')), $helper)); } return SweetFramework::loadFileType('helper', $helper); }
static function _buildWhere($group, $groupOperator='AND', $escape=true) { //"Bitch I'll pick the world up and I'ma drop it on your f*ckin' head" - Lil Wayne. $keys = array_keys($group); if(is_int(f_last($keys)) && is_string(f_last($group))) { $operator = f_last($group); $group = f_chop($group); } else { $operator = '='; } if(is_int(f_first($keys)) && is_string(f_first($group))) { $groupOperator = f_first($group); $group = f_rest($group); } $builtArray = f_keyMap( function($value, $key) use($groupOperator, $operator, $escape) { if(is_int($key) && is_array($value)) { $bWhere = Query::_buildWhere($value, $groupOperator, $escape); if(!empty($bWhere)) { return '(' . "\n\t" . $bWhere . "\n" .')'; } else { return null; } } if(is_string($key)) { static $escapeFunc = array('Query' , 'nullEscape'); if(!$escape) { $escapeFunc = 'nothing'; } else { $escapeFunc = f_callable($escapeFunc); } if(is_array($value)) { $key = $escapeFunc($key, ''); if(f_first(array_keys($value)) !== 0) { return join(' ' . $groupOperator . ' ', f_keyMap(function($v, $k) use($key, $escapeFunc) { return $key . ' BETWEEN ' . $escapeFunc($k) . ' AND ' . $escapeFunc($v); }, $value)); } return $key . ' IN (' . join(', ', array_map($escapeFunc, $value)) . ')'; } else { $value = call_user_func($escapeFunc, $value); if($value === 'null') { if($operator == '=') { $operator = 'IS'; } else { $operator = 'IS NOT'; } } return Query::escape($key) . ' ' . $operator . ' ' . $value; } } }, $group ); if(!empty($builtArray)) { return join(' ' . $groupOperator . ' ', array_filter($builtArray)); } }
function loadController($controller = null) { if (isset($controller)) { $this->contorllerFile = $controller; } $class = SweetFramework::className($this->contorllerFile); if (!SweetFramework::loadFileType('controller', $class)) { D::error('No Controller Found'); } $page = $this->loadUrl($class::$urlPattern, $this->count); if (is_array(f_last($page))) { if (is_array(f_first(f_last($page)))) { return $this->loadController(f_first(f_first(f_last($page))), $this->count += 1); } $page[$this->count] = f_first(f_last($page)); //D::log($page[$part], 'page o parts'); } D::log($page, 'Initing Controller…'); $this->controller = new $class(); //$this->controller->getLibrary('Databases/Query.php'); /*@todo make "shortcuts" more dynamic */ //$this->controller->template =& $this->controller->lib->Template; if (empty($page[$this->count])) { return f_callable(array($this->controller, 'index')); } else { if (method_exists($class, $page[$this->count])) { return f_callable(array($this->controller, $page[$this->count])); } } if (method_exists($class, '__DudeWheresMyCar')) { return f_callable(array($this->controller, '__DudeWheresMyCar')); } return function () { header("HTTP/1.0 404 Not Found"); echo '<h1>404 error</h1>'; //todo check for some sort of custom 404… return false; }; }
function loadController($controller=null) { if(isset($controller)) { $this->contorllerFile = $controller; } if(empty($this->contorllerFile)) { $this->contorllerFile = $this->lib('Config')->get('site', 'mainController'); } $class = SweetFramework::className($this->contorllerFile); D::log($class, 'Controller Loaded'); if(!SweetFramework::loadFileType('controller', $this->contorllerFile)) { D::error('No Controller Found'); } if(!empty($class::$urlPattern)) { $page = $this->loadUrl($class::$urlPattern); } else { $page = $this->loadUrl(array()); } D::log($this->count, 'COUNT'); D::log($page, 'page'); if(is_array(f_last($page))) { if(is_array( f_first(f_last($page)) )) { $this->request = f_first($page); D::log($this->request, 'Request Reduced'); if(method_exists($class, 'enRoute')) { $class::enRoute(); } return $this->loadController(f_first(f_first(f_last($page))) ); } $page[$this->count] = f_first(f_last($page)); } $fpage = f_first($page); $this->controller = new $class(); if(empty($fpage)) { return f_callable(array($this->controller, D::log('index', 'Controller Function'))); } else { if(method_exists($class, $fpage)) { return f_callable(array($this->controller, D::log($fpage, 'Controller Function'))); } } //D::show($class, 'controller'); if(method_exists($class, '__DudeWheresMyCar')) { return f_callable(array( $this->controller, '__DudeWheresMyCar' )); } //@todo find a way to check for __DudeWheresMyCar functions higher up the controller tree. return function() { header('HTTP/1.0 404 Not Found'); echo '<h1>404 error</h1>'; //todo check for some sort of custom 404… return false; }; }