Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 41 additions & 74 deletions modules/user_accounts/php/edit_user.class.inc
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,10 @@ class Edit_User extends \NDB_Form
} else {
$defaults['examiner_radiologist'] = 'N';
}
}
if ($vals[0]=='Y') {
$defaults['ex_'.$cid] ='on';
$defaults['examiner_sites'][] = $cid;
}
}
unset($defaults['examiner']);

// Notification defaults
// "notif_".$module."_".$operation."_".$service
Expand Down Expand Up @@ -346,26 +345,12 @@ class Edit_User extends \NDB_Form
// EXAMINER UPDATE
if ($editor->hasPermission('examiner_multisite')) {
// get all fields that are related to examiners
$ex_curr_sites = [];
$ex_curr_sites = $values['examiner_sites'] ?? [];
$ex_prev_sites = [];
$ex_radiologist = 'N';

foreach ($values as $k => $v) {
//examiner fields
if (preg_match("/^ex_[0-9]+$/", $k)) {
//get centerID
$parse_key = explode('_', $k);
$cid = $parse_key[1];
$ex_curr_sites[$k] = $cid;
}
if ($k === 'examiner_radiologist') {
$ex_radiologist = $v;
}
}
foreach ($ex_curr_sites as $k => $v) {
unset($values[$k]);
}
$ex_radiologist = $values['examiner_radiologist'] ?? 'N';
}

unset($values['examiner_sites']);
unset($values['examiner_radiologist']);
$ex_pending = $values['examiner_pending'];
unset($values['examiner_pending']);
Expand Down Expand Up @@ -413,10 +398,10 @@ class Edit_User extends \NDB_Form

// START EXAMINER UPDATE
if ($editor->hasPermission('examiner_multisite')) {
$examinerID = $DB->pselect(
$examinerID = $DB->pselectCol(
"SELECT e.examinerID
FROM examiners e
WHERE e.userID=:uid",
FROM examiners e
WHERE e.userID=:uid",
[
"uid" => $uid,
]
Expand Down Expand Up @@ -466,8 +451,8 @@ class Edit_User extends \NDB_Form
]
);

$examinerID = iterator_to_array($examinerID);
$examinerID = $examinerID[0]['examinerID'];
$examinerID = array_values($examinerID);
$examinerID = $examinerID[0];

//get existing sites for examiner
$prev_sites = $DB->pselect(
Expand All @@ -484,7 +469,6 @@ class Edit_User extends \NDB_Form
}
if (!empty($ex_curr_sites)) {
foreach ($ex_curr_sites as $v) {

//Check if examiner already in db for site
$result = $DB->pselectRow(
"SELECT epr.centerID
Expand Down Expand Up @@ -526,7 +510,7 @@ class Edit_User extends \NDB_Form
}
//de-activate examiner if sites where no longer checked
if (!empty($ex_prev_sites)) {
$ex_inactive = array_diff($ex_prev_sites, $ex_curr_sites);
$ex_inactive = array_diff($ex_prev_sites, $ex_curr_sites ?? []);
}
if (!empty($ex_inactive)) {
foreach ($ex_inactive as $cid) {
Expand Down Expand Up @@ -842,25 +826,21 @@ class Edit_User extends \NDB_Form
// END PROJECT SECTION

if ($editor->hasPermission('examiner_multisite')) {
$groupA = [];
$groupB = [];

//get site aliases
$factory = \NDB_Factory::singleton();
$DB = $factory->database();
$aliases = $DB->pselect("SELECT CenterID, Alias FROM psc ", []);

foreach ($aliases as $row) {
$groupA[] = $this->createCheckbox(
'ex_'.$row['CenterID'],
$row['Alias'],
[]
);
}
$groupB[] = $this->createLabel(
$examinerGroup = [];

$this->addSelect(
"examiner_sites",
"Examiner at:",
$siteOptions,
[
'class' => 'form-control input-sm resizable',
'multiple' => 'multiple',
]
);
$examinerGroup[] = $this->createLabel(
"Radiologist: "
);
$groupB[] = $this->createSelect(
$examinerGroup[] = $this->createSelect(
"examiner_radiologist",
"Radiologist: ",
[
Expand All @@ -870,10 +850,10 @@ class Edit_User extends \NDB_Form
]
);

$groupB[] = $this->createLabel(
$examinerGroup[] = $this->createLabel(
"Pending Approval:"
);
$groupB[] = $this->createSelect(
$examinerGroup[] = $this->createSelect(
"examiner_pending",
"Pending Approval: ",
[
Expand All @@ -883,19 +863,12 @@ class Edit_User extends \NDB_Form
]
);
$this->addGroup(
$groupA,
'examiner_sites',
'Examiner At:',
$this->_GUIDelimiter
);
$this->addGroup(
$groupB,
$examinerGroup,
"examiner_group",
"Examiner Status",
$this->_GUIDelimiter
);
unset($groupA);
unset($groupB);
unset($examinerGroup);
}

// It doesn't make sense for a user to be editing their own
Expand Down Expand Up @@ -1284,26 +1257,20 @@ class Edit_User extends \NDB_Form
// Validate Examiner Status
//======================================
if ($editor->hasPermission('examiner_multisite')) {
$matched = false;
foreach (array_keys($values) as $k) {
if (preg_match("/^ex_[0-9]+$/", $k)) {
$matched = true;
if ($values['examiner_radiologist'] == '') {
$errors['examiner_group'] = "Please specify if examiner " .
"is a radiologist";
if ($values['examiner_sites'] ?? null) {
if ($values['examiner_radiologist'] == '') {
$errors['examiner_group'] = "Please specify if examiner " .
"is a radiologist";

}
if ($values['examiner_radiologist'] !== ''
&& $values['examiner_pending'] == ''
) {
$errors['examiner_group'] = "Please set pending " .
"approval Yes or No";
}
}
}
if (!$matched
&& ($values['examiner_radiologist'] !== ''
|| $values['examiner_pending'] ?? '' !== '')
if ($values['examiner_radiologist'] !== ''
&& $values['examiner_pending'] == ''
) {
$errors['examiner_group'] = "Please set pending " .
"approval Yes or No";
}
} elseif ($values['examiner_radiologist'] !== ''
|| $values['examiner_pending'] ?? '' !== ''
) {
$errors['examiner_sites'] = "Please select at least one examiner
site or clear the 'Examiner status' fields below (i.e.
Expand Down
Loading