$tpl_data['error_message'][] = "TimePoint Error (" . $_REQUEST['sessionID'] . "): " . $e->getMessage(); } } //-------------------------------------------------- // load the menu or instrument try { $caller =& NDB_Caller::singleton(); $workspace = $caller->load($TestName, $subtest); if (isset($caller->page->FormAction)) { $tpl_data['FormAction'] = $caller->page->FormAction; } if (isset($caller->controlPanel)) { $tpl_data['control_panel'] = $caller->controlPanel; } if (isset($caller->feedbackPanel) && $user->hasPermission('bvl_feedback')) { $tpl_data['bvl_feedback'] = NDB_BVL_Feedback::bvlFeedbackPossible($TestName); $tpl_data['feedback_panel'] = $caller->feedbackPanel; } if (isset($caller->page)) { $tpl_data['jsfiles'] = $caller->page->getJSDependencies(); $tpl_data['cssfiles'] = $caller->page->getCSSDependencies(); } $tpl_data['workspace'] = $workspace; } catch (ConfigurationException $e) { header("HTTP/1.1 500 Internal Server Error"); $tpl_data['error_message'][] = $e->getMessage(); } catch (DatabaseException $e) { header("HTTP/1.1 500 Internal Server Error"); $tpl_data['error_message'][] = $e->getMessage(); $tpl_data['error_message'][] = "Query: <pre>" . $e->query . "</pre>"; $tpl_data['error_message'][] = "Bind parameters: " . print_r($e->params, true);
} else { // test the DB window - not applicable for V1 if (strtolower($data['Visit']) == 'v1') { $data['DB_Window'] = ""; } else { // compute the dates in months $data['DB_Window'] = abs($dateOfVisit['Y'] * 12 + $dateOfVisit['M'] - ($dateOfIQTest['Y'] * 12 + $dateOfIQTest['M'])); } } unset($dateOfIQTest); unset($dateOfVisit); } /* ** FEEDBACK status info */ $feedback =& NDB_BVL_Feedback::singleton($username, null, $sessionID); $feedback_status = $feedback->getMaxThreadStatus('Y'); // prepare the $data element if (!is_array($feedback_status)) { $data['Feedback'] = $feedback_status; } // destroy vars unset($feedback); unset($feedback_status); // get list of NA instruments $NAinstruments = array(); $NAinstruments = $timepointFlagObject->getListOfNonAdministeredInstruments(); // set the NA instrument data if (count($NAinstruments) > 0) { foreach ($instrumentList as $instrument) { if (in_array($instrument, $NAinstruments)) {
function fixDate($candID, $dateType, $newDate, $sessionID = null) { // check the user $_ENV['USER'] $user =& User::singleton(getenv('USER')); if ($user->getUsername() == null) { return PEAR::raiseError("Error: Database user named " . getenv('USER') . " does not exist. Please create and then retry script\n"); } if (PEAR::isError($user)) { return "Error, failed to create User object for (" . getenv('USER') . "):" . $user->getMessage() . " \n"; } $db =& Database::singleton(); if (PEAR::isError($db)) { return PEAR::raiseError("Failed to create database object:\n" . $db->getMessage()); } // check the args if (empty($dateType) || !in_array($dateType, array('dob', 'edc', 'screening', 'visit')) || empty($newDate) || in_array($dateType, array('screening', 'visit')) && empty($sessionID)) { return PEAR::raiseError("Please pass a valid set of arguments\n"); } // check the date format (redundant) $dateArray = explode('-', $newDate); if (!is_array($dateArray) || !checkdate($dateArray[1], $dateArray[2], $dateArray[0])) { return PEAR::raiseError("Invalid Date! Please use the following format: YYYY-MM-DD \n"); } unset($dateArray); // candidate object - needed to get the dob/edc $candidate =& Candidate::singleton($candID); if (PEAR::isError($candidate)) { return PEAR::raiseError("Error, failed to create candidate object:\n" . $candidate->getMessage()); } // fixing DOB or EDC if (in_array($dateType, array('dob', 'edc'))) { // set and where arrays $setArray = array($dateType => $newDate); $whereArray = array('CandID' => $candID); // update candidate table record $success = $db->update('candidate', $setArray, $whereArray); if (PEAR::isError($success)) { return PEAR::raiseError("Failed to update the {$dateType}: " . $success->getMessage()); } /* * add Feedback */ // feedback object $feedback =& NDB_BVL_Feedback::singleton($user->getUsername(), $candID); if (PEAR::isError($feedback)) { return PEAR::raiseError("Failed to create feedback object: " . $feedback->getMessage()); } // add the new thread $success = $feedback->createThread('profile', '5', "The date of {$dateType} has been changed to {$newDate}.", 'N'); if (PEAR::isError($success)) { return PEAR::raiseError("Failed to create feedback: " . $success->getMessage()); } // log the change fwrite(STDERR, "Updated {$dateType} to: {$newDate}, for candidate {$candID}. Check the record in the DB! \n"); } else { // fixing Date_screening or Date_visit // create timepoint object $timePoint =& TimePoint::singleton($sessionID); if (PEAR::isError($timePoint)) { return PEAR::raiseError("Failed to create timepoint object: " . $timePoint->getMessage()); } // check if the timepoint is started before attempting to make changes to it if ($timePoint->getCurrentStage() == 'Not Started') { return PEAR::raiseError("Error: Cannot perform screening/visit date fixes on the non-started timepoints!"); } // get the stage statuses $screeningStage = $timePoint->getScreeningStatus(); $visitStage = $timePoint->getVisitStatus(); // make sure that the stage to fix is started if ($dateType == 'visit' && empty($visitStage) || $dateType == 'screening' && empty($screeningStage)) { return PEAR::raiseError("Error: failed to retrieve the date of {$dateType} (sessionID: {$sessionID}) b/c that stage was not started!"); } // set and where arrays for the update $setArray = array("Date_" . $dateType => $newDate); $whereArray = array("ID" => $sessionID); // update session table record $success = $db->update('session', $setArray, $whereArray); if (PEAR::isError($success)) { return PEAR::raiseError("Failed to update the {$dateType} stage date to {$newDate}: " . $success->getMessage()); } /* * add Feedback */ // feedback object $feedback =& NDB_BVL_Feedback::singleton($user->getUsername(), null, $sessionID); if (PEAR::isError($feedback)) { return PEAR::raiseError("Failed to create feedback object: " . $feedback->getMessage()); } // add the new thread $success = $feedback->createThread('session', '5', "The date of {$dateType} has been changed to {$newDate}.", 'N'); if (PEAR::isError($success)) { return PEAR::raiseError("Failed to create feedback: " . $success->getMessage()); } // log the change fwrite(STDERR, "Updated date of {$dateType} to {$newDate}, for candidate {$candID}, timepoint {$sessionID}. Check the DB record!\n"); } // end if return; }
if (!empty($_REQUEST['commentID'])) { $feedback = NDB_BVL_Feedback::singleton($user->getUsername(), null, null, $_REQUEST['commentID']); } elseif (!empty($_REQUEST['sessionID'])) { $feedback = NDB_BVL_Feedback::singleton($user->getUsername(), null, $_REQUEST['sessionID']); } elseif (!empty($_REQUEST['candID'])) { $feedback = NDB_BVL_Feedback::singleton($user->getUsername(), $_REQUEST['candID']); } if (isset($feedback) && Utility::isErrorX($feedback)) { // if feedback object return an error $tpl_data['error_message'][] = $feedback->getMessage(); } elseif (isset($feedback) && !is_object($feedback)) { } elseif (isset($feedback)) { // define feedback level $tpl_data['feedbackLevel'] = $feedback->getFeedbackLevel(); // get list of types $feedbackTypes = NDB_BVL_Feedback::getFeedbackTypes(); if (PEAR::isError($feedbackTypes)) { $tpl_data['error_message'][] = $feedbackTypes->getMessage(); } else { $z = 0; foreach ($feedbackTypes as $val) { // Following are used for the "Add Feedback" Form $tpl_data['threadTypes'][$z]['Type'] = $val['Type']; $tpl_data['threadTypes'][$z]['Label'] = $val['Label']; //These are for the update thread form $tpl_data['threadTypeIDArray'][] = $val['Type']; $tpl_data['threadTypeLabelArray'][] = $val['Label']; $z++; } } // "Add Feedback" Form" - option array for select boxes- 2 arrays;
<?php /** * This AJAX request serves the purpose of getting the entries for a given * bvl_feedback thread. * * PHP version 5 * * @category Behavioural * @package Main * @author Evan McIlroy <*****@*****.**> * @license GPLv3 <http://www.gnu.org/licenses/gpl-3.0.en.html> * @link https://www.github.com/aces/Loris-Trunk/ */ header("content-type:application/json"); require "bvl_panel_ajax.php"; if (isset($_GET['feedbackID']) && !empty($_GET['feedbackID'])) { $threadEntries = NDB_BVL_Feedback::getThreadEntries($_GET['feedbackID']); print json_encode($threadEntries); } exit;
/** * Used by react on initial load to load the thread state. * * PHP version 5 * * @category Behavioural * @package Main * @author Evan McIlroy <*****@*****.**> * @license GPLv3 <http://www.gnu.org/licenses/gpl-3.0.en.html> * @link https://www.github.com/aces/Loris-Trunk/ */ header("content-type:application/json"); ini_set('default_charset', 'utf-8'); set_include_path(__DIR__ . "/../../../project/libraries:" . __DIR__ . "/../../../php/libraries:" . "/usr/share/pear:"); require_once __DIR__ . "/../../../vendor/autoload.php"; require_once "NDB_Client.class.inc"; $client = new NDB_Client(); $client->initialize(); $user =& User::singleton(); $username = $user->getUsername(); if (isset($_POST['candID']) && !isset($_POST['sessionID'])) { $feedbackThread =& NDB_BVL_Feedback::Singleton($username, $_POST['candID']); } elseif (isset($_POST['candID']) && isset($_POST['sessionID']) && !isset($_POST['commentID'])) { $feedbackThread =& NDB_BVL_Feedback::Singleton($username, $_POST['candID'], $_POST['sessionID']); } elseif (isset($_POST['candID']) && isset($_POST['sessionID']) && isset($_POST['commentID'])) { $feedbackThread =& NDB_BVL_Feedback::Singleton($username, $_POST['candID'], $_POST['sessionID'], $_POST['commentID']); } $feedbackThreadList = $feedbackThread->getThreadList(); echo json_encode($feedbackThreadList); exit;
<?php /** * File to close a BVL feedback thread via the BVL feedback panel. * * PHP version 5 * * @category Behavioural * @package Main * @author Evan McIlroy <*****@*****.**> * @license GPLv3 <http://www.gnu.org/licenses/gpl-3.0.en.html> * @link https://www.github.com/aces/Loris-Trunk/ */ ini_set('default_charset', 'utf-8'); require "bvl_panel_ajax.php"; $user =& User::singleton(); $username = $user->getUsername(); if (isset($_POST['feedbackID']) && isset($_POST['candID'])) { $feedbackThread =& NDB_BVL_Feedback::Singleton($username, $_POST['candID']); $feedbackThread->closeThread($_POST['feedbackID']); } exit;
/** * Test getFeedbackTypeIdByName for value which does not exist * in feedback_bvl_type table * * @covers NDB_BVL_Feedback::getFeedbackTypeIdByName * @return void */ public function testGetFeedbackTypeIdByNameForNoneExistingValue() { $this->assertEmpty($res = $this->_feedbackObj->getFeedbackTypeIdByName('None existing value')); }