*/ /** * Add a comment to an item. * * @package Comment * @subpackage UserInterface * */ class AddCommentController extends GalleryController { /** * @see GalleryController::handleRequest() */ function handleRequest($form) { global $gallery; $itemId = GalleryUtilities::getRequestVariables('itemId'); /* Make sure we have permission to add a comment */ $ret = GalleryCoreApi::assertHasItemPermission($itemId, 'comment.add'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $redirect = array(); $status = array(); $error = array(); if (isset($form['action']['add'])) { if (empty($form['subject'])) { $error[] = 'form[error][subject][missing]'; } if (empty($form['comment'])) { $error[] = 'form[error][comment][missing]'; } if (empty($error)) { /* Add the comment */ list ($ret, $comment) = GalleryCoreApi::newFactoryInstance('GalleryEntity', 'GalleryComment'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } if (!isset($comment)) { return array(GalleryStatus::error(ERROR_MISSING_OBJECT, __FILE__, __LINE__), null); } $ret = $comment->create($itemId); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $comment->setCommenterId($gallery->getActiveUserId()); $comment->setHost(GalleryUtilities::getRemoteHostAddress()); $comment->setSubject($form['subject']); $comment->setComment($form['comment']); $comment->setDate(time()); $ret = $comment->save(); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Send the user to a confirmation page, for now */ $redirect['view'] = 'core:ItemAdmin'; $redirect['subView'] = 'comment:CommentChangeConfirmation'; $redirect['itemId'] = (int)$itemId; $status['added'] = 1; } } else if (isset($form['action']['preview'])) { if (empty($form['subject'])) { $error[] = 'form[error][subject][missing]'; } if (empty($form['comment'])) { $error[] = 'form[error][comment][missing]'; } /* Fall through back to the current view */ } else if (isset($form['action']['cancel'])) { /* Where to go on a cancel? Go to item admin.*/ $redirect['view'] = 'core:ItemAdmin'; $redirect['itemId'] = (int)$itemId; } /* Prepare our results */ if (!empty($redirect)) { $results['return'] = 1; $results['redirect'] = $redirect; } else { $results['delegate']['view'] = 'core:ItemAdmin'; $results['delegate']['subView'] = 'comment:AddComment'; } $results['status'] = $status; $results['error'] = $error; return array(GalleryStatus::success(), $results); } } /** * This view will show a form to add a new comment to an item * * @package Comment * @subpackage UserInterface * */ class AddCommentView extends GalleryView { /** * @see GalleryView::loadTemplate */ function loadTemplate(&$template, &$form) { global $gallery; /* Load our item */ list ($ret, $item) = $this->_getItem(); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Make sure we have permission to add a comment */ $ret = GalleryCoreApi::assertHasItemPermission($item->getId(), 'comment.add'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $user = $gallery->getActiveUser(); if ($form['formName'] != 'AddComment') { $form['formName'] = 'AddComment'; $form['subject'] = ''; $form['comment'] = ''; } else { foreach (array('subject', 'comment') as $key) { if (empty($form[$key])) { $form[$key] = ''; } } } $AddComment = array(); $AddComment['user'] = $user->getMemberData(); $AddComment['host'] = GalleryUtilities::getRemoteHostAddress(); $template->setVariable('AddComment', $AddComment); $template->setVariable('controller', 'comment:AddComment'); return array(GalleryStatus::success(), array('body' => 'modules/comment/templates/AddComment.tpl')); } /** * @see GalleryView::getViewDescription() */ function getViewDescription() { list ($ret, $core) = GalleryCoreApi::loadPlugin('module', 'core'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null, null); } return array(GalleryStatus::success(), $core->translate('add comment')); } } ?>