[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
classes
/
search
/
[
Home
]
File: SearchFileParser.php
<?php /** * @defgroup search Search * Implements search tools, such as file parsers, workflow integration, * indexing, querying, etc. */ /** * @file classes/search/SearchFileParser.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class SearchFileParser * * @ingroup search * * @brief Abstract class to extract search text from a given file. */ namespace PKP\search; use Exception; use PKP\config\Config; use PKP\submissionFile\SubmissionFile; class SearchFileParser { /** @var string the complete path to the file */ public $filePath; /** @var resource file handle */ public $fp; /** * Constructor. * * @param string $filePath */ public function __construct($filePath) { $this->filePath = $filePath; } /** * Return the path to the file. * * @return string */ public function getFilePath() { return $this->filePath; } /** * Change the file path. * * @param string $filePath */ public function setFilePath($filePath) { $this->filePath = $filePath; } /** * Open the file. * * @return bool */ public function open() { if (!($this->fp = @fopen($this->filePath, 'rb'))) { throw new Exception("Failed to parse the file \"{$this->filePath}\". Last error: " . error_get_last()); } return true; } /** * Close the file. */ public function close() { if ($this->fp) { fclose($this->fp); } } /** * Read and return the next block/line of text. * * @return string (false on EOF) */ public function read() { if (!$this->fp || feof($this->fp)) { return false; } return $this->doRead(); } /** * Read from the file pointer. * * @return string */ public function doRead() { return fgets($this->fp); } // // Static methods // /** * Create a text parser for a file. * * @param SubmissionFile $submissionFile * * @return ?SearchFileParser */ public static function fromFile($submissionFile) { $fullPath = rtrim(Config::getVar('files', 'files_dir'), '/') . '/' . $submissionFile->getData('path'); return static::fromFileType($submissionFile->getData('mimetype'), $fullPath); } /** * Create a text parser for a file. * * @param string $type * @param string $path * * @return ?SearchFileParser */ public static function fromFileType($type, $path) { if (Config::getVar('search', "index[{$type}]")) { $parserType = 'process'; } else { // If an indexer definition exists, but its value is falsy, we assume the user wants to disable the default handler $parserType = Config::hasVar('search', "index[{$type}]") ? 'disabled' : $type; } return match ($parserType) { // External process 'process' => new SearchHelperParser($type, $path), // Text processor 'text/plain' => new static($path), // HTML/XML processor 'text/html', 'text/xml', 'application/xhtml', 'application/xml' => new SearchHTMLParser($path), // Disabled/no suitable parser default => null }; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\search\SearchFileParser', '\SearchFileParser'); }