Skip to content
Snippets Groups Projects
Commit 5994a122 authored by Tim Steiner's avatar Tim Steiner
Browse files

Save for later works between sessions.

parent af55255d
No related branches found
Tags
No related merge requests found
......@@ -139,8 +139,8 @@ class HomeController extends Nmc_Controller_Action
$out->user = $user;
$out->roles = $rolesData;
$out->myRequests = $myRequests['request'];
$out->savedRequests = Nmc_Registry_Session::getInstance()->savedRequests;
$out->savedCourses = Nmc_Registry_Session::getInstance()->savedCourses;
$out->savedRequests = unserialize(Registry::getInstance()->getValue($user->getId(), 'savedRequests'));
$out->savedCourses = unserialize(Registry::getInstance()->getValue($user->getId(), 'savedCourses'));
$out->page = 'home';
$out->tagline = 'My Requests';
......
......@@ -123,12 +123,20 @@ class RequestController extends Nmc_Controller_Action
{
$in = $this->getRequest();
$requestId = $in->getParam(0);
$user = Nmc_User::getInstance()->getUser();
if (strtolower($requestId) == 'saved') {
$requestId = $in->getParam(1);
$requestId = Zend_Filter_Int::filter($requestId);
$course = Nmc_Registry_Session::getInstance()->savedCourses[$requestId];
$request = Nmc_Registry_Session::getInstance()->savedRequests[$requestId];
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
$course = $savedCourses[$requestId];
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
$request = $savedRequests[$requestId];
} else {
$requestId = Zend_Filter_Int::filter($requestId);
$request = Requests::getInstance()->findOne($requestId);
......@@ -870,22 +878,27 @@ class RequestController extends Nmc_Controller_Action
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
if (!is_array(Nmc_Registry_Session::getInstance()->savedCourses)) {
Nmc_Registry_Session::getInstance()->savedCourses = array();
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
if (!is_array($savedCourses)) {
$savedCourses = array();
}
if (!is_array(Nmc_Registry_Session::getInstance()->savedRequests)) {
Nmc_Registry_Session::getInstance()->savedRequests = array();
if (!is_array($savedRequests)) {
$savedRequests = array();
}
$savedCourses[] = $course;
$savedRequests[] = $request;
Nmc_Registry_Session::getInstance()->savedCourses = array_merge(
Nmc_Registry_Session::getInstance()->savedCourses,
array($course)
);
Nmc_Registry_Session::getInstance()->savedRequests = array_merge(
Nmc_Registry_Session::getInstance()->savedRequests,
array($request)
);
$savedCourses = serialize($savedCourses);
Registry::getInstance()->setValue($user->getId(), 'savedCourses', $savedCourses);
$savedRequests = serialize($savedRequests);
Registry::getInstance()->setValue($user->getId(), 'savedRequests', $savedRequests);
Nmc_Registry_Session::getInstance()->erase('course');
Nmc_Registry_Session::getInstance()->erase('request');
......
<?php
class Registry extends Nmc_Db_Table
{
protected $_primary = 'registryId';
protected $_cache = array();
/**
* The one true instance
*
* @var Registry
*/
static protected $_instance;
/**
* Return the one true instance
*
* @return Registry
*/
static public function getInstance($config = array())
{
if (!self::$_instance) {
self::$_instance = new Registry($config);
}
return self::$_instance;
}
/**
* Retrieve a value from the registry
*
* @param string $namespace
* @param string $key
* @return mixed
*/
public function getValue($namespace, $key) {
if (array_key_exists($namespace, $this->_cache)) {
if (array_key_exists($key, $this->_cache[$namespace])) {
return $this->_cache[$namespace][$key]->data;
}
} else {
$this->_cache[$namespace] = array();
}
$db = $this->getAdapter();
$where = array();
$where[] = $db->quoteInto('`namespace` = ?', $namespace);
$where[] = $db->quoteInto('`key` = ?', $key);
$where = implode(' AND ', $where);
$row = $this->fetchRow($where);
if (!$row) {
return null;
}
$row->data = unserialize($row->data);
$this->_cache[$namespace][$key] = $row;
return $this->_cache[$namespace][$key]->data;
}
/**
* Add/Set a value in the registry
*
* @param string $namespace
* @param string $key
* @param mixed $data
*/
public function setValue($namespace, $key, $data) {
$this->getValue($namespace, $key);
if (!array_key_exists($key, $this->_cache[$namespace])) {
$row = $this->fetchNew();
$row->namespace = $namespace;
$row->key = $key;
$this->_cache[$namespace][$key] = $row;
}
$this->_cache[$namespace][$key]->data = $data;
}
public function __destruct()
{
foreach ($this->_cache as $namespace) {
foreach ($namespace as $row) {
$row->data = serialize($row->data);
$row->save();
}
}
}
}
......@@ -15,7 +15,7 @@
</div>
</div>
<?php if(count($this->savedRequests) > 0) { ?>
<?php if(is_array($this->savedRequests) && count($this->savedRequests) > 0) { ?>
<div id="activity" class="titled_box">
<div class="box_shadow_2">
<div class="tr"></div>
......@@ -53,7 +53,6 @@
. $originalCourse->courseLetter; ?></td>
<td><?php echo $originalCourse->getHomeCollege()->name; ?></td>
<td><?php echo $request->type->name; ?></td>
<td>
<td>
<a href="/Request/Load/Saved/<?php echo $savedId; ?>">Edit</a>
</td>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment