define('TH_COMMENT_TYPE_GENERAL', 3);
$parent= isset ($parent) ? $parent : $modx->documentObject['parent'];
$landing= isset ($landing) ? $landing : $modx->documentIdentifier;
$output= '';
if (include_once(MODX_BASE_PATH . 'assets/snippets/techhangar/techhangar.class.php')) {
$xpdo= new TechHangar();
if (!isset ($_REQUEST['feedback_id']) || !$feedback_id= intval($_REQUEST['feedback_id'])) {
die('feedback_id not set!');
}
$feedback= $xpdo->getObject('thFeedback', $feedback_id);
$required= array (
);
$documentVersion= $feedback->document_version;
$objDocumentVersion= $xpdo->getObject('thDocumentVersion', $documentVersion);
$objDocumentType= $objDocumentVersion->getOne('thDocumentType');
$modx->setPlaceholder('documentVersion', $objDocumentType->name . ' ' . $objDocumentVersion->version);
$review= $feedback->getOne('thReview');
if (!$review) {
$review= $xpdo->newObject('thReview');
$review->set('feedback_id', $feedback_id);
}
if (count($_POST)) {
$review->fromArray($_POST);
if (isset ($_POST['submit_review'])) {
//do validation here
$invalid= array ();
$modx->setPlaceholder('review-object', $review);
$modx->setPlaceholder('review-required', $required);
$modx->setPlaceholder('review-invalid', $invalid);
$modx->runSnippet('adminreviewform-validation-' . $modx->getPlaceholder('documentVersion'));
$modx->runSnippet('adminreviewform-validation');
$required= $modx->getPlaceholder('review-required');
$invalid= $modx->getPlaceholder('review-invalid');
if (empty ($invalid)) {
//save review
if ($review->save()) {
$modx->sendRedirect($modx->makeUrl($landing, '', 'feedback_id=' . $feedback_id));
} else {
$output.= '
There was an error saving this review record.
';
}
} else {
$output.= 'Your submission was rejected for the following reasons:
';
$output.= '';
foreach ($invalid as $invalidItem) $output.= '- ' . $invalidItem . '
';
$output.= '
';
}
}
}
foreach ($feedback->toArray() as $key => $val) {
$modx->setPlaceholder('feedback.' . $key, stripslashes($val));
}
$thUserProfile= $xpdo->getObject('thUserProfile', array ('webuser' => $feedback->webuser));
$modxUserProfile= $modx->getWebUserInfo($feedback->webuser);
foreach ($thUserProfile as $upKey => $upVal) {
$modx->setPlaceholder('user.' . $upKey, $upVal);
unset($upKey, $upVal);
}
foreach ($modxUserProfile as $upKey => $upVal) {
$modx->setPlaceholder('user.' . $upKey, $upVal);
unset($upKey, $upVal);
}
$xpdo->loadClass('form.MakeForm', XPDO_CORE_PATH, true, true);
$form= new MakeForm($xpdo);
//comment type options
$optCommentTypes= array ('--- Select One ---');
$commentTypes= $xpdo->getCollectionGraph('thDocumentVersionCommentType', '{"thCommentType":{"id":{}}}', array ('document_version' => $documentVersion));
foreach ($commentTypes as $dvcommentType) {
$commentType= $dvcommentType->getOne('thCommentType');
$optCommentTypes[$commentType->id]= $commentType->name;
}
//topic options
$optTopics= array ('--- Select One ---');
$topics= $xpdo->getCollectionGraph('thDocumentVersionTopic', '{"thTopic":{"id":{}}}', array ('document_version' => $documentVersion));
foreach ($topics as $dvtopic) {
$topic= $dvtopic->getOne('thTopic');
$optTopics[$topic->id]= $topic->name;
}
//subtopic options
$optSubTopics= array ('--- Select One ---');
$subTopics= $xpdo->getCollectionGraph('thDocumentVersionSubTopic', '{"thSubTopic":{"id":{}}}', array ('document_version' => $documentVersion));
foreach ($subTopics as $dvsubTopic) {
$subTopic= $dvsubTopic->getOne('thSubTopic');
$optSubTopics[$subTopic->id]= $subTopic->name;
}
//disposition options
$optDispositions= array ('--- Select One ---');
$dispositions= $xpdo->getCollection('thDisposition');
foreach ($dispositions as $disposition) {
$optDispositions[$disposition->id]= $disposition->name;
}
//assigned_to options
$optAssignedTo= array ('--- Select One ---');
$assigned_tos= $xpdo->getCollection('thIPTAssociation');
foreach ($assigned_tos as $assigned_to) {
$optAssignedTo[$assigned_to->id]= $assigned_to->name;
}
//status options
$optStatus= array (0 => '--- Select One ---', 1 => 'Open', 2 => 'Closed');
$modx->setPlaceholder('feedback.comment_type.name', $optCommentTypes[$feedback->comment_type]);
$modx->setPlaceholder('feedback.topic.name', $optTopics[$feedback->topic]);
$modx->setPlaceholder('feedback.subtopic.name', $optSubTopics[$feedback->subtopic]);
$requiredSpan= ' *';
$formElements= array (
'feedback_id' => array (
'type' => 'hidden',
'name' => 'feedback_id',
'value' => $feedback_id,
),
'comment_type_corrected' => array (
'type' => 'select',
'name' => 'comment_type_corrected',
'label' => 'Comment:' . (isset ($required['comment_type_corrected']) ? $requiredSpan : ''),
'options' => $form->createOptions($optCommentTypes, $review->comment_type_corrected),
),
'disposition' => array (
'type' => 'select',
'name' => 'disposition',
'label' => 'Disposition:' . (isset ($required['disposition']) ? $requiredSpan : ''),
'options' => $form->createOptions($optDispositions, $review->disposition),
),
'topic_corrected' => array (
'type' => 'select',
'name' => 'topic_corrected',
'label' => 'Topic:' . (isset ($required['topic_corrected']) ? $requiredSpan : ''),
'options' => $form->createOptions($optTopics, $review->topic_corrected),
),
'status' => array (
'type' => 'select',
'name' => 'status',
'label' => 'Status:' . (isset ($required['status']) ? $requiredSpan : ''),
'options' => $form->createOptions($optStatus, $review->status),
),
'subtopic_corrected' => array (
'type' => 'select',
'name' => 'subtopic_corrected',
'label' => 'Sub-Topic:' . (isset ($required['subtopic_corrected']) ? $requiredSpan : ''),
'options' => $form->createOptions($optSubTopics, $review->subtopic_corrected),
),
'assigned_to' => array (
'type' => 'select',
'name' => 'assigned_to',
'label' => 'Assigned to:' . (isset ($required['assigned_to']) ? $requiredSpan : ''),
'options' => $form->createOptions($optAssignedTo, $review->assigned_to),
),
'notes' => array (
'type' => 'textarea',
'name' => 'notes',
'label' => 'Notes:' . (isset ($required['notes']) ? $requiredSpan : ''),
'value' => $review->get('notes'),
// 'style' => 'width:420px;height:120px;',
'wrap' => 'virtual',
),
'submit_review' => array (
'type' => 'submit',
'name' => 'submit_review',
'value' => 'Submit Review',
'extra' => ' or Cancel and close',
),
);
$form->setFormElements($formElements);
$output.= $form->buildForm();
}
return $output;