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

Update saved requests to actually save to the database again.

parent bb24e5d3
No related branches found
No related tags found
No related merge requests found
......@@ -143,9 +143,11 @@ class Courses_EditController extends App_Controller_Action
$session = new Zend_Session_Namespace('Edit Request');
if ($in['sessionId'] !== null) {
$id = $in['sessionId'];
$request = $session->savedRequests[$id]['request'];
$course = $session->savedRequests[$id]['course'];
$parentCourse = $session->savedRequests[$id]['parentCourse'];
$user = Auth_UserModel::findCurrentUser();
$savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData();
$request = $savedRequests[$id]['request'];
$course = $savedRequests[$id]['course'];
$parentCourse = $savedRequests[$id]['parentCourse'];
$session->currentSavedRequestId = $id;
} else {
$id = $in['id'];
......@@ -202,7 +204,10 @@ class Courses_EditController extends App_Controller_Action
protected function _saveForLater()
{
$session = new Zend_Session_Namespace('Edit Request');
$savedRequests = $session->savedRequests;
$user = Auth_UserModel::findCurrentUser();
$savedRequestRegistry = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests');
$savedRequests = $savedRequestRegistry->getData();
if (!Unl_Util::isArray($savedRequests)) {
$savedRequests = array();
}
......@@ -219,12 +224,30 @@ class Courses_EditController extends App_Controller_Action
$savedRequests[] = $newSavedRequest;
}
$session->savedRequests = $savedRequests;
$savedRequestRegistry->setData($savedRequests);
$collection = new Unl_Model_Collection('RegistryModel');
$collection[] = $savedRequestRegistry;
RegistryModel::save($collection);
}
protected function _saveRequest()
{
$session = new Zend_Session_Namespace('Edit Request');
if ($session->currentSavedRequestId !== null) {
$id = $session->currentSavedRequestId;
$user = Auth_UserModel::findCurrentUser();
$savedRequestRegistry = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests');
$savedRequests = $savedRequestRegistry->getData();
unset($savedRequests[$id]);
$savedRequestRegistry->setData($savedRequests);
$collection = new Unl_Model_Collection('RegistryModel');
$collection[] = $savedRequestRegistry;
RegistryModel::save($collection);
unset($session->currentSavedRequestId);
}
Requests_RequestModel::save($session->request);
$session->course->setRequest($session->request);
Courses_CourseModel::save($session->course);
......
<?php
class RegistryModel extends Unl_Model
{
static public function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('r' => 'creqRegistry'));
if (Unl_Util::isArray($id)) {
if (count($id) == 0) {
return new Unl_Model_Collection(__CLASS__);
}
$select->where('registryId IN(?)', $id);
} else {
$select->where('registryId = ?', $id);
}
$records = $select->query()->fetchAll();
$objects = new Unl_Model_Collection(__CLASS__);
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objects[$object->getId()] = $object;
}
// if we were passed an array of users, return an array for each user
if (Unl_Util::isArray($id)) {
return $objects;
// otherwise, return an array of groups for the single user we were passed
} else {
return $objects[$id];
}
}
static public function findByNamespaceAndKey($namespace, $key)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('r' => 'creqRegistry'), array('registryId'));
$select->where('`namespace` = ?', $namespace);
$select->where('`key` = ?', $key);
$data = $select->query()->fetchAll();
$registryId = $data[0]['registryId'];
if ($registryId) {
return self::find($registryId);
} else {
$new = self::fetchNew();
$new->_data['namespace'] = $namespace;
$new->_data['key'] = $key;
return $new;
}
}
/**
* Returns a new, empty model.
*
* @return RegistryModel
*/
static public function fetchNew()
{
$data = array(
'registryId' => NULL,
'namespace' => NULL,
'key' => NULL,
'data' => NULL
);
$new = new self($data);
$new->_setClean();
return $new;
}
static public function save($models)
{
$modelsToInsert = new Unl_Model_Collection(__CLASS__);
$modelsToUpdate = new Unl_Model_Collection(__CLASS__);
if (!Unl_Util::isArray($models)) {
$model = $models;
$models = new Unl_Model_Collection(__CLASS__);
$models[$model->getId()] = $model;
}
foreach ($models as $model) {
if ($model->getId()) {
if ($model->_cleanData != $model->_data) {
$modelsToUpdate[] = $model;
}
} else {
$modelsToInsert[] = $model;
}
}
if (count($modelsToInsert) > 0) {
self::_insert($modelsToInsert);
}
if (count($modelsToUpdate) > 0) {
self::_update($modelsToUpdate);
}
foreach ($models as $model)
{
$model->_setClean();
}
}
static protected function _update(Unl_Model_Collection $models)
{
$db = Zend_Registry::get('db');
$sql = 'CREATE TEMPORARY TABLE creqRegistryUpdate '
. 'SELECT * FROM creqRegistry LIMIT 0';
$db->query($sql);
$sql = 'INSERT INTO creqRegistryUpdate VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?, ', $model->_data['registryId'])
. $db->quoteInto('?, ' , $model->_data['namespace'])
. $db->quoteInto('?, ' , $model->_data['key'])
. $db->quoteInto('?)' , base64_encode(serialize($model->_data['data'])));
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
$sql = 'UPDATE creqRegistry AS a, '
. ' creqRegistryUpdate AS b '
. 'SET a.namespace = b.namespace, '
. ' a.key = b.key, '
. ' a.data = b.data '
. 'WHERE a.registryId = b.registryId ';
$db->query($sql);
}
static protected function _insert(Unl_Model_Collection $models)
{
$db = Zend_Registry::get('db');
$sql = 'INSERT INTO creqRegistry (`namespace`, `key`, `data`) VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?, ', $model->_data['namespace'])
. $db->quoteInto('?, ' , $model->_data['key'])
. $db->quoteInto('?)' , base64_encode(serialize($model->_data['data'])));
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
$lastId = $db->lastInsertId();
foreach ($models as $model) {
$model->_data['registryId'] = $lastId;
$lastId++;
}
}
static public function delete($models)
{
if (!Unl_Util::isArray($models)) {
$model = $models;
$models = new Unl_Model_Collection(__CLASS__);
$models[$model->getId()] = $model;
}
if (count($models) == 0) {
return;
}
$db = Zend_Registry::get('db');
$sql = $db->quoteInto('DELETE FROM creqRegistry WHERE registryId IN (?)', $models->getId());
$db->query($sql);
}
public function __construct($data)
{
parent::__construct($data);
$this->_data['data'] = unserialize(base64_decode($this->_data['data']));
}
public function getId()
{
return $this->_data['registryId'];
}
public function getData()
{
return $this->_data['data'];
}
public function setData($data)
{
$this->_data['data'] = $data;
}
}
\ No newline at end of file
......@@ -8,7 +8,9 @@ class Requests_EditController extends App_Controller_Action
if ($in['sessionId'] !== null) {
$id = $in['sessionId'];
$session = new Zend_Session_Namespace('Edit Request');
$request = $session->savedRequests[$id]['request'];
$user = Auth_UserModel::findCurrentUser();
$savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData();
$request = $savedRequests[$id]['request'];
$module = $request->getModule();
$redirectUrl = '/' . $module . '/edit/load/sessionId/' . $id;
} else {
......@@ -24,8 +26,15 @@ class Requests_EditController extends App_Controller_Action
public function deleteSavedAction()
{
$id = $this->getRequest()->getParam('id');
$session = new Zend_Session_Namespace('Edit Request');
unset($session->savedRequests[$id]);
$user = Auth_UserModel::findCurrentUser();
$savedRequestRegistry = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests');
$savedRequests = $savedRequestRegistry->getData();
unset($savedRequests[$id]);
$savedRequestRegistry->setData($savedRequests);
$collection = new Unl_Model_Collection('RegistryModel');
$collection[] = $savedRequestRegistry;
RegistryModel::save($collection);
$this->_redirect('/requests');
}
......
......@@ -40,7 +40,7 @@ class Requests_IndexController extends App_Controller_Action
$requestVotes = Requests_ApproverVoteModel::findUsersVotesForRequsets($user, $allRequests);
$session = new Zend_Session_Namespace('Edit Request');
$savedRequests = $session->savedRequests;
$savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData();
if (!Unl_Util::isArray($savedRequests)) {
$savedRequests = array();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment