function paperOptions($id = null) { global $Conf; if ($Conf->setting("paperOption") <= 0 || $Conf->sversion <= 0) { return array(); } $svar = defval($_SESSION, "paperOption", null); if (!$svar || !is_array($svar) || count($svar) < 3 || $svar[2] < 2 || $svar[0] < $Conf->setting("paperOption")) { $opt = array(); $result = $Conf->q("select * from OptionType order by sortOrder, optionName"); $order = 0; while ($row = edb_orow($result)) { // begin backwards compatibility to old schema versions if (!isset($row->optionValues)) { $row->optionValues = ""; } if (!isset($row->type) && $row->optionValues == "i") { $row->type = PaperOption::T_NUMERIC; } else { if (!isset($row->type)) { $row->type = $row->optionValues ? PaperOption::T_SELECTOR : PaperOption::T_CHECKBOX; } } // end backwards compatibility to old schema versions $row->optionAbbrev = preg_replace("/-+\$/", "", preg_replace("/[^a-z0-9_]+/", "-", strtolower($row->optionName))); if ($row->optionAbbrev == "paper" || $row->optionAbbrev == "submission" || $row->optionAbbrev == "final" || ctype_digit($row->optionAbbrev)) { $row->optionAbbrev = "opt" . $row->optionId; } $row->sortOrder = $order++; if (!isset($row->displayType)) { $row->displayType = PaperOption::DT_NORMAL; } if ($row->type == PaperOption::T_FINALPDF) { $row->displayType = PaperOption::DT_SUBMISSION; } $row->isDocument = PaperOption::type_is_document($row->type); $row->isFinal = PaperOption::type_is_final($row->type); $opt[$row->optionId] = $row; } $_SESSION["paperOption"] = $svar = array($Conf->setting("paperOption"), $opt, 2); } return $id ? defval($svar[1], $id, null) : $svar[1]; }