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")); }
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); }
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; }