281 lines
8.1 KiB
PHP
281 lines
8.1 KiB
PHP
<?php
|
|
|
|
// +----------------------------------------------------------------------+
|
|
// | OpenConf |
|
|
// +----------------------------------------------------------------------+
|
|
// | Copyright (c) 2002-2020 Zakon Group LLC. All Rights Reserved. |
|
|
// +----------------------------------------------------------------------+
|
|
// | This source file is subject to the OpenConf License, available on |
|
|
// | the OpenConf web site: www.OpenConf.com |
|
|
// +----------------------------------------------------------------------+
|
|
|
|
// Committee sign up
|
|
// See include-forms.inc for syntax format
|
|
|
|
// Get topics
|
|
$topq = "SELECT * FROM `" . OCC_TABLE_TOPIC . "`";
|
|
if ($OC_configAR['OC_topicDisplayAlpha']) {
|
|
$topq .= " ORDER BY `topicname`";
|
|
}
|
|
$topr = ocsql_query($topq) or err('unable to retrieve topics');
|
|
$topicAR = array();
|
|
$shortTopicAR = array();
|
|
if (($tnum = ocsql_num_rows($topr)) > 0) {
|
|
while ($topl = ocsql_fetch_assoc($topr)) {
|
|
if ($topl['topicname'] == 'N/A') { continue; }
|
|
$topicAR[$topl['topicid']] = $topl['topicname'];
|
|
if (!empty($topl['short'])) {
|
|
$shortTopicAR[$topl['topicid']] = $topl['short'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$OC_reviewerFieldAR = array();
|
|
$OC_reviewerFieldSetAR = array();
|
|
|
|
// Hooks
|
|
if (oc_hookSet('committee-profile-preinc')) {
|
|
foreach ($GLOBALS['OC_hooksAR']['committee-profile-preinc'] as $v) {
|
|
require_once $v;
|
|
}
|
|
}
|
|
|
|
if (!isset($mod_oc_customforms_customCmtForm) || (!$mod_oc_customforms_customCmtForm)) { // skip if we have a custom form
|
|
|
|
// Consent
|
|
if (
|
|
(OCC_LICENSE != 'Public')
|
|
||
|
|
((OCC_LICENSE == 'Public') && ($OC_configAR['OC_privacy_display'] > 0))
|
|
) {
|
|
$OC_reviewerFieldAR['consent'] = array(
|
|
'name' => oc_('Consent'),
|
|
'short' => oc_('Consent'),
|
|
'note' => '',
|
|
'type' => 'checkbox',
|
|
'usekey' => false,
|
|
'required' => true,
|
|
'delimiter' => '',
|
|
'values' => array(oc_('I consent to the collection and use of my personal information, including receiving emails, consistent with the Privacy Policy linked above.'))
|
|
);
|
|
|
|
$OC_reviewerFieldSetAR['fs_consent'] = array(
|
|
'fieldset' => oc_('Consent'),
|
|
'note' => '',
|
|
'fields' => array('consent')
|
|
);
|
|
}
|
|
|
|
// Personal Info
|
|
$OC_reviewerFieldAR['orcid'] = array(
|
|
'name' => oc_('ORCID'),
|
|
'short' => oc_('ORCID'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'width' => 30,
|
|
'maxchars' => 30,
|
|
'required' => false
|
|
);
|
|
|
|
$OC_reviewerFieldAR['name_first'] = array(
|
|
'name' => oc_('First/Given Name'),
|
|
'short' => oc_('First Name'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'maxchars' => 60,
|
|
'required' => false
|
|
);
|
|
|
|
$OC_reviewerFieldAR['name_last'] = array(
|
|
'name' => oc_('Last/Family Name'),
|
|
'short' => oc_('Last Name'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'maxchars' => 40,
|
|
'required' => true
|
|
);
|
|
|
|
$OC_reviewerFieldAR['email'] = array(
|
|
'name' => oc_('Email'),
|
|
'short' => oc_('Email'),
|
|
'note' => '',
|
|
'type' => 'email',
|
|
'required' => true
|
|
);
|
|
|
|
$OC_reviewerFieldAR['organization'] = array(
|
|
'name' => oc_('Organization'),
|
|
'short' => oc_('Organization'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'maxchars' => 150, // limitation as a result of utf8mb4 keys
|
|
'required' => false
|
|
);
|
|
|
|
$OC_reviewerFieldAR['country'] = array(
|
|
'name' => oc_('Country'),
|
|
'short' => oc_('Country'),
|
|
'note' => '',
|
|
'type' => 'dropdown',
|
|
'blank' => true,
|
|
'required' => false,
|
|
'valuetype' => 'country'
|
|
);
|
|
|
|
$OC_reviewerFieldAR['telephone'] = array(
|
|
'name' => oc_('Telephone'),
|
|
'short' => oc_('Telephone'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'required' => false
|
|
);
|
|
|
|
$OC_reviewerFieldAR['url'] = array(
|
|
'name' => oc_('Web Site'),
|
|
'short' => oc_('Web Site'),
|
|
'note' => '',
|
|
'type' => 'text',
|
|
'required' => false,
|
|
'placeholder' => 'https://'
|
|
);
|
|
|
|
$OC_reviewerFieldSetAR['fs_personal'] = array(
|
|
'fieldset' => oc_('Personal Info'),
|
|
'note' => '',
|
|
'fields' => array('orcid', 'name_first', 'name_last', 'email', 'organization', 'country', 'telephone', 'url')
|
|
);
|
|
|
|
// Topics
|
|
$OC_reviewerFieldAR['topics'] = array(
|
|
'name' => oc_('Topic Areas'),
|
|
'short' => oc_('Topic(s)'),
|
|
'note' => '',
|
|
'type' => 'checkbox',
|
|
'usekey' => true,
|
|
'display' => 'newline',
|
|
'required' => true,
|
|
'valuetype' => 'topic'
|
|
);
|
|
if ($OC_configAR['OC_multipleCommitteeTopics'] != 1) { // (!1 = limited to 1)
|
|
$OC_reviewerFieldAR['topics']['maxselections'] = 1;
|
|
}
|
|
|
|
$OC_reviewerFieldSetAR['fs_topics'] = array(
|
|
'fieldset' => oc_('Topic Areas'),
|
|
'note' => oc_('To help match submissions to reviewers, please select the area(s) most applicable to your submission'),
|
|
'fields' => array('topics')
|
|
);
|
|
|
|
|
|
// Comments
|
|
$OC_reviewerFieldAR['comments'] = array(
|
|
'name' => oc_('Comments to Chair'),
|
|
'short' => oc_('Comments'),
|
|
'note' => '',
|
|
'type' => 'textarea',
|
|
'height' => 5,
|
|
'required' => false
|
|
);
|
|
|
|
$OC_reviewerFieldSetAR['fs_comments'] = array(
|
|
'fieldset' => oc_('Comments'),
|
|
'note' => '',
|
|
'fields' => array('comments')
|
|
);
|
|
|
|
// Account
|
|
$OC_reviewerFieldAR['username'] = array(
|
|
'name' => oc_('Username'),
|
|
'short' => oc_('Username'),
|
|
//T: %1$d-%2$d = range of letters allowed (e.g., 5-50)
|
|
'note' => sprintf(oc_('%1$d-%2$d characters: letters, numbers, @, period (.), hyphen (-)'), 5, 50),
|
|
'minchars' => 5,
|
|
'maxchars' => 50,
|
|
'type' => 'text',
|
|
'donotvalidate' => true,
|
|
'required' => true // always true
|
|
);
|
|
$OC_reviewerFieldAR['password1'] = array(
|
|
'name' => oc_('Password'),
|
|
'short' => oc_('Password'),
|
|
'note' => sprintf(oc_('%d or more characters (any)'), 8),
|
|
'type' => 'password',
|
|
'donotvalidate' => true,
|
|
'required' => true
|
|
);
|
|
|
|
$OC_reviewerFieldAR['password2'] = array(
|
|
'name' => oc_('Re-enter Password'),
|
|
'short' => oc_('Confirm'),
|
|
'note' => '',
|
|
'type' => 'password',
|
|
'donotvalidate' => true,
|
|
'required' => true
|
|
);
|
|
|
|
$OC_reviewerFieldSetAR['fs_passwords'] = array(
|
|
'fieldset' => oc_('Account'),
|
|
'note' => '',
|
|
'fields' => array('username', 'password1', 'password2')
|
|
);
|
|
|
|
// Unset fields that should not be displayed on form
|
|
if (!empty($GLOBALS['OC_configAR']['OC_hideCmtFields'])) {
|
|
$hCF = explode(',', $GLOBALS['OC_configAR']['OC_hideCmtFields']);
|
|
foreach ($hCF as $hc_f) {
|
|
list($a_fs, $a_f) = explode(':', $hc_f);
|
|
unset($OC_reviewerFieldAR[$a_f]);
|
|
if (in_array($a_f, $OC_reviewerFieldSetAR[$a_fs]['fields'])) {
|
|
$OC_reviewerFieldSetAR[$a_fs]['fields'] = array_values(array_diff($OC_reviewerFieldSetAR[$a_fs]['fields'], array($a_f)));
|
|
}
|
|
}
|
|
}
|
|
|
|
} // if ! custom form
|
|
|
|
|
|
if (oc_hookSet('committee-profile-inc')) {
|
|
foreach ($GLOBALS['OC_hooksAR']['committee-profile-inc'] as $v) {
|
|
require_once $v;
|
|
}
|
|
}
|
|
|
|
// Make updates if not customforms edit
|
|
if (! isset($mod_oc_customforms_edit) || ! $mod_oc_customforms_edit) {
|
|
foreach ($OC_reviewerFieldAR as $sfk => $sf) {
|
|
// remove fields designated for new submissions (sign up) only if profile being edited
|
|
if (isset($sf['newsubonly']) && $sf['newsubonly'] && isset($GLOBALS['OC_cmtEdit']) && $GLOBALS['OC_cmtEdit']) {
|
|
unset($OC_reviewerFieldAR[$sfk]);
|
|
foreach ($OC_reviewerFieldSetAR as $fsid => $fsar) {
|
|
if (in_array($sfk, $fsar['fields'])) {
|
|
$OC_reviewerFieldSetAR[$fsid]['fields'] = array_diff($OC_reviewerFieldSetAR[$fsid]['fields'], array($sfk));
|
|
continue; // field should only be in one fieldset
|
|
}
|
|
}
|
|
} else { // update valuetypes
|
|
if (isset($sf['valuetype']) && !empty($sf['valuetype']) && ($sf['valuetype'] != 'custom')) {
|
|
switch($sf['valuetype']) {
|
|
case 'country':
|
|
require_once OCC_COUNTRY_FILE;
|
|
$OC_reviewerFieldAR[$sfk]['values'] = $GLOBALS['OC_countryAR'];
|
|
break;
|
|
|
|
case 'topic':
|
|
$OC_reviewerFieldAR[$sfk]['values'] = $topicAR;
|
|
break;
|
|
|
|
default: // lib file
|
|
require_once OCC_LIB_DIR . $sf['valuetype'] . '.inc';
|
|
$OC_reviewerFieldAR[$sfk]['values'] = $GLOBALS['OC_' . $sf['valuetype'] . 'AR'];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update Topics to radio if required and max selections = 1
|
|
if (isset($OC_reviewerFieldAR['topics']['required']) && $OC_reviewerFieldAR['topics']['required'] && isset($OC_reviewerFieldAR['topics']['maxselections']) && ($OC_reviewerFieldAR['topics']['maxselections'] == 1) && ($OC_reviewerFieldAR['topics']['type'] == 'checkbox')){
|
|
$OC_reviewerFieldAR['topics']['type'] = 'radio';
|
|
}
|
|
}
|