), or next field
enabled: TRUE (default) - field editable; FALSE - not editable (HTML "disabled" attribute included)
required: TRUE - field required; FALSE (default) - field not required (may not be used in all instances)
NOTE: All fieldset and field IDs need to be unique. Prefix fieldset IDs with fs_ for OC, fs_[MOD]_ for modules
NOTE: Fieldset fs_authors, and fields named "file" or starting with "password", have special handling
*/
$oc_defaultDelimiter = ' ';
$oc_defaultFieldSize = '60';
if (!isset($GLOBALS['oc_authorNum'])) {
$GLOBALS['oc_authorNum'] = $GLOBALS['OC_configAR']['OC_authorsMax'];
}
function oc_fieldEnabled($fieldID, &$fieldsAR) {
if (!isset($fieldsAR[$fieldID]['enabled']) || $fieldsAR[$fieldID]['enabled']) {
return(TRUE);
} else {
return(FALSE);
}
}
function oc_genField(&$fid, &$fAR, &$fVals, $fidxtra='') {
$usefid = $fid . $fidxtra;
$field = '';
$field .= '
';
if (isset($fAR['enabled']) && !$fAR['enabled']) {
$disabled = 'disabled ';
} else {
$disabled = '';
}
if (isset($fAR['required']) && $fAR['required']) {
$required = $GLOBALS['OC_configAR']['OC_requiredField'];
} else {
$required = '';
}
switch ($fAR['type']) {
case 'plain':
$field .= '' . $fAR['values'];
break;
case 'text':
$field .= '';
break;
case 'textarea':
$field .= '';
if (isset($fAR['maxsize']) && ($fAR['maxsize'] > 0)) {
$field .= '
';
}
break;
case 'select':
$field .= '';
break;
case 'radio':
$field .= '';
break;
case 'checkbox':
$field .= '';
break;
case 'country': // DEPRECATED - use select with usekey=true and values=$OC_countryAR
$field .= '';
break;
case 'password':
$field .= '';
break;
case 'file':
$field .= '';
break;
default:
err('There is an error with field ID ' . $usefid);
}
if (!empty($fAR['note']) && ($fAR['type'] != 'plain')) {
$field .= '
' . $fAR['note'] . '
';
}
$field .= '
';
return($field);
}
function oc_displayFields(&$fieldsAR, &$fVals=array()) {
foreach ($fieldsAR as $fieldID => $fieldAR) {
print '
' . oc_genField($fieldID, $fieldAR, $fVals) . '
';
}
}
function oc_displayFieldSet(&$fsAR, &$fieldsAR, &$fVals=array()) {
foreach ($fsAR as $fieldset => $fieldsetAR) {
if (count($fieldsetAR['fields']) == 0) { continue; } // skip fieldset if no fields included
print '';
}
}
function oc_getFieldValue(&$fieldsAR, &$fVals, $fieldID, $valID='') {
if (empty($valID)) {
$valID = $fieldID;
}
if (!isset($fVals[$valID])) {
return('');
} elseif (is_array($fVals[$valID])) {
if (count($fVals[$valID]) == 1) {
if (is_array($fieldsAR[$fieldID]['values']) && $fieldsAR[$fieldID]['usekey']) {
return($fieldsAR[$fieldID]['values'][$fVals[$valID][0]]);
} else {
return($fVals[$valID][0]);
}
} else {
$fret = "\n";
foreach ($fVals[$valID] as $f) {
if (is_array($fieldsAR[$fieldID]['values']) && $fieldsAR[$fieldID]['usekey']) {
$fret .= ' - ' . $fieldsAR[$fieldID]['values'][$f] . "\n";
} else {
$fret .= ' - ' . $f . "\n";
}
}
}
return($fret);
} elseif (isset($fieldsAR[$fieldID]['values']) && is_array($fieldsAR[$fieldID]['values'])
&& isset($fieldsAR[$fieldID]['usekey']) && $fieldsAR[$fieldID]['usekey']
&& !empty($fVals[$valID])
&& isset($fieldsAR[$fieldID]['values'][$fVals[$valID]])
) {
return($fieldsAR[$fieldID]['values'][$fVals[$valID]]);
} else {
return(varValue($valID, $fVals));
}
}
function oc_genFieldMessage(&$fsAR, &$fieldsAR, &$fVals=array()) {
$fmsg = '';
foreach ($fsAR as $fieldset => $fieldsetAR) {
if ($fieldset == 'fs_authors') {
for ($i=1; $i<=$GLOBALS['oc_authorNum']; $i++) {
if (empty($fVals['name_last' . $i])) { continue; }
$fmsg .= 'Author ' . $i . ":\n";
foreach ($fieldsetAR['fields'] as $fieldID) {
$fmsg .= ' ' . $fieldsAR[$fieldID]['short'] . ": " . oc_getFieldValue($fieldsAR, $fVals, $fieldID, $fieldID . $i) . "\n";
}
$fmsg .= "\n\n";
}
} else {
foreach ($fieldsetAR['fields'] as $fieldID) {
if (preg_match("/^password/i", $fieldID) || ($fieldID == 'file') || empty($fieldsAR[$fieldID]['name'])) { continue; }
$fmsg .= $fieldsAR[$fieldID]['short'] . ': ' . oc_getFieldValue($fieldsAR, $fVals, $fieldID) . "\n\n";
}
}
}
return($fmsg);
}
function oc_showFieldSet(&$fsAR, &$fieldsAR, &$fVals) {
foreach ($fsAR as $fieldset => $fieldsetAR) {
if (count($fieldsetAR['fields']) == 0) { continue; } // skip fieldset if no fields included
if (preg_match("/^fs_passwords$/i", $fieldset)) { continue; } // skip password fs
if ($fieldset == 'fs_authors') { // display author fields
for ($i=1; $i<=$GLOBALS['oc_authorNum']; $i++) {
if (!isset($fVals['name_last' . $i])) { continue; }
print '
Author ' . $i . ':
';
foreach ($fieldsetAR['fields'] as $fieldID) {
if (!isset($fieldsAR[$fieldID])) { continue; }
print '