Example #1
0
 public function getResults($string, $pagenum, $filesPerPage)
 {
     $searchString = "'{$string}*'";
     $max = 'LIMIT ' . ($pagenum - 1) * $filesPerPage . ',' . $filesPerPage;
     /*	$query = "SELECT *,
         	       MATCH (name, description) AGAINST (? IN BOOLEAN MODE) AS rel
         	       FROM {$this->table}
                    WHERE MATCH (name, description) AGAINST (? IN BOOLEAN MODE)
                    ORDER BY REL DESC {$max}";
     */
     $query = "SELECT id, name, description, size,\n             MATCH (name, description) AGAINST (? IN BOOLEAN MODE) AS rel\n             FROM {$this->table}\n               WHERE MATCH (name, description) AGAINST (? IN BOOLEAN MODE)\n               ORDER BY REL DESC {$max}";
     if ($stmt = $this->mysqliInstanse->prepare($query)) {
         $stmt->bind_param("ss", $searchString, $searchString);
     } else {
         throw new Exception("Не удалось подготовить SQL запрос при попытке поиска по сайту");
     }
     if (!$stmt->execute()) {
         throw new Exception("Не удалось выполнить поиск (" . $stmt->errno . ") " . $stmt->error);
     } else {
         $stmt->bind_result($id, $name, $description, $size, $rel);
         $files = array();
         while ($stmt->fetch()) {
             $fields = array('id' => $id, 'name' => $name, 'description' => $description, 'size' => $size);
             $file = File::constructFromArray($fields);
             $files[] = $file;
         }
         $stmt->close();
         return $files;
     }
 }
Example #2
0
 public function getLatestFiles($limit)
 {
     $query = "SELECT id, name, size FROM files ORDER BY id DESC LIMIT {$limit}";
     $stmt = $this->mysqliInstanse->prepare($query);
     $stmt->execute();
     $stmt->bind_result($id, $name, $size);
     $files = array();
     while ($stmt->fetch()) {
         $fields = array('id' => $id, 'name' => $name, 'size' => $size);
         $file = File::constructFromArray($fields);
         $files[] = $file;
     }
     $stmt->close();
     return $files;
 }
Example #3
0
 public function uploadFile(array $files)
 {
     session_start();
     //var_dump($files);
     //die();
     $userfile = $files['userfile'];
     if (!$userfile) {
         $this->errorMessage = "Вы не выбрали файл.";
         return false;
     }
     if ($userfile['error'] > 0) {
         if ($userfile['error'] <= 2) {
             $this->errorMessage = 'Размер файла больше допустимого.';
         } elseif (!$userfile['name']) {
             $this->errorMessage = "Вы не выбрали файл для загрузки";
         } else {
             throw new Exception("Uploader::uploadFile was unable to upload file");
         }
         return false;
     }
     $name = $this->getSafeFileName($userfile);
     $encName = $this->encodeName($userfile);
     //подготовим информацию о файле, для передачи шлюзу соединения с бд
     $fileMetaData = $this->getFileInfo($userfile, $name, $encName);
     $file = File::constructFromArray($fileMetaData);
     //Вызываем метод insert шлюза, который внесёт данные о файле в базу данных и присвоит файлу id,
     //полученный из базы.
     $file = $this->dbGateway->insert($file);
     //общее количество загрузок = id последнего запроса
     $total = $file->id;
     $newDir = $this->makeDir($total);
     $upfile = $newDir . "/" . $encName;
     if (!is_uploaded_file($userfile['tmp_name'])) {
         throw new Exception("File is not uploaded_file");
     }
     if (!move_uploaded_file($userfile['tmp_name'], $upfile)) {
         throw new Exception('Невозможно переместить файл в каталог назначения');
     }
     //если выполнение дошло до сюда, файл был успешно загружен
     //заносим путь к файлу в базу данных
     $success = $this->dbGateway->addPath($upfile, $total);
     //стартуем сессию только если файл был успешно загружен и добавлен в бд
     if ($success === true) {
         //session_start();
         if (!isset($_SESSION['fileId'])) {
             $_SESSION['fileId'] = array();
         }
         $_SESSION['fileId']["{$total}"] = 0;
     }
     return $total;
 }