diff --git a/application/controllers/HomeController.php b/application/controllers/HomeController.php index 3fc3b18404a268de4258cc30ea8c9b4dc0c736c8..0a9a481c7474fe7d05af729c79393bf4bbfc40f7 100644 --- a/application/controllers/HomeController.php +++ b/application/controllers/HomeController.php @@ -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'; diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php index 5d1cb9877a73c8cdc8391d893b98c53e1a793d89..49fab828dbaa8aa7a0d00bcfb4e0904d75d4cfc4 100755 --- a/application/controllers/RequestController.php +++ b/application/controllers/RequestController.php @@ -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'); diff --git a/application/models/tables/Registry.php b/application/models/tables/Registry.php new file mode 100644 index 0000000000000000000000000000000000000000..79db58fe2b6378c311f4f3575b8a2cedf40eeda5 --- /dev/null +++ b/application/models/tables/Registry.php @@ -0,0 +1,89 @@ +<?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(); + } + } + } +} diff --git a/application/views/home.xhtml b/application/views/home.xhtml index 52f7c633cb2949d0581c28d05b32291613a1b41c..c66cf309ce295b7ab3bbe22da46e9d6fba879889 100755 --- a/application/views/home.xhtml +++ b/application/views/home.xhtml @@ -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>