public static function work(&$controllerContext, &$viewContext) { $viewContext->viewName = null; unset($_SESSION['logged-in']); $url = AdminControllerLoginModule::url(); HttpHeadersHelper::setCurrentHeader('Location', $url); }
public static function work(&$controllerContext, &$viewContext) { HttpHeadersHelper::setCurrentHeader('Content-Type', 'text/html'); assert(!empty($controllerContext->module)); $module = $controllerContext->module; $module::work($controllerContext, $viewContext); }
public static function benchmark($message = 'ping') { $now = microtime(true); $delta = $now - self::$prev; $deltaBig = $now - self::$start; self::$prev = $now; HttpHeadersHelper::setCurrentHeader('Content-Type', 'text/plain'); printf('%.05f/%.05f: %s' . PHP_EOL, $delta, $deltaBig, $message); }
public static function preWork(&$controllerContext, &$viewContext) { $controllerContext->cache->setPrefix($controllerContext->userName); if (BanHelper::getUserBanState($controllerContext->userName) == BanHelper::USER_BAN_TOTAL) { $controllerContext->cache->bypass(true); $viewContext->userName = $controllerContext->userName; $viewContext->viewName = 'error-user-blocked'; $viewContext->meta->title = 'User blocked — ' . Config::$title; return; } $module = $controllerContext->module; HttpHeadersHelper::setCurrentHeader('Content-Type', $module::getContentType()); $viewContext->media = $controllerContext->media; $viewContext->module = $controllerContext->module; $viewContext->meta->noIndex = true; $viewContext->contentType = $module::getContentType(); if ($viewContext->contentType != 'text/html') { $viewContext->layoutName = 'layout-raw'; } Database::selectUser($controllerContext->userName); $user = R::findOne('user', 'LOWER(name) = LOWER(?)', [$controllerContext->userName]); if (empty($user)) { if (!isset($_GET['referral']) || $_GET['referral'] !== 'search') { $controllerContext->cache->bypass(true); $viewContext->userName = $controllerContext->userName; $viewContext->viewName = 'error-user-not-found'; $viewContext->meta->title = 'User not found — ' . Config::$title; return; } $queue = new Queue(Config::$userQueuePath); $queueItem = new QueueItem(strtolower($controllerContext->userName)); $queue->enqueue($queueItem); $viewContext->queuePosition = $queue->seek($queueItem); $controllerContext->cache->bypass(true); //try to load cache, if it exists $url = $controllerContext->url; if ($controllerContext->cache->exists($url)) { $controllerContext->cache->load($url); flush(); $viewContext->layoutName = null; $viewContext->viewName = null; return; } $viewContext->userName = $controllerContext->userName; $viewContext->viewName = 'error-user-enqueued'; $viewContext->meta->title = 'User enqueued — ' . Config::$title; return; } $viewContext->user = $user; $viewContext->meta->styles[] = '/media/css/menu.css'; $viewContext->updateWait = Config::$userQueueMinWait; $module = $controllerContext->module; $module::preWork($controllerContext, $viewContext); }
public static function work(&$controllerContext, &$viewContext) { session_start(); if (!isset($_SESSION['logged-in'])) { $controllerContext->module = 'AdminControllerLoginModule'; } HttpHeadersHelper::setCurrentHeader('Content-Type', 'text/html'); assert(!empty($controllerContext->module)); $module = $controllerContext->module; $module::work($controllerContext, $viewContext); }
public function load($url) { $path = $this->urlToPath($url); $data = file_get_contents($path); $pos = strpos($data, "\n\n"); $headers = unserialize(substr($data, 0, $pos)); $contents = substr($data, $pos + 2); foreach ($headers as $key => $value) { HttpHeadersHelper::setCurrentHeader($key, $value); } echo $contents; }
public static function work(&$controllerContext, &$viewContext) { $viewContext->viewName = 'admin-login'; $viewContext->meta->title = 'MALgraph - admin'; WebMediaHelper::addCustom($viewContext); if (isset($_POST['password'])) { $viewContext->entered = $_POST['password']; $_SESSION['logged-in'] = $_POST['password'] == Config::$adminPassword; if ($_SESSION['logged-in']) { $url = AdminControllerIndexModule::url(); $viewContext->viewName = null; HttpHeadersHelper::setCurrentHeader('Location', $url); } } }
public static function work(&$controllerContext, &$viewContext) { $username = !empty($_POST['user-name']) ? trim($_POST['user-name']) : ''; if (empty($username)) { $viewContext->layoutName = null; $uri = IndexControllerIndexModule::url(); HttpHeadersHelper::setCurrentHeader('Location', $uri); return; } if (!preg_match('#^' . UserController::getUserRegex() . '$#', $username)) { $viewContext->viewName = 'error-user-invalid'; return; } $viewContext->layoutName = null; $uri = UserControllerProfileModule::url($username); HttpHeadersHelper::setCurrentHeader('Location', $uri . '?referral=search'); }
public static function work(&$controllerContext, &$viewContext) { $ratingDistribution = []; foreach (Media::getConstList() as $media) { $entries = $viewContext->user->getMixedUserMedia($media); $entriesNonPlanned = UserMediaFilter::doFilter($entries, [UserMEdiaFilter::nonPlanned()]); $ratingDistribution[$media] = RatingDistribution::fromEntries($entries); } //get input data from GET $userSettings = !empty($_GET['settings']) ? json_decode(base64_decode($_GET['settings']), true) : []; $imageType = !empty($userSettings[0]) ? $userSettings[0] : null; if (!in_array($imageType, [self::IMAGE_TYPE_ANIME, self::IMAGE_TYPE_MANGA, self::IMAGE_TYPE_ANIME_MANGA])) { $imageType = self::IMAGE_TYPE_ANIME; } $settings = new StdClass(); $settings->font = Config::$mediaDirectory . DIRECTORY_SEPARATOR . 'font' . DIRECTORY_SEPARATOR . 'OpenSans-Regular.ttf'; $settings->fontSizeSmall = 7; $settings->fontSizeNormal = 9; $settings->fontSizeBig = 10.5; $settings->barWidth = 220; $settings->barHeight = 13; $settings->barPadding = 1; $settings->colors = [self::COLOR_BARS1 => '00a4c0f4', self::COLOR_BARS2 => '0013459a', self::COLOR_BAR_GUIDES1 => 'eea4c0f4', self::COLOR_BAR_GUIDES2 => 'ee13459a', self::COLOR_BACKGROUND => 'ffffffff', self::COLOR_FONT_DARK => '00000000', self::COLOR_FONT_LIGHT => 'aa000000', self::COLOR_TITLE => '00577fc2', self::COLOR_LOGO => '00577fc2']; foreach (array_keys($settings->colors) as $key) { if (isset($userSettings[$key])) { $value = $userSettings[$key]; assert(in_array(strlen($value), [6, 8])); $settings->colors[$key] = $value; } } $settings->colors = array_map(function ($color) { $value = array_map('hexdec', str_split($color, 2)); if (count($value) == 3) { array_unshift($value, 0); } $value[0] >>= 1; $c = 0; while (!empty($value)) { $c <<= 8; $c |= array_shift($value); } return $c; }, $settings->colors); $margin = 6; $iconImage = self::getIconImage($settings); if ($imageType == self::IMAGE_TYPE_ANIME or $imageType == self::IMAGE_TYPE_MANGA) { $media = $imageType == self::IMAGE_TYPE_ANIME ? Media::Anime : Media::Manga; $barsImage = self::getBarsImage($settings, $ratingDistribution[$media], false); $barsAxesImage = self::getBarsAxesImage($settings, false); $barsBandsImage = self::getBarsBandsImage($settings, $ratingDistribution[$media], false); $footerImage = self::getFooterImage($settings, $ratingDistribution[$media], $media, false); $w = imagesx($barsImage) + imagesx($barsAxesImage) + imagesx($barsBandsImage); $h = imagesy($barsImage) + $margin + imagesy($footerImage); $img = imagecreatetruecolor($w, $h); imagealphablending($img, false); imagefilledrectangle($img, 0, 0, $w, $h, $settings->colors[self::COLOR_BACKGROUND]); $x = 0; $y = imagesy($barsAxesImage) + $margin; self::drawCopy($img, $barsAxesImage, $x, 0); $x += imagesx($barsAxesImage); self::drawCopy($img, $barsImage, $x, 0); self::drawCopy($img, $footerImage, $x, $y); $x += imagesx($barsImage); self::drawCopy($img, $barsBandsImage, $x, 0); $x += imagesx($barsBandsImage); $x = imagesx($barsAxesImage) - imagesx($iconImage) >> 1; self::drawCopy($img, $iconImage, $x, $y); } else { $barsImage1 = self::getBarsImage($settings, $ratingDistribution[Media::Anime], true); $barsImage2 = self::getBarsImage($settings, $ratingDistribution[Media::Manga], false); $barsAxesImage = self::getBarsAxesImage($settings, true); $barsBandsImage1 = self::getBarsBandsImage($settings, $ratingDistribution[Media::Anime], true); $barsBandsImage2 = self::getBarsBandsImage($settings, $ratingDistribution[Media::Manga], false); $footerImage1 = self::getFooterImage($settings, $ratingDistribution[Media::Anime], Media::Anime, true); $footerImage2 = self::getFooterImage($settings, $ratingDistribution[Media::Manga], Media::Manga, false); $w = imagesx($barsImage1) + imagesx($barsImage2) + imagesx($barsAxesImage) + imagesx($barsBandsImage1) + imagesx($barsBandsImage2); $h = imagesy($barsImage1) + $margin + imagesy($footerImage1); $img = imagecreatetruecolor($w, $h); imagealphablending($img, false); imagefilledrectangle($img, 0, 0, $w, $h, $settings->colors[self::COLOR_BACKGROUND]); $x = 0; $y = imagesy($barsAxesImage) + $margin; self::drawCopy($img, $barsBandsImage1, $x, 0); $x += imagesx($barsBandsImage1); self::drawCopy($img, $barsImage1, $x, 0); self::drawCopy($img, $footerImage1, $x, $y); $x += imagesx($barsImage1); self::drawCopy($img, $barsAxesImage, $x, 0); $x += imagesx($barsAxesImage); self::drawCopy($img, $barsImage2, $x, 0); self::drawCopy($img, $footerImage2, $x, $y); $x += imagesx($barsImage2); self::drawCopy($img, $barsBandsImage2, $x, 0); $x = imagesx($barsBandsImage1) + imagesx($barsImage1) + (imagesx($barsAxesImage) - imagesx($iconImage) >> 1); self::drawCopy($img, $iconImage, $x, $y); } imagesavealpha($img, true); $viewContext->layoutName = null; HttpHeadersHelper::setCurrentHeader('Cache-Control', 'no-cache, must-revalidate'); HttpHeadersHelper::setCurrentHeader('Expires', 'Sat, 26 Jul 1997 05:00:00 GMT'); imagepng($img); }
$viewContext->layoutName = 'layout-headerless'; View::render($viewContext); } elseif (isset($_GET['e'])) { try { $viewContext->viewName = 'error-' . $_GET['e']; View::render($viewContext); } catch (Exception $e) { $viewContext->viewName = 'error-404'; View::render($viewContext); } } else { try { $url = $_SERVER['REQUEST_URI']; if (!empty($_SERVER['HTTP_HOST']) and !empty(Config::$enforcedDomain) and $_SERVER['HTTP_HOST'] != Config::$enforcedDomain) { $fixedUrl = 'https://' . Config::$enforcedDomain . '/' . trim($_SERVER['REQUEST_URI'], '/'); HttpHeadersHelper::setCurrentHeader('Location', $fixedUrl); exit(0); } $controllerContext->url = $url; $workingClassName = null; foreach ($classNames as $className) { if ($className::parseRequest($url, $controllerContext)) { $workingClassName = $className; break; } } if (!empty($workingClassName)) { $workingClassName::preWork($controllerContext, $viewContext); if ($controllerContext->cache->isFresh($url)) { $controllerContext->cache->load($url); flush();