Example #1
0
	function check_search()
	{
		if (!CModule::IncludeModule('intranet'))
			return;

		$tmp = $_SERVER['DOCUMENT_ROOT'].'/freetrix/tmp/success.doc';
		if (!CheckDirPath($tmp) || !file_put_contents($tmp, 'SUCCESS'))
			return $this->Result(false, GetMessage("MAIN_TMP_FILE_ERROR"));

		$res = CIntranetSearchConverters::OnSearchGetFileContent($tmp);
		unlink($tmp);

		if (is_array($res) && strpos($res['CONTENT'], 'SUCCESS') !== false)
			return true;

		return $this->Result(false, GetMessage("MAIN_SC_SEARCH_INCORRECT"));
	}
Example #2
0
	function check_search()
	{
		if (!CModule::IncludeModule('intranet'))
			return;

		$tmp = $_SERVER['DOCUMENT_ROOT'].'/bitrix/tmp/success.doc';
		if (!CheckDirPath($tmp) || !file_put_contents($tmp, 'SUCCESS'))
			return $this->Result(false, GetMessage("MAIN_TMP_FILE_ERROR"));

		$res = CIntranetSearchConverters::OnSearchGetFileContent($tmp);
		unlink($tmp);

		if (is_array($res) && strpos($res['CONTENT'], 'SUCCESS') !== false)
			return true;

		$strError = GetMessage("MAIN_SC_SEARCH_INCORRECT")."<br>\n";
		if ($res === false && function_exists('exec'))
		{
			exec('catdoc -V', $output, $return_var);
			if ($return_var === 0)
			{
				$version = $output[0];
				if (strpos($version, '0.94.4') !== false || strpos($version, '0.94.3') !== false)
					$strError .= GetMessage('MAIN_CATDOC_WARN', array('#VERSION#' => $version));
			}
		}

		return $this->Result(false, $strError);
	}
Example #3
0
 public static function OnSearchGetFileContent($absolute_path, $ext = '')
 {
     global $APPLICATION;
     static $arExternalConverters = false;
     if (!$arExternalConverters) {
         $arExternalConverters = array();
         $extensions = explode(",", COption::GetOptionString("intranet", "search_file_extensions"));
         foreach ($extensions as $extension) {
             $command = trim(COption::GetOptionString("intranet", "search_file_extension_exe_" . $extension, ""));
             if (strpos($command, "#FILE_NAME#") !== false || strpos($command, "#SHORT_FILE_NAME#") !== false) {
                 $arExternalConverters["." . $extension] = array("exe" => $command, "cd" => trim(COption::GetOptionString("intranet", "search_file_extension_cd_" . $extension, "")));
             }
         }
     }
     $io = CBXVirtualIo::GetInstance();
     $ioFile = $io->GetFile($absolute_path);
     if ($ioFile->IsExists() && !$ioFile->IsDirectory() && $ioFile->GetFileSize() > 0) {
         $fs_absolute_path = $io->GetPhysicalName($absolute_path);
         //Check by file extension
         if (!$ext) {
             $p = strrpos($absolute_path, ".");
             if ($p !== false) {
                 $ext = substr($absolute_path, $p);
             }
         }
         if ($ext) {
             $ext = '.' . ltrim($ext, '.');
             switch ($ext) {
                 case ".docx":
                     $parser = new CIntranetSearchConverter_docx();
                     $result = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^word/document\\.xml\$#", $parser);
                     if ($result) {
                         $tags = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^docProps/core\\.xml\$#", $parser, "ParseTagsZip");
                     }
                     break;
                 case ".odt":
                 case ".odp":
                     $parser = new CIntranetSearchConverter_odt();
                     $result = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^content\\.xml\$#", $parser);
                     if ($result) {
                         $tags = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^meta\\.xml\$#", $parser, "ParseTagsZip");
                     }
                     break;
                 case ".ods":
                     $parser = new CIntranetSearchConverter_ods();
                     $result = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^content\\.xml\$#", $parser);
                     if ($result) {
                         $tags = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^meta\\.xml\$#", $parser, "ParseTagsZip");
                     }
                     break;
                 case ".rtf":
                     $parser = new CIntranetSearchConverter_rtf();
                     $result = $parser->ProcessFile($fs_absolute_path);
                     $tags = "";
                     break;
                 case ".xlsx":
                     $parser = new CIntranetSearchConverter_xlsx();
                     $result = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^xl/sharedStrings.xml\$#", $parser);
                     if ($result) {
                         $tags = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^docProps/core\\.xml\$#", $parser, "ParseTagsZip");
                     }
                     break;
                 case ".pptx":
                     $parser = new CIntranetSearchConverter_pptx();
                     $result = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^ppt/slides/(.+)\\.xml\$#", $parser);
                     if ($result) {
                         $tags = CIntranetSearchConverters::ProcessZipEntry($fs_absolute_path, "#^docProps/core\\.xml\$#", $parser, "ParseTagsZip");
                     }
                     break;
                 default:
                     if (array_key_exists($ext, $arExternalConverters)) {
                         $parser = new CIntranetSearchConverter();
                         $result = $parser->ProcessExec($arExternalConverters[$ext], $fs_absolute_path);
                     } else {
                         $result = false;
                     }
                     $tags = "";
             }
             if (strlen($result)) {
                 $file_name = end(explode('/', $absolute_path));
                 if (CUtil::DetectUTF8(urlencode($file_name))) {
                     $file_name = $APPLICATION->ConvertCharset($file_name, "UTF-8", LANG_CHARSET);
                 }
                 return array("TITLE" => $file_name, "CONTENT" => $APPLICATION->ConvertCharset($result, "UTF-8", LANG_CHARSET), "PROPERTIES" => array(COption::GetOptionString("search", "page_tag_property") => $APPLICATION->ConvertCharset($tags, "UTF-8", LANG_CHARSET)));
             }
         }
     }
     return false;
 }