Bunch of updates to migrate from jLib to Pickles.
git-svn-id: http://svn.cleancode.org/svn/pickles@31 4d10bc64-7434-11dc-a737-d2d0f8310089
This commit is contained in:
parent
046d265347
commit
8c14ec379d
9 changed files with 141 additions and 82 deletions
19
Pickles.php
19
Pickles.php
|
@ -1,14 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
date_default_timezone_set('America/New_York');
|
date_default_timezone_set('America/New_York');
|
||||||
// @todo no hard coded paths
|
|
||||||
//define('PICKLES_PATH', '/var/www/josh/common/');
|
|
||||||
define('PATH', getcwd() . '/');
|
define('PATH', getcwd() . '/');
|
||||||
|
|
||||||
function __autoload($class) {
|
function __autoload($class) {
|
||||||
// @todo fix the path when we move to prod
|
$file = PATH . '../../common/classes/' . str_replace('_', '/', $class) . '.php';
|
||||||
//$file = PICKLES_PATH . 'pickles_classes/' . str_replace('_', '/', $class) . '.php';
|
|
||||||
$file = PATH . '../../common/pickles_classes/' . str_replace('_', '/', $class) . '.php';
|
|
||||||
|
|
||||||
if (file_exists($file)) {
|
if (file_exists($file)) {
|
||||||
require_once $file;
|
require_once $file;
|
||||||
|
@ -17,24 +13,17 @@ function __autoload($class) {
|
||||||
|
|
||||||
class Pickles extends Object {
|
class Pickles extends Object {
|
||||||
|
|
||||||
|
/*
|
||||||
protected $config = null;
|
protected $config = null;
|
||||||
|
|
||||||
private $controller = null;
|
private $controller = null;
|
||||||
|
|
||||||
public function __construct($site, $controller = 'Web') {
|
public function __construct($site, $controller = 'Web') {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
// Load the config for the site passed in
|
|
||||||
$this->config = Config::getInstance();
|
|
||||||
$this->config->load($site);
|
|
||||||
|
|
||||||
// Generate a generic "site down" message
|
|
||||||
if ($this->config->get('disabled')) {
|
|
||||||
exit("<h2><em>{$_SERVER['SERVER_NAME']} is currently down for maintenance</em></h2>");
|
|
||||||
}
|
|
||||||
|
|
||||||
new Controller($controller);
|
new Controller($controller);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,61 +1,98 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
// @todo Possibly remove the conditionals for the CLI view
|
||||||
|
|
||||||
class Controller extends Object {
|
class Controller extends Object {
|
||||||
|
|
||||||
private $model = null;
|
private $model = null;
|
||||||
private $viewer = null;
|
private $viewer = null;
|
||||||
|
|
||||||
private $session = null;
|
private $session = null;
|
||||||
|
|
||||||
public function __construct($controller) {
|
|
||||||
parent::__construct();
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
protected $config = null;
|
||||||
|
private $controller = null;
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function __construct($site, $controller = 'Web') {
|
||||||
|
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
// Establish the session
|
// Establish the session
|
||||||
if ($controller != 'CLI') {
|
$this->session = Session::getInstance();
|
||||||
$this->session = Session::getInstance();
|
|
||||||
|
// Load the config for the site passed in
|
||||||
|
$this->config = Config::getInstance();
|
||||||
|
$this->config->load($site);
|
||||||
|
|
||||||
|
// Generate a generic "site down" message
|
||||||
|
if ($this->config->get('disabled')) {
|
||||||
|
exit("<h2><em>{$_SERVER['SERVER_NAME']} is currently down for maintenance</em></h2>");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab the passed in model or use the default
|
// Grab the passed in model or use the default
|
||||||
$name = isset($_REQUEST['model']) ? $_REQUEST['model'] : $this->config->get('navigation', 'default');
|
$name = isset($_REQUEST['model']) ? $_REQUEST['model'] : $this->config->get('navigation', 'default');
|
||||||
|
|
||||||
// Load the model
|
if ($name == 'logout') {
|
||||||
$file = '../models/' . $name . '.php';
|
Security::logout();
|
||||||
if (file_exists($file)) {
|
}
|
||||||
require_once $file;
|
else {
|
||||||
|
// Load the model
|
||||||
|
$file = '../models/' . $name . '.php';
|
||||||
|
if (file_exists($file)) {
|
||||||
|
require_once $file;
|
||||||
|
|
||||||
if (strpos($name, '/') === false) {
|
if (strpos($name, '/') === false) {
|
||||||
$class = $name;
|
$class = $name;
|
||||||
$section = $name;
|
$section = $name;
|
||||||
$event = null;
|
$event = null;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$class = str_replace('/', '_', $name);
|
$class = str_replace('/', '_', $name);
|
||||||
list($section, $event) = split('/', $name);
|
list($section, $event) = split('/', $name);
|
||||||
}
|
|
||||||
|
|
||||||
if (class_exists($class)) {
|
|
||||||
$this->model = new $class;
|
|
||||||
|
|
||||||
if ($this->model->get('auth') === true) {
|
|
||||||
Security::authenticate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->model->set('name', $name);
|
if (class_exists($class)) {
|
||||||
$this->model->set('section', $section);
|
$this->model = new $class;
|
||||||
$this->model->set('event', $event);
|
|
||||||
|
|
||||||
$this->model->__default();
|
if ($this->model->get('auth') == false) {
|
||||||
}
|
$this->model->set('auth', $this->config->get('behavior', 'auth'));
|
||||||
else {
|
}
|
||||||
// @todo
|
|
||||||
exit();
|
if ($this->model->get('view') == false) {
|
||||||
}
|
if ($this->config->get('behavior', 'view') != false) {
|
||||||
|
$view = $this->config->get('behavior', 'view');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Perhaps Smarty shouldn't be assumed at this point...
|
||||||
|
$view = isset($argv) ? 'CLI' : 'Smarty';
|
||||||
|
}
|
||||||
|
|
||||||
// Load the viewer
|
$this->model->set('view', $view);
|
||||||
$this->viewer = Viewer::factory($this->model);
|
}
|
||||||
$this->viewer->display();
|
|
||||||
|
if ($this->model->get('auth') === true && $controller != 'CLI') {
|
||||||
|
Security::authenticate();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->model->set('name', $name);
|
||||||
|
$this->model->set('section', $section);
|
||||||
|
$this->model->set('event', $event);
|
||||||
|
|
||||||
|
$this->model->__default();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// @todo
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the viewer
|
||||||
|
$this->viewer = Viewer::factory($this->model);
|
||||||
|
$this->viewer->display();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//var_dump($name, $this->session, $_SESSION, $_SERVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -69,13 +106,6 @@ class Controller extends Object {
|
||||||
Session::logout();
|
Session::logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the admin section if we're authenticated
|
|
||||||
if (isset($_SESSION['user_id']) || isset($_SESSION['artist_id'])) {
|
|
||||||
if (Config::get('menu', 'admin') == 'true') {
|
|
||||||
$navigation['admin'] = 'Admin';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
class Security extends Object {
|
class Security extends Object {
|
||||||
|
|
||||||
static function authenticate() {
|
static function authenticate() {
|
||||||
$db = DB::getInstance();
|
$db = DB::getInstance();
|
||||||
|
$session = Session::getInstance();
|
||||||
|
|
||||||
if (isset($_SERVER['PHP_AUTH_USER'])) {
|
if (isset($_SERVER['PHP_AUTH_USER'])) {
|
||||||
$from = '
|
$from = '
|
||||||
|
@ -16,14 +17,14 @@ class Security extends Object {
|
||||||
$db->execute('SELECT COUNT(id) ' . $from);
|
$db->execute('SELECT COUNT(id) ' . $from);
|
||||||
if ($db->getField() != 0) {
|
if ($db->getField() != 0) {
|
||||||
$db->execute('SELECT id ' . $from);
|
$db->execute('SELECT id ' . $from);
|
||||||
$_SESSION['user_id'] = $db->getField();
|
$session->user_id = $db->getField();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['user_id'] = null;
|
$session->user_id = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_SESSION['user_id'])) {
|
if (!isset($session->user_id)) {
|
||||||
header('WWW-Authenticate: Basic realm="Site Admin"');
|
header('WWW-Authenticate: Basic realm="Site Admin"');
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
exit('No shirt, no shoes, no salvation. Access denied.');
|
exit('No shirt, no shoes, no salvation. Access denied.');
|
||||||
|
@ -36,12 +37,11 @@ class Security extends Object {
|
||||||
}
|
}
|
||||||
|
|
||||||
static function logout() {
|
static function logout() {
|
||||||
$_SERVER['PHP_AUTH_USER'] = null;
|
$session = Session::getInstance();
|
||||||
$_SESSION['user_id'] = null;
|
$session->destroy();
|
||||||
$_SESSION['artist_id'] = null;
|
|
||||||
$_SESSION['admin'] = false;
|
|
||||||
|
|
||||||
session_destroy();
|
unset($_SERVER['PHP_AUTH_USER']);
|
||||||
|
unset($_SERVER['PHP_AUTH_PW']);
|
||||||
|
|
||||||
header('Location: /');
|
header('Location: /');
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,14 @@ class Viewer_Debug extends Viewer_Common {
|
||||||
echo '<pre>';
|
echo '<pre>';
|
||||||
var_dump($_REQUEST);
|
var_dump($_REQUEST);
|
||||||
echo '</pre>';
|
echo '</pre>';
|
||||||
|
echo '<h2>$_SESSION</h2>' . "\n";
|
||||||
|
echo '<pre>';
|
||||||
|
var_dump($_SESSION);
|
||||||
|
echo '</pre>';
|
||||||
|
echo '<h2>$_SERVER</h2>' . "\n";
|
||||||
|
echo '<pre>';
|
||||||
|
var_dump($_SERVER);
|
||||||
|
echo '</pre>';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ class Viewer_Smarty extends Viewer_Common {
|
||||||
ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,fieldset=');
|
ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,fieldset=');
|
||||||
|
|
||||||
// @todo Create a wrapper so that we can auto load this
|
// @todo Create a wrapper so that we can auto load this
|
||||||
//var_dump(getcwd(), );
|
|
||||||
require_once 'contrib/smarty/libs/Smarty.class.php';
|
require_once 'contrib/smarty/libs/Smarty.class.php';
|
||||||
|
|
||||||
$smarty = new Smarty();
|
$smarty = new Smarty();
|
||||||
|
@ -53,8 +52,18 @@ class Viewer_Smarty extends Viewer_Common {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$navigation = $this->config->get('navigation', 'sections');
|
||||||
|
|
||||||
|
// Add the admin section if we're authenticated
|
||||||
|
// @todo add code to check if the user is logged in
|
||||||
|
if (false) {
|
||||||
|
if ($this->config->get('admin', 'menu') == true) {
|
||||||
|
$navigation['admin'] = 'Admin';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Pass all of our controller values to Smarty
|
// Pass all of our controller values to Smarty
|
||||||
$smarty->assign('navigation', $this->config->get('navigation', 'sections'));
|
$smarty->assign('navigation', $navigation);
|
||||||
$smarty->assign('section', $this->model->get('section'));
|
$smarty->assign('section', $this->model->get('section'));
|
||||||
$smarty->assign('action', $this->model->get('action')); // @todo rename me to event
|
$smarty->assign('action', $this->model->get('action')); // @todo rename me to event
|
||||||
$smarty->assign('admin', $this->config->get('admin', 'sections'));
|
$smarty->assign('admin', $this->config->get('admin', 'sections'));
|
||||||
|
|
26
config/ribbonnutrition.com.xml
Executable file
26
config/ribbonnutrition.com.xml
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
<config>
|
||||||
|
<database>
|
||||||
|
<hostname>localhost</hostname>
|
||||||
|
<username>ribbonnutrition</username>
|
||||||
|
<password>r1bb0nnu7r1710n</password>
|
||||||
|
<database>ribbonnutrition</database>
|
||||||
|
</database>
|
||||||
|
<navigation>
|
||||||
|
<default>home</default>
|
||||||
|
<sections>
|
||||||
|
<home>home</home>
|
||||||
|
</sections>
|
||||||
|
</navigation>
|
||||||
|
<admin>
|
||||||
|
<menu>false</menu>
|
||||||
|
<sections>
|
||||||
|
<logout>Logout</logout>
|
||||||
|
</sections>
|
||||||
|
</admin>
|
||||||
|
<contact>
|
||||||
|
<prefix>RN</prefix>
|
||||||
|
<recipients>
|
||||||
|
<recipient>joshsherman@gmail.com</recipient>
|
||||||
|
</recipients>
|
||||||
|
</contact>
|
||||||
|
</config>
|
|
@ -6,9 +6,9 @@
|
||||||
<database>verynicenoise</database>
|
<database>verynicenoise</database>
|
||||||
</database>
|
</database>
|
||||||
<navigation>
|
<navigation>
|
||||||
<default>home</default>
|
<default>news</default>
|
||||||
<sections>
|
<sections>
|
||||||
<home>Home</home>
|
<news>News</news>
|
||||||
<about>About</about>
|
<about>About</about>
|
||||||
<releases>Releases</releases>
|
<releases>Releases</releases>
|
||||||
<artists>Artists</artists>
|
<artists>Artists</artists>
|
||||||
|
@ -19,8 +19,8 @@
|
||||||
<admin>
|
<admin>
|
||||||
<menu>true</menu>
|
<menu>true</menu>
|
||||||
<sections>
|
<sections>
|
||||||
<artist>Artist Profile</artist>
|
<artist_edit>Artist Profile</artist_edit>
|
||||||
<user>User Account</user>
|
<user_edit>User Account</user_edit>
|
||||||
<logout>Logout</logout>
|
<logout>Logout</logout>
|
||||||
</sections>
|
</sections>
|
||||||
</admin>
|
</admin>
|
||||||
|
|
|
@ -11,7 +11,6 @@ function smarty_function_contact_form($params, &$smarty) {
|
||||||
<textarea name="message" title="required" class="contact_textarea"></textarea><br /><br />
|
<textarea name="message" title="required" class="contact_textarea"></textarea><br /><br />
|
||||||
<div class="contact_button">
|
<div class="contact_button">
|
||||||
<input type="button" value="Send Message" onclick="ajaxSubmit(this.parentNode.parentNode); return false;" />
|
<input type="button" value="Send Message" onclick="ajaxSubmit(this.parentNode.parentNode); return false;" />
|
||||||
<input type="submit" />
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
';
|
';
|
||||||
|
|
|
@ -71,17 +71,15 @@ function ajaxSubmit(form) {
|
||||||
|
|
||||||
request.onreadystatechange = function() {
|
request.onreadystatechange = function() {
|
||||||
if (request.readyState == 4 && request.status == 200) {
|
if (request.readyState == 4 && request.status == 200) {
|
||||||
|
var responseObject = eval( "(" + request.responseText + ")" );
|
||||||
// We need to split the response because the response comes
|
|
||||||
// back in this format: type | message
|
|
||||||
// Where type could be error or success (and eventually warning)
|
|
||||||
var responseText = request.responseText;
|
|
||||||
var splitResponse = responseText.split('|');
|
|
||||||
|
|
||||||
var responseElement = document.createElement('div');
|
var responseElement = document.createElement('div');
|
||||||
responseElement.className = splitResponse[0];
|
responseElement.className = responseObject.type;
|
||||||
var responseMessage = document.createTextNode(splitResponse[1]);
|
|
||||||
|
var responseMessage = document.createTextNode(responseObject.message);
|
||||||
|
|
||||||
responseElement.appendChild(responseMessage);
|
responseElement.appendChild(responseMessage);
|
||||||
|
|
||||||
form.insertBefore(responseElement, form.firstChild);
|
form.insertBefore(responseElement, form.firstChild);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue