function onParsePage() { if ($this->yellow->page->get("template") == "search") { if (PHP_SAPI == "cli") { $this->yellow->page->error(500, "Static website not supported!"); } $query = trim($_REQUEST["query"]); $tokens = array_slice(array_unique(array_filter(explode(' ', $query), "strlen")), 0, 10); if (!empty($tokens)) { $this->yellow->page->set("titleHeader", $query . " - " . $this->yellow->page->get("sitename")); $this->yellow->page->set("title", $this->yellow->text->get("searchQuery") . " " . $query); $this->yellow->page->set("searchResults", $this->yellow->text->get("searchResultsEmpty")); $pages = $this->yellow->pages->clean(); foreach ($this->yellow->pages->index(false, false) as $page) { $searchScore = 0; $searchTokens = array(); foreach ($tokens as $token) { $score = substr_count(strtoloweru($page->getContent(true)), strtoloweru($token)); if ($score) { $searchScore += $score; $searchTokens[$token] = true; } if (stristr($page->getLocation(), $token)) { $searchScore += 20; $searchTokens[$token] = true; } if (stristr($page->get("title"), $token)) { $searchScore += 10; $searchTokens[$token] = true; } if (stristr($page->get("tag"), $token)) { $searchScore += 5; $searchTokens[$token] = true; } if (stristr($page->get("author"), $token)) { $searchScore += 2; $searchTokens[$token] = true; } } if (count($tokens) == count($searchTokens)) { $page->set("searchscore", $searchScore); $pages->append($page); } } $pages->sort("searchscore"); $pages->pagination($this->yellow->config->get("searchPaginationLimit")); if ($_REQUEST["page"] && !$pages->getPaginationNumber()) { $this->yellow->page->error(404); } $this->yellow->page->setPages($pages); $this->yellow->page->setLastModified($pages->getModified()); $this->yellow->page->setHeader("Cache-Control", "max-age=60"); } else { $this->yellow->page->set("searchResults", $this->yellow->text->get("searchResultsNone")); } } }
function detectImageInfo($fileName) { $width = $height = 0; $type = ""; $fileHandle = @fopen($fileName, "rb"); if ($fileHandle) { if (substru(strtoloweru($fileName), -3) == "png") { $dataSignature = fread($fileHandle, 8); $dataHeader = fread($fileHandle, 16); if (!feof($fileHandle) && $dataSignature == "‰PNG\r\n\n") { $width = (ord($dataHeader[10]) << 8) + ord($dataHeader[11]); $height = (ord($dataHeader[14]) << 8) + ord($dataHeader[15]); $type = "png"; } } else { if (substru(strtoloweru($fileName), -3) == "jpg") { $dataBufferSizeMax = filesize($fileName); $dataBufferSize = min($dataBufferSizeMax, 4096); $dataBuffer = fread($fileHandle, $dataBufferSize); $dataSignature = substrb($dataBuffer, 0, 4); if (!feof($fileHandle) && ($dataSignature == "ÿØÿà" || $dataSignature == "ÿØÿá")) { for ($pos = 2; $pos + 8 < $dataBufferSize; $pos += $length) { if ($dataBuffer[$pos] != "ÿ") { break; } if ($dataBuffer[$pos + 1] == "À" || $dataBuffer[$pos + 1] == "Â") { $width = (ord($dataBuffer[$pos + 7]) << 8) + ord($dataBuffer[$pos + 8]); $height = (ord($dataBuffer[$pos + 5]) << 8) + ord($dataBuffer[$pos + 6]); $type = "jpg"; break; } $length = (ord($dataBuffer[$pos + 2]) << 8) + ord($dataBuffer[$pos + 3]) + 2; while ($pos + $length + 8 >= $dataBufferSize) { if ($dataBufferSize == $dataBufferSizeMax) { break; } $dataBufferDiff = min($dataBufferSizeMax, $dataBufferSize * 2) - $dataBufferSize; $dataBufferSize += $dataBufferDiff; $dataBuffer .= fread($fileHandle, $dataBufferDiff); if (feof($fileHandle)) { $dataBufferSize = 0; break; } } } } } } fclose($fileHandle); } return array($width, $height, $type); }
function getSearchUrl($location) { $locationSearch = $this->yellow->config->get("serverBase") . $this->yellow->config->get("searchLocation"); $locationSearch .= "query" . $this->yellow->toolbox->getLocationArgsSeparator(); return preg_match("#^{$locationSearch}([^/]+)/\$#", $location) ? $this->getUrl(strtoloweru($location)) : "-"; }
function download($data) { $statusCode = 0; $path = $this->yellow->config->get("pluginDir"); $fileExtension = $this->yellow->config->get("downloadExtension"); foreach ($data as $key => $value) { $fileName = strtoloweru("{$path}{$key}.zip"); list($version, $url) = explode(',', $value); list($statusCode, $fileData) = $this->getSoftwareFile($url); if (empty($fileData) || !$this->yellow->toolbox->createFile($fileName . $fileExtension, $fileData)) { $statusCode = 500; $this->yellow->page->error($statusCode, "Can't write file '{$fileName}'!"); break; } } if ($statusCode == 200) { foreach ($data as $key => $value) { $fileName = strtoloweru("{$path}{$key}.zip"); if (!$this->yellow->toolbox->renameFile($fileName . $fileExtension, $fileName)) { $statusCode = 500; $this->yellow->page->error($statusCode, "Can't write file '{$fileName}'!"); } } } return $statusCode; }