private function _search_has($word, &$qt, $quoted) { global $Conf; $lword = strtolower($word); $lword = get(self::$_keywords, $lword) ?: $lword; if ($lword === "paper" || $lword === "sub" || $lword === "submission") { $qt[] = new SearchTerm("pf", 0, array("paperStorageId", "!=0")); } else { if ($lword === "final" || $lword === "finalcopy") { $qt[] = new SearchTerm("pf", 0, array("finalPaperStorageId", "!=0")); } else { if ($lword === "ab") { $qt[] = new SearchTerm("pf", 0, array("abstract", "!=''")); } else { if (preg_match('/\\A(?:(?:draft-?)?\\w*resp(?:onse)?|\\w*resp(?:onse)(?:-?draft)?|cmt|aucmt|anycmt)\\z/', $lword)) { $this->_search_comment(">0", $lword, $qt, $quoted); } else { if ($lword === "manager" || $lword === "admin" || $lword === "administrator") { $qt[] = new SearchTerm("pf", 0, array("managerContactId", "!=0")); } else { if (preg_match('/\\A[cip]?(?:re|pri|sec|ext)\\z/', $lword)) { $this->_search_reviewer(">0", $lword, $qt); } else { if ($lword === "lead") { $qt[] = new SearchTerm("pf", self::F_XVIEW, array("leadContactId", "!=0")); } else { if ($lword === "shep" || $lword === "shepherd") { $qt[] = new SearchTerm("pf", self::F_XVIEW, array("shepherdContactId", "!=0")); } else { if ($lword === "dec" || $lword === "decision") { $this->_search_status("yes", $qt, false, false); } else { if (preg_match('/\\A[\\w-]+\\z/', $lword) && $this->_search_options("{$lword}:yes", $qt, false)) { /* OK */ } else { $x = array("“paper”", "“final”", "“abstract”", "“comment”", "“aucomment”", "“re”", "“extre”"); foreach ($Conf->resp_round_list() as $i => $rname) { if (!in_array("“response”", $x)) { array_push($x, "“response”", "“draftresponse”"); } if ($i) { $x[] = "“{$rname}response”"; } } foreach (PaperOption::option_json_list() as $o) { array_push($x, "“" . htmlspecialchars($o->abbr) . "”"); } $this->warn("Unknown “has:” search. I understand " . commajoin($x) . "."); $qt[] = new SearchTerm("f"); } } } } } } } } } } }