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

Fix request view times so that they work.

parent 90dc64e6
No related branches found
No related tags found
No related merge requests found
......@@ -193,7 +193,7 @@ class Courses_EditController extends App_Controller_Action
if ($in['submitType'] == 'Save Changes') {
$this->_saveRequest();
$this->_redirect('/courses/view/index/id/' . $session->request->getId());
$this->_redirect('/requests/view/index/id/' . $session->request->getId());
}
if ($in['submitType'] == 'Submit') {
......
......@@ -5,11 +5,25 @@ class Requests_ViewController extends App_Controller_Action
public function indexAction()
{
$id = $this->getRequest()->getParam('id');
$roleId = $this->getRequest()->getParam('role');
$list = $this->getRequest()->getParam('list');
$request = Requests_RequestModel::find($id);
$user = Auth_UserModel::findCurrentUser();
$viewTime = Requests_ViewTimeModel::findByUserAndRequest($user, $request);
if (!$viewTime) {
$viewTime = Requests_ViewTimeModel::fetchNew();
$viewTime->setRequest($request);
$viewTime->setUser($user);
}
$viewTime->setTime(new Zend_Date());
$collection = new Unl_Model_Collection('Requests_ViewTimeModel');
$collection[] = $viewTime;
Requests_ViewTimeModel::save($viewTime);
$module = $request->getModule();
$redirectUrl = Zend_Controller_Action::getFrontController()->getBaseUrl()
. '/' . $module . '/view/index/id/' . $id;
......
......@@ -70,7 +70,13 @@ class Requests_ViewTimeModel extends Unl_Model
self::find($viewTimeIds);
$objects = array();
if (Unl_Util::isArray($user) && Unl_Util::isArray($request)) {
$objects = array();
} else if (Unl_Util::isArray($user) || Unl_Util::isArray($request)) {
$objects = new Unl_Model_Collection(__CLASS__);
} else {
$objects = null;
}
foreach ($records as $record) {
$uId = $record['user'];
$rId = $record['request'];
......@@ -89,13 +95,135 @@ class Requests_ViewTimeModel extends Unl_Model
return $objects;
}
static public function fetchNew()
{
$data = array(
'request' => null,
'user' => null,
'viewTime' => 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 creqRequestViewTimesUpdate '
. 'SELECT * FROM creqRequestViewTimes LIMIT 0';
$db->query($sql);
$sql = 'INSERT INTO creqRequestViewTimesUpdate VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?, ', $model->_data['requestViewTimeId'])
. $db->quoteInto('?, ' , $model->_data['request'])
. $db->quoteInto('?, ' , $model->_data['user'])
. $db->quoteInto('?)' , $model->_data['viewTime']);
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
$sql = 'UPDATE creqRequestViewTimes AS a, '
. ' creqRequestViewTimesUpdate AS b '
. 'SET a.request = b.request, '
. ' a.user = b.user, '
. ' a.viewTime = b.viewTime '
. 'WHERE a.requestViewTimeId = b.requestViewTimeId ';
$db->query($sql);
}
static protected function _insert(Unl_Model_Collection $models)
{
$db = Zend_Registry::get('db');
$sql = 'INSERT INTO creqRequestViewTimes (request, user, viewTime) VALUES ';
$sqlParts = array();
foreach ($models as $model) {
$sqlParts[] = $db->quoteInto('(?, ', $model->_data['request'])
. $db->quoteInto('?, ' , $model->_data['user'])
. $db->quoteInto('?)' , $model->_data['viewTime']);
}
$sql .= implode(', ', $sqlParts);
$db->query($sql);
$lastId = $db->lastInsertId();
foreach ($models as $model) {
$model->_data['requestViewTimeId'] = $lastId;
$lastId++;
}
}
public function getId()
{
return $this->_data['requestViewTimeId'];
}
public function getRequest()
{
return $this->_data['request'];
}
public function setRequest(Requests_RequestModel $request)
{
$this->_data['request'] = $request->getId();
}
public function getUser()
{
return $this->_data['user'];
}
public function setUser(Auth_UserModel $user)
{
$this->_data['user'] = $user->getId();
}
public function getTime()
{
return $this->_data['viewTime'];
}
public function setTime(Zend_Date $date)
{
$this->_data['viewTime'] = $date->getTimestamp();
}
}
......@@ -132,6 +132,11 @@
$action = $requestData['action'];
$comments = $requestData['comments'];
$viewTime = $requestData['viewTime'];
if ($viewTime > 0) {
$linkClass = 'Viewed';
} else {
$linkClass = 'New';
}
if ($request->isSubmitterAttentionRequired()) {
$decisions = array('_null' => '--Decision--') + $action->getResultStatusStrings($request, $this->user);
$vote = '_null';
......@@ -172,10 +177,10 @@
?>
</td>
<td>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>">View</a>
<a class="requestLink<?php echo $linkClass; ?>" href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>">View</a>
<?php if ($request->isEditable() || $request->isSubmitterAttentionRequired()) { ?>
/
<a href="<?php echo $this->baseUrl(); ?>/requests/edit/load/id/<?php echo $request->getId(); ?>">Edit</a>
<a class="requestLink<?php echo $linkClass; ?>" href="<?php echo $this->baseUrl(); ?>/requests/edit/load/id/<?php echo $request->getId(); ?>">Edit</a>
<?php } ?>
</td>
<td>
......@@ -183,7 +188,7 @@
$newCommentCount = 0;
if (Unl_Util::isArray($comments)) {
foreach ($comments as $comment) {
if ($comment->getTime() > $viewTime) {
if ($comment->getTime()->getTimestamp() > $viewTime) {
$newCommentCount++;
}
}
......@@ -270,6 +275,11 @@ foreach($this->roles as $roleData) {
$action = $requestData['action'];
$comments = $requestData['comments'];
$viewTime = $requestData['viewTime'];
if ($viewTime > 0) {
$linkClass = 'Viewed';
} else {
$linkClass = 'New';
}
$decisions = array('_null' => '--Decision--') + $action->getResultStatusStrings($request, $this->user);
$vote = '_null';
if ($requestData['vote']) {
......@@ -311,15 +321,6 @@ foreach($this->roles as $roleData) {
?>
</td>
<td>
<?php /*
$lastViewTime = RequestViewTimes::getInstance()->getViewTimeForUserAndRequest($this->user, $request);
if ($lastViewTime instanceof Nmc_Date_Null) {
$linkClass = 'New';
} else {
$linkClass = 'Viewed';
}
*/ ?>
<a class="requestLink<?php echo $linkClass; ?>"
href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>/role/<?php echo $role->getId(); ?>/list/normal">
View
......@@ -337,8 +338,8 @@ foreach($this->roles as $roleData) {
$newCommentCount = 0;
if (Unl_Util::isArray($comments)) {
foreach ($comments as $comment) {
if ($comment->getTime() > $viewTime) {
$newCommentCount++;
if ($comment->getTime()->getTimestamp() > $viewTime) {
$newCommentCount++;
}
}
}
......@@ -380,6 +381,11 @@ foreach($this->roles as $roleData) {
$action = $requestData['action'];
$comments = $requestData['comments'];
$viewTime = $requestData['viewTime'];
if ($viewTime > 0) {
$linkClass = 'Viewed';
} else {
$linkClass = 'New';
}
?>
<tr <?php echo (++$row % 2 ? 'class="odd"' : ''); ?>>
<!-- td><input type="checkbox" /></td -->
......@@ -399,14 +405,14 @@ foreach($this->roles as $roleData) {
?>
</td>
<td>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>/role/<?php echo $role->getId(); ?>/list/watching">View</a>
<a class="requestLink<?php echo $linkClass; ?>" href="<?php echo $this->baseUrl(); ?>/requests/view/index/id/<?php echo $request->getId(); ?>/role/<?php echo $role->getId(); ?>/list/watching">View</a>
</td>
<td>
<?php
$newCommentCount = 0;
if (Unl_Util::isArray($comments)) {
foreach ($comments as $comment) {
if ($comment->getTime() > $viewTime && $comment->getVisibility() == 'global') {
if ($comment->getTime()->getTimestamp() > $viewTime && $comment->getVisibility() == 'global') {
$newCommentCount++;
}
}
......
......@@ -6,3 +6,4 @@ table.course_list {width: 100%;}
table.course_list tr.odd {background-color:#E3E3E3;}
table.course_list td {font-family:URWGroteskTReg,sans-serif; padding:1px 3px; vertical-align:middle;}
.roleNotice {background-color:#CCCCCC; border:1px solid #444444; margin:0.5em; padding:0.5em; }
.requestLinkNew {color: #f00; }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment