'; if (!OCC_INSTALL_COMPLETE && isset($_REQUEST['install']) && ($_REQUEST['install'] == 1)) { require_once "install-include.php"; $token = ''; } else { beginChairSession(); printHeader("Configuration", 1); $token = $_SESSION[OCC_SESSION_VAR_NAME]['chairtoken']; // Display active modules config if (isset($OC_activeModulesAR) && !empty($OC_activeModulesAR)) { $modules = array(); foreach ($OC_activeModulesAR as $module) { if (is_file('../modules/' . $module . '/settings.inc')) { $modules[$module] = $OC_modulesAR[$module]['name']; } } asort($modules); $moduleOptions = ''; foreach ($modules as $mid => $mname) { $moduleOptions .= ''; } if (!empty($moduleOptions)) { print '
'; } } } // YesNo fields $yesNoFieldsAR = array('OC_notifyIncludeIP', 'OC_reviewerReadPapers', 'OC_reviewerSeeAssignedReviews', 'OC_reviewerCompleteBeforeSAR', 'OC_reviewerSeeOtherReviews', 'OC_reviewerSeeOtherReviewers', 'OC_reviewerSeeAuthors', 'OC_advocateReadPapers', 'OC_advocateSeeOtherReviews', 'OC_advocateSeeAuthors', 'OC_paperAdvocates', 'OC_editAcceptedOnly', 'OC_authorOneContact'); // Notification array $notifyAR = array( 'OC_notifyAuthorSubmit' => OCC_WORD_AUTHOR . ' makes a submission', 'OC_notifyAuthorEdit' => OCC_WORD_AUTHOR . ' updates (edits) submission', 'OC_notifyAuthorEmailPapers' => OCC_WORD_AUTHOR . ' requests own submission list emailed', 'OC_notifyAuthorUpload' => OCC_WORD_AUTHOR . ' uploads a file', 'OC_notifyAuthorReset' => OCC_WORD_AUTHOR . ' requests password reset', 'OC_notifyAuthorWithdraw' => OCC_WORD_AUTHOR . ' withdraws submission', 'OC_notifyReviewerSignup' => 'Committee member signs up for account', 'OC_notifyReviewerProfileUpdate' => 'Committee member updates profile', 'OC_notifyReviewerReset' => 'Committee member resets password', 'OC_notifyReviewerEmailUsername' => 'Committee member requests username emailed' ); // Fields that may be updated through this form $settingsAR = array_merge($yesNoFieldsAR, array_keys($notifyAR), array( 'OC_confNameFull', 'OC_confName', 'OC_confURL', 'OC_headerImage', 'OC_homePageNotice', 'OC_pcemail', 'OC_confirmmail', 'OC_keycode_reviewer', 'OC_reviewerSignUpNotice', 'OC_committeeFooter', 'OC_keycode_program', 'OC_programSignUpNotice', 'startid', 'OC_paperSubNote', 'OC_subConfirmNotice', 'OC_authorsMinDisplay', 'OC_authorsMax', 'OC_extar', 'OC_locales', 'OC_localeDefault', 'OC_timeZone' )); // Allow submission start ID to change? if (($air = ocsql_query("SELECT COUNT(`paperid`) AS `count` FROM `" . OCC_TABLE_PAPER . "`")) && ($ail = ocsql_fetch_assoc($air)) && ($ail['count'] == 0) && ($air = ocsql_query("SHOW TABLE STATUS WHERE `name`='" . OCC_TABLE_PAPER . "'")) && (ocsql_num_rows($air) == 1) && ($ail = ocsql_fetch_assoc($air)) ) { $startid = $ail['Auto_increment']; } // Submission? $e = array(); if (isset($_POST['submit']) && ($_POST['submit'] == "Save Settings")) { // Check for valid submission if (OCC_INSTALL_COMPLETE && !validToken('chair')) { warn('Invalid submission', $hdr, $hdrfn); } // Check input if (!isset($_POST['OC_confName']) || !preg_match("/\w/", $_POST['OC_confName'])) { $e[] = 'Event Short Name must include at least one alphanumeric character'; } if (!isset($_POST['OC_confNameFull']) || !preg_match("/\w/", $_POST['OC_confNameFull'])) { $e[] = 'Event Full Name must include at least one alphanumeric character'; } if (isset($_POST['OC_confURL']) && !empty($_POST['OC_confURL']) && !preg_match("/^(?:https?:\/\/|\/)/i", $_POST['OC_confURL'])) { $e[] = 'Event Web Address should start with http:// or https:// (if on another server) or / (for local server)'; } if (isset($_POST['OC_headerImage']) && !empty($_POST['OC_headerImage']) && !preg_match("/^(?:https?:\/\/|\/)/i", $_POST['OC_headerImage'])) { $e[] = 'Header Image should start with http:// or https:// (if on another server) or / (if on local server)'; } if (!isset($_POST['OC_pcemail'])) { $e[] = OCC_WORD_CHAIR . ' Email address invalid.'; } elseif (preg_match("/,/", $_POST['OC_pcemail'])) { // Multiple addresses $cmAR = explode(",", $_POST['OC_pcemail']); foreach ($cmAR as $cm) { $cm = trim($cm); if (!validEmail($cm)) { $e[] = OCC_WORD_CHAIR . ' Email does not appear to be valid'; break; } } } elseif (!validEmail($_POST['OC_pcemail'])) { // Single address $e[] = OCC_WORD_CHAIR . ' Email does not appear to be valid'; } if (!isset($_POST['OC_confirmmail'])) { $e[] = 'Notification Email address invalid. Try setting it the same as the ' . OCC_WORD_CHAIR . ' Email'; } elseif (preg_match("/,/", $_POST['OC_confirmmail'])) { // Multiple addresses $cmAR = explode(",", $_POST['OC_confirmmail']); foreach ($cmAR as $cm) { $cm = trim($cm); if (!validEmail($cm)) { $e[] = 'Notification Email does not appear to be valid'; break; } } } elseif (!validEmail($_POST['OC_confirmmail'])) { // Single address $e[] = 'Notification Email does not appear to be valid'; } if (isset($_POST['startid']) && ! preg_match("/^[1-9]\d*$/", $_POST['startid'])) { $e[] = 'Submission Starting ID invalid'; } if (isset($_POST['OC_authorsMinDisplay'])) { if (! preg_match("/^[1-9][0-9]?$/", $_POST['OC_authorsMinDisplay'])) { $e[] = 'Min Authors to Display must be a number between 1-99'; } elseif (isset($_POST['OC_authorsMax']) && ($_POST['OC_authorsMinDisplay'] > $_POST['OC_authorsMax'] )) { $e[] = 'Min Authors must be less than or equal to the Max Authors Allowed value'; } } if (isset($_POST['OC_authorsMax']) && ! preg_match("/^[1-9][0-9]?$/", $_POST['OC_authorsMax'])) { $e[] = 'Max Authors Allowed must be a number between 1-99'; } if (!isset($_POST['OC_extar']) || count($_POST['OC_extar']) == 0) { $e[] = 'Select at least one file format'; } else { // check formats are valid foreach ($_POST['OC_extar'] as $fmat) { if (!isset($OC_formatAR[$fmat])) { $e[] = 'Invalid format selected'; continue; } } } $notifyKeysAR = array_keys($notifyAR); foreach ($notifyKeysAR as $nk) { if (!isset($_POST[$nk])) { $_POST[$nk] = 0; } elseif (!preg_match("/^[01]$/", $_POST[$nk])) { $e[] = 'Invalid notification selection'; continue; } } foreach ($yesNoFieldsAR as $ynf) { if (!isset($_POST[$ynf]) || !isset($yesNoAR[$_POST[$ynf]])) { $e[] = 'Invalid option (' . safeHTMLstr($ynf) . ')'; } } if (!isset($_POST['OC_timeZone']) || !in_array($_POST['OC_timeZone'], $OC_zoneAR)) { $e[] = 'Time Zone is invalid'; } if (!isset($_POST['OC_locales']) || empty($_POST['OC_locales']) || !is_array($_POST['OC_locales'])) { $e[] = 'At least one language must be selected'; $_POST['OC_locales'] = array(); } else { if (!isset($_POST['OC_localeDefault']) || !isset($OC_languageAR[$_POST['OC_localeDefault']])) { $e[] = 'Default Language is invalid'; } elseif (!in_array($_POST['OC_localeDefault'], $_POST['OC_locales'])) { $_POST['OC_locales'][] = $_POST['OC_localeDefault']; // auto-select default language } foreach ($_POST['OC_locales'] as $locale) { if (!isset($OC_languageAR[$locale])) { $e[] = 'Invalid locale selected: ' . safeHTMLstr($locale); } } } if (empty($e)) { // Update form's OC_ fields $_POST['OC_extar'] = implode(',', $_POST['OC_extar']); $_POST['OC_locales'] = implode(',', $_POST['OC_locales']); foreach (array_keys($_POST) as $p) { if (preg_match("/^OC_[\w-]+$/", $p) && in_array($p, $settingsAR) && isset($OC_configAR[$p]) && ($OC_configAR[$p] != $_POST[$p])) { updateConfigSetting($p, $_POST[$p], 'OC'); $OC_configAR[$p] = $_POST[$p]; } } // Auto increment? if (isset($startid) && ($startid != $_POST['startid'])) { ocsql_query("ALTER TABLE `" . OCC_TABLE_PAPER . "` AUTO_INCREMENT=" . (int) $_POST['startid']); } // if install, redirect if (isset($_REQUEST['install']) && ($_REQUEST['install'] == 1)) { header("Location: set_topics.php?install=1"); exit; } print 'Configuration successfully updated
'; // reset special vars to array $_POST['OC_extar'] = explode(',', $OC_configAR['OC_extar']); $_POST['OC_locales'] = explode(',', $OC_configAR['OC_locales']); } } else { // not submit; init POST with config values $_POST = $OC_configAR; $_POST['OC_locales'] = explode(',', $OC_configAR['OC_locales']); // Allow submission auto increment to be set? if (isset($startid)) { $_POST['startid'] = $startid; } } if ((!OCC_INSTALL_COMPLETE) && isset($_REQUEST['install']) && ($_REQUEST['install'] == 1)) { printHeader($hdr,$hdrfn); print 'Step 3 of 5: Tailor Configuration Settings
'; } if (!empty($e)) { print '