), 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 .= '
'; $field .= generateRadioOptions($usefid, $fAR['values'], varValue($usefid, $fVals), $fAR['usekey'], $disabled, (isset($fAR['delimiter']) ? $fAR['delimiter'] : $GLOBALS['oc_defaultDelimiter'])); $field .= '
'; break; case 'checkbox': $field .= '
'; if (isset($fVals[$usefid])) { if (!is_array($fVals[$usefid])) { $vals = explode(',', $fVals[$usefid]); } else { $vals = $fVals[$usefid]; } } else { $vals = array(); } $field .= generateCheckboxOptions($usefid, $fAR['values'], $vals, $fAR['usekey'], $disabled, (isset($fAR['delimiter']) ? $fAR['delimiter'] : $GLOBALS['oc_defaultDelimiter'])); $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 '
' . safeHTMLstr($fieldsetAR['fieldset']) . ''; if (!empty($fieldsetAR['note'])) { print '
' . $fieldsetAR['note'] . '
'; } if ($fieldset == 'fs_authors') { // setup dynamic add authors $authorFields = '' . oc_('Author') . ' [:authornum:]'; $blankAR = array(); foreach ($fieldsetAR['fields'] as $fieldID) { if (!isset($fieldsAR[$fieldID])) { continue; } $authorFields .= oc_genField($fieldID, $fieldsAR[$fieldID], $blankAR, '[:authornum:]'); } if (preg_match("/edit\.p/", $_SERVER['PHP_SELF'])) { $authorFields .= '
?X+
'; } print ' '; // display author fieldsets print '
'; for ($i=1; $i<=$GLOBALS['oc_authorNum']; $i++) { print '
' . oc_('Author') . ' ' . $i . ''; foreach ($fieldsetAR['fields'] as $fieldID) { if (!isset($fieldsAR[$fieldID])) { continue; } print oc_genField($fieldID, $fieldsAR[$fieldID], $fVals, $i); } if (preg_match("/edit\.p/", $_SERVER['PHP_SELF'])) { print '
?X+
'; } print '
'; } // display extra author link if ($i <= $GLOBALS['OC_configAR']['OC_authorsMax']) { print ' '; } print '
'; } else { // not authors fieldset foreach ($fieldsetAR['fields'] as $fieldID) { if (!isset($fieldsAR[$fieldID])) { continue; } print oc_genField($fieldID, $fieldsAR[$fieldID], $fVals); } } 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 '\n"; } print "
' . safeHTMLstr($fieldsAR[$fieldID]['short']) . ':'; if ($fieldID == 'email') { $e = oc_getFieldValue($fieldsAR, $fVals, $fieldID, $fieldID . $i); print '' . safeHTMLstr($e) . ''; } else { print nl2br(safeHTMLstr(oc_getFieldValue($fieldsAR, $fVals, $fieldID, $fieldID . $i))); } print "
\n"; } } else { // not authors fieldset foreach ($fieldsetAR['fields'] as $fieldID) { if (!isset($fieldsAR[$fieldID])) { continue; } if (preg_match("/^(?:file|format)/", $fieldID)) { continue; } // skip file/format fields print '' . safeHTMLstr($fieldsAR[$fieldID]['short']) . ':' . nl2br(safeHTMLstr(trim(oc_getFieldValue($fieldsAR, $fVals, $fieldID)))) . "\n"; } } } } # this function should not be used for checkbox fields function oc_checkField($fieldID, &$fieldsAR, &$saveFieldAR, &$err, $checkArrayValue=false) { if (oc_fieldEnabled($fieldID, $fieldsAR)) { if (isset($_POST[$fieldID]) && !empty($_POST[$fieldID])) { if ($checkArrayValue && is_array($fieldsAR[$fieldID]['values'])) { if ($fieldsAR[$fieldID]['usekey']) { if (isset($fieldsAR[$fieldID]['values'][$_POST[$fieldID]])) { $saveFieldAR[$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID])) . "'"; } } elseif (in_array($_POST[$fieldID], $fieldsAR[$fieldID]['values'])) { $saveFieldAR[$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID])) . "'"; } } else { $saveFieldAR[$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID])) . "'"; } } if (!isset($saveFieldAR[$fieldID])) { if ( isset($fieldsAR[$fieldID]['required']) && $fieldsAR[$fieldID]['required'] ) { $err .= '
  • ' . sprintf(oc_('%s field is required'), oc_($fieldsAR[$fieldID]['short'])) . '
  • '; } else { $saveFieldAR[$fieldID] = "''"; } } } } # this function should not be used for checkbox fields function oc_checkAuthorField($fieldID, $authorID, &$fieldsAR, &$saveFieldAR, &$err, $checkArrayValue=false) { if (oc_fieldEnabled($fieldID, $fieldsAR)) { if (isset($_POST[$fieldID . $authorID]) && !empty($_POST[$fieldID . $authorID])) { if ($checkArrayValue && is_array($fieldsAR[$fieldID]['values'])) { if ($fieldsAR[$fieldID]['usekey']) { if (isset($fieldsAR[$fieldID]['values'][$_POST[$fieldID . $authorID]])) { $saveFieldAR[$authorID][$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID . $authorID])) . "'"; } } elseif (in_array($_POST[$fieldID . $authorID], $fieldsAR[$fieldID]['values'])) { $saveFieldAR[$authorID][$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID . $authorID])) . "'"; } } else { $saveFieldAR[$authorID][$fieldID] = "'" . safeSQLstr(trim($_POST[$fieldID . $authorID])) . "'"; } } if (!isset($saveFieldAR[$authorID][$fieldID])) { if ( isset($fieldsAR[$fieldID]['required']) && $fieldsAR[$fieldID]['required'] ) { //T: %1$d = author number, %2$s = field name $err .= '
  • ' . sprintf(oc_('Author %1$d %2$s field is required'), $authorID, oc_($fieldsAR[$fieldID]['short'])) . '
  • '; } else { $saveFieldAR[$authorID][$fieldID] = "''"; } } } }