chaw / branches / master / controllers / components / gpr.php
history
<?php
/**
* Chaw : source code and project management
*
* @copyright Copyright 2009, Garrett J. Woodworth (gwoohoo@gmail.com)
* @license GNU AFFERO GENERAL PUBLIC LICENSE v3 (http://opensource.org/licenses/agpl-v3.html)
*
*/
/**
* undocumented class
*
* @package default
*/
class GprComponent extends Object {
/**
* undocumented variable
*
* @var string
*/
var $keys = array();
/**
* undocumented variable
*
* @var string
*/
var $actions = array();
/**
* undocumented function
*
* @param string $controller
* @param string $options
* @return void
*/
function initialize($controller, $options) {
$this->params = $_GET;
unset($this->params['url']);
if (!empty($options['keys'])) {
$this->keys($options['keys']);
}
if (!empty($options['connect'])) {
Router::connectNamed($options['connect']);
} else {
Router::connectNamed($this->keys);
}
if (!empty($options['count'])) {
$this->enabled = count($this->params) >= $options['count'] ? true : false;
} else {
$this->enabled = count($this->params) >= count($this->keys) ? true : false;
}
if (!empty($options['actions'])) {
$this->allowedActions = $options['actions'];
}
if (!$this->enabled) {
foreach ($this->keys as $key) {
if (isset($controller->params['named'][$key])) {
if (strpos($controller->params['named'][$key], ',') !== false) {
$controller->data[$controller->modelClass][$key] = explode(',', $controller->params['named'][$key]);
} else {
$controller->data[$controller->modelClass][$key] = $controller->params['named'][$key];
}
}
}
}
}
/**
* undocumented function
*
* @param string $controller
* @return void
*/
function startup($controller) {
if (in_array($controller->action, $this->allowedActions)) {
foreach ($this->keys as $key) {
if (!empty($controller->params['url'][$key])) {
$controller->passedArgs[$key] = $controller->params['named'][$key] = join(',', (array) $controller->params['url'][$key]);
} elseif (!empty($controller->passedArgs[$key])) {
$controller->passedArgs[$key] = $controller->params['named'] = null;
}
}
if (!empty($this->params)) {
$controller->redirect($controller->passedArgs, 303);
}
}
}
/**
* undocumented function
*
* @param string $keys
* @return void
*/
function keys($keys) {
$this->keys = array_merge($this->keys, $keys);
}
}
