Ejemplo n.º 1
0
 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"));
         }
     }
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 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)) : "-";
 }
Ejemplo n.º 4
0
 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;
 }