public function activate() { global $Conf, $Opt, $Now; $this->activated_ = true; $trueuser = get($_SESSION, "trueuser"); $truecontact = null; // Handle actas requests $actas = req("actas"); if ($actas && $trueuser) { if (is_numeric($actas)) { $actasemail = self::email_by_id($actas); } else { if ($actas === "admin") { $actasemail = $trueuser->email; } else { $actasemail = $actas; } } unset($_GET["actas"], $_POST["actas"], $_REQUEST["actas"]); if ($actasemail && strcasecmp($actasemail, $this->email) != 0 && (strcasecmp($actasemail, $trueuser->email) == 0 || $this->privChair || ($truecontact = self::find_by_email($trueuser->email)) && $truecontact->privChair) && ($actascontact = self::find_by_email($actasemail))) { if ($actascontact->email !== $trueuser->email) { hoturl_defaults(array("actas" => $actascontact->email)); $_SESSION["last_actas"] = $actascontact->email; } if ($this->privChair || $truecontact && $truecontact->privChair) { self::$trueuser_privChair = $actascontact; } return $actascontact->activate(); } } // Handle invalidate-caches requests if (req("invalidatecaches") && $this->privChair) { unset($_GET["invalidatecaches"], $_POST["invalidatecaches"], $_REQUEST["invalidatecaches"]); $Conf->invalidateCaches(); } // If validatorContact is set, use it if ($this->contactId <= 0 && get($Opt, "validatorContact") && req("validator")) { unset($_GET["validator"], $_POST["validator"], $_REQUEST["validator"]); if ($newc = self::find_by_email($Opt["validatorContact"])) { $this->activated_ = false; return $newc->activate(); } } // Add capabilities from session and request if (!get($Opt, "disableCapabilities")) { if ($caps = $Conf->session("capabilities")) { $this->capabilities = $caps; ++self::$rights_version; } if (isset($_REQUEST["cap"]) || isset($_REQUEST["testcap"])) { $this->activate_capabilities(); } } // Add review tokens from session if ($rtokens = $Conf->session("rev_tokens")) { $this->review_tokens_ = $rtokens; ++self::$rights_version; } // Maybe auto-create a user if ($trueuser && $this->update_trueuser(false) && !$this->has_database_account() && $Conf->session("trueuser_author_check", 0) + 600 < $Now) { $Conf->save_session("trueuser_author_check", $Now); $aupapers = self::email_authored_papers($trueuser->email, $trueuser); if (count($aupapers)) { return $this->activate_database_account(); } } // Maybe set up the shared contacts database if (get($Opt, "contactdb_dsn") && $this->has_database_account() && $Conf->session("contactdb_roles", 0) != $this->all_roles()) { if ($this->contactdb_update()) { $Conf->save_session("contactdb_roles", $this->all_roles()); } } // Check forceShow self::$active_forceShow = $this->privChair && req("forceShow"); return $this; }
public function activate() { global $Now; $this->activated_ = true; $trueuser = get($_SESSION, "trueuser"); $truecontact = null; // Handle actas requests $actas = req("actas"); if ($actas && $trueuser) { if (is_numeric($actas)) { $acct = $this->conf->user_by_query("contactId=? or huid=? order by contactId=? desc limit 1", [$actas, $actas, $actas]); $actasemail = $acct ? $acct->email : null; } else { if ($actas === "admin") { $actasemail = $trueuser->email; } else { $actasemail = $actas; } } unset($_GET["actas"], $_POST["actas"], $_REQUEST["actas"]); if ($actasemail && strcasecmp($actasemail, $this->email) != 0 && (strcasecmp($actasemail, $trueuser->email) == 0 || $this->privChair || ($truecontact = $this->conf->user_by_email($trueuser->email)) && $truecontact->privChair) && ($actascontact = $this->conf->user_by_whatever($actasemail))) { $this->conf->save_session("l", null); if ($actascontact->email !== $trueuser->email) { hoturl_defaults(array("actas" => $actascontact->email)); $_SESSION["last_actas"] = $actascontact->email; } if ($this->privChair || $truecontact && $truecontact->privChair) { self::$trueuser_privChair = $actascontact; } return $actascontact->activate(); } } // Handle invalidate-caches requests if (req("invalidatecaches") && $this->privChair) { unset($_GET["invalidatecaches"], $_POST["invalidatecaches"], $_REQUEST["invalidatecaches"]); $this->conf->invalidate_caches(); } // If validatorContact is set, use it if ($this->contactId <= 0 && req("validator") && ($vc = $this->conf->opt("validatorContact"))) { unset($_GET["validator"], $_POST["validator"], $_REQUEST["validator"]); if ($newc = $this->conf->user_by_email($vc)) { $this->activated_ = false; return $newc->activate(); } } // Add capabilities from session and request if (!$this->conf->opt("disableCapabilities")) { if ($caps = $this->conf->session("capabilities")) { $this->capabilities = $caps; ++self::$rights_version; } if (isset($_REQUEST["cap"]) || isset($_REQUEST["testcap"])) { $this->activate_capabilities(); } } // Maybe set up the shared contacts database if ($this->conf->opt("contactdb_dsn") && $this->has_database_account() && $this->conf->session("contactdb_roles", 0) != $this->all_roles()) { if ($this->contactdb_update()) { $this->conf->save_session("contactdb_roles", $this->all_roles()); } } // Check forceShow self::$active_forceShow = $this->privChair && req("forceShow"); return $this; }
private function header_head($title) { global $Me, $ConfSitePATH, $CurrentList; echo "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n<meta http-equiv=\"Content-Language\" content=\"en\" />\n<meta name=\"google\" content=\"notranslate\" />\n"; if (strstr($title, "<") !== false) { $title = preg_replace("/<([^>\"']|'[^']*'|\"[^\"]*\")*>/", "", $title); } echo $this->opt("fontScript", ""); echo $this->make_css_link("stylesheets/style.css"), "\n"; if ($this->opt("mobileStylesheet")) { echo '<meta name="viewport" content="width=device-width, initial-scale=1">', "\n"; echo $this->make_css_link("stylesheets/mobile.css", "screen and (max-width: 768px)"), "\n"; } foreach (mkarray($this->opt("stylesheets", [])) as $css) { echo $this->make_css_link($css), "\n"; } // favicon $favicon = $this->opt("favicon"); if ($favicon) { if (strpos($favicon, "://") === false && $favicon[0] != "/") { if ($this->opt["assetsUrl"] && substr($favicon, 0, 7) === "images/") { $favicon = $this->opt["assetsUrl"] . $favicon; } else { $favicon = Navigation::siteurl() . $favicon; } } if (substr($favicon, -4) == ".png") { echo "<link rel=\"icon\" type=\"image/png\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".ico") { echo "<link rel=\"shortcut icon\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".gif") { echo "<link rel=\"icon\" type=\"image/gif\" href=\"{$favicon}\" />\n"; } else { echo "<link rel=\"icon\" href=\"{$favicon}\" />\n"; } } } } // jQuery if (isset($this->opt["jqueryUrl"])) { $jquery = $this->opt["jqueryUrl"]; } else { if ($this->opt("jqueryCdn")) { $jquery = "//code.jquery.com/jquery-1.12.3.min.js"; } else { $jquery = "scripts/jquery-1.12.3.min.js"; } } Ht::stash_html($this->make_script_file($jquery, true) . "\n"); Ht::stash_html($this->make_script_file("scripts/jquery.color-2.1.2.min.js", true) . "\n"); Ht::stash_html($this->make_script_file("scripts/jquery.flot.min.js", true) . "\n"); //Ht::stash_html($this->make_script_file("scripts/ZeroClipboard.min.js", true) . "\n"); // Javascript settings to set before script.js Ht::stash_script("siteurl=" . json_encode(Navigation::siteurl()) . ";siteurl_suffix=\"" . Navigation::php_suffix() . "\""); if (session_id() !== "") { Ht::stash_script("siteurl_postvalue=\"" . post_value() . "\""); } if (@$CurrentList && ($list = SessionList::lookup($CurrentList))) { Ht::stash_script("hotcrp_list={num:{$CurrentList},id:\"" . addcslashes($list->listid, "\n\r\\\"/") . "\"}"); } if ($urldefaults = hoturl_defaults()) { Ht::stash_script("siteurl_defaults=" . json_encode($urldefaults) . ";"); } Ht::stash_script("assetsurl=" . json_encode($this->opt["assetsUrl"]) . ";"); $huser = (object) array(); if ($Me && $Me->email) { $huser->email = $Me->email; } if ($Me && $Me->is_pclike()) { $huser->is_pclike = true; } Ht::stash_script("hotcrp_user="******"ZeroClipboard.setDefaults({moviePath:\"" . Navigation::siteurl() . "cacheable" . Navigation::php_suffix() . "?file=scripts/ZeroClipboard.swf&mtime=" . filemtime("$ConfSitePATH/scripts/ZeroClipboard.swf") . "\"})"); // script.js if (!$this->opt("noDefaultScript")) { Ht::stash_html($this->make_script_file("scripts/script.js") . "\n"); } echo Ht::unstash(); echo "<title>"; if ($title) { echo $title, " - "; } echo htmlspecialchars($this->short_name), "</title>\n</head>\n"; }
private function header_head($title) { global $Me, $ConfSitePATH, $Opt; // load session list and clear its cookie $list = SessionList::active(); SessionList::set_requested(0); echo "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"google\" content=\"notranslate\" />\n"; if (isset($Opt["fontScript"])) { echo $Opt["fontScript"]; } echo $this->make_css_link("stylesheets/style.css"), "\n"; if (get($Opt, "mobileStylesheet")) { echo '<meta name="viewport" content="width=device-width, initial-scale=1">', "\n"; echo $this->make_css_link("stylesheets/mobile.css", "screen and (max-width: 768px)"), "\n"; } if (isset($Opt["stylesheets"])) { foreach (mkarray($Opt["stylesheets"]) as $css) { echo $this->make_css_link($css), "\n"; } } // favicon if ($favicon = defval($Opt, "favicon", "images/review24.png")) { if (strpos($favicon, "://") === false && $favicon[0] != "/") { if (get($Opt, "assetsUrl") && substr($favicon, 0, 7) === "images/") { $favicon = $Opt["assetsUrl"] . $favicon; } else { $favicon = Navigation::siteurl() . $favicon; } } if (substr($favicon, -4) == ".png") { echo "<link rel=\"icon\" type=\"image/png\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".ico") { echo "<link rel=\"shortcut icon\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".gif") { echo "<link rel=\"icon\" type=\"image/gif\" href=\"{$favicon}\" />\n"; } else { echo "<link rel=\"icon\" href=\"{$favicon}\" />\n"; } } } } // title echo "<title>"; if ($title) { $title = preg_replace("/<([^>\"']|'[^']*'|\"[^\"]*\")*>/", "", $title); $title = preg_replace(",(?: | | )+,", " ", $title); $title = str_replace("∕", "-", $title); } if ($title) { echo $title, " - "; } echo htmlspecialchars($Opt["shortName"]), "</title>\n</head>\n"; // jQuery $stash = Ht::take_stash(); if (isset($Opt["jqueryUrl"])) { $jquery = $Opt["jqueryUrl"]; } else { if (get($Opt, "jqueryCdn")) { $jquery = "//code.jquery.com/jquery-1.12.3.min.js"; } else { $jquery = "scripts/jquery-1.12.3.min.js"; } } Ht::stash_html($this->make_script_file($jquery, true) . "\n"); // Javascript settings to set before script.js Ht::stash_script("siteurl=" . json_encode(Navigation::siteurl()) . ";siteurl_suffix=\"" . Navigation::php_suffix() . "\""); if (session_id() !== "") { Ht::stash_script("siteurl_postvalue=\"" . post_value() . "\""); } if ($list) { Ht::stash_script("hotcrp_list=" . json_encode(["num" => $list->listno, "id" => $list->listid]) . ";"); } if ($urldefaults = hoturl_defaults()) { Ht::stash_script("siteurl_defaults=" . json_encode($urldefaults) . ";"); } Ht::stash_script("assetsurl=" . json_encode($Opt["assetsUrl"]) . ";"); $huser = (object) array(); if ($Me && $Me->email) { $huser->email = $Me->email; } if ($Me && $Me->is_pclike()) { $huser->is_pclike = true; } if ($Me && $Me->has_database_account()) { $huser->cid = $Me->contactId; } Ht::stash_script("hotcrp_user="******";"); $pid = get($_REQUEST, "paperId"); $pid = $pid && ctype_digit($pid) ? (int) $pid : 0; if (!$pid && $this->paper) { $pid = $this->paper->paperId; } if ($pid) { Ht::stash_script("hotcrp_paperid={$pid}"); } if ($pid && $Me && $Me->is_admin_force()) { Ht::stash_script("hotcrp_want_override_conflict=true"); } // script.js if (!get($Opt, "noDefaultScript")) { Ht::stash_html($this->make_script_file("scripts/script.js") . "\n"); } // other scripts if (get($Opt, "scripts")) { foreach ($Opt["scripts"] as $file) { Ht::stash_html($this->make_script_file($file) . "\n"); } } if ($stash) { Ht::stash_html($stash); } }
private function header_head($title) { global $Me, $ConfSiteBase, $ConfSiteSuffix, $ConfSitePATH, $Opt, $CurrentList; echo "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\n<meta http-equiv=\"Content-Language\" content=\"en\" />\n<meta name=\"google\" content=\"notranslate\" />\n"; if (strstr($title, "<") !== false) { $title = preg_replace("/<([^>\"']|'[^']*'|\"[^\"]*\")*>/", "", $title); } if (isset($Opt["fontScript"])) { echo $Opt["fontScript"]; } echo $this->make_css_link("stylesheets/style.css"), "\n"; if (isset($Opt["stylesheets"])) { foreach ($Opt["stylesheets"] as $css) { echo $this->make_css_link($css), "\n"; } } // favicon if ($favicon = defval($Opt, "favicon")) { if (strpos($favicon, "://") === false && $favicon[0] != "/") { if (@$Opt["assetsUrl"] && substr($favicon, 0, 7) === "images/") { $favicon = $Opt["assetsUrl"] . $favicon; } else { $favicon = $ConfSiteBase . $favicon; } } if (substr($favicon, -4) == ".png") { echo "<link rel=\"icon\" type=\"image/png\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".ico") { echo "<link rel=\"shortcut icon\" href=\"{$favicon}\" />\n"; } else { if (substr($favicon, -4) == ".gif") { echo "<link rel=\"icon\" type=\"image/gif\" href=\"{$favicon}\" />\n"; } else { echo "<link rel=\"icon\" href=\"{$favicon}\" />\n"; } } } } // jQuery if (isset($Opt["jqueryUrl"])) { $jquery = $Opt["jqueryUrl"]; } else { if (@$Opt["jqueryCdn"]) { $jquery = "//code.jquery.com/jquery-1.11.3.min.js"; } else { $jquery = "scripts/jquery-1.11.3.min.js"; } } $this->scriptStuff = $this->make_script_file($jquery, true) . "\n"; $this->scriptStuff .= $this->make_script_file("scripts/jquery.color-2.1.2.min.js", true) . "\n"; $this->scriptStuff .= $this->make_script_file("scripts/jquery.flot.min.js", true) . "\n"; //$this->scriptStuff .= $this->make_script_file("scripts/ZeroClipboard.min.js", true) . "\n"; // Javascript settings to set before script.js $this->scriptStuff .= "<script>siteurl=\"{$ConfSiteBase}\";siteurl_suffix=\"{$ConfSiteSuffix}\""; if (session_id() !== "") { $this->scriptStuff .= ";siteurl_postvalue=\"" . post_value() . "\""; } if (@$CurrentList && ($list = SessionList::lookup($CurrentList))) { $this->scriptStuff .= ";hotcrp_list={num:{$CurrentList},id:\"" . addcslashes($list->listid, "\n\r\\\"/") . "\"}"; } if ($urldefaults = hoturl_defaults()) { $this->scriptStuff .= ";siteurl_defaults=" . json_encode($urldefaults); } $huser = (object) array(); if ($Me && $Me->email) { $huser->email = $Me->email; } if ($Me && $Me->is_pclike()) { $huser->is_pclike = true; } $this->scriptStuff .= ";hotcrp_user="******"paperId"]; $pid = $pid && ctype_digit($pid) ? (int) $pid : 0; if ($pid) { $this->scriptStuff .= ";hotcrp_paperid={$pid}"; } if ($pid && $Me && $Me->privChair && ($forceShow = @$_REQUEST["forceShow"]) && $forceShow != "0") { $this->scriptStuff .= ";hotcrp_want_override_conflict=true"; } //$this->scriptStuff .= ";ZeroClipboard.setDefaults({moviePath:\"${ConfSiteBase}cacheable$ConfSiteSuffix?file=scripts/ZeroClipboard.swf&mtime=" . filemtime("$ConfSitePATH/scripts/ZeroClipboard.swf") . "\"})"; $this->scriptStuff .= "</script>\n"; // script.js $this->scriptStuff .= $this->make_script_file("scripts/script.js") . "\n"; echo $this->scriptStuff; $this->scriptStuff = ""; echo "<title>", $title, " - ", htmlspecialchars($Opt["shortName"]), "</title>\n</head>\n"; }