/** * Runs index by folder. * @param Folder $folder Target folder. * @throws \Bitrix\Main\LoaderException * @return void */ public function indexFolder(Folder $folder) { if (!Loader::includeModule('search')) { return; } //here we place configuration by Module (Options). Example, we can deactivate index for big files in Disk. if (!Configuration::allowIndexFiles()) { return; } $storage = $folder->getStorage(); if (!$storage) { return; } if (!$storage->getProxyType()->canIndexBySearch()) { return; } $searchData = array('LAST_MODIFIED' => $folder->getUpdateTime() ?: $folder->getCreateTime(), 'TITLE' => $folder->getName(), 'PARAM1' => $folder->getStorageId(), 'PARAM2' => $folder->getParentId(), 'SITE_ID' => $storage->getSiteId() ?: SITE_ID, 'URL' => $this->getDetailUrl($folder), 'PERMISSIONS' => $this->getSimpleRights($folder), 'BODY' => $this->getFolderContent($folder)); if ($storage->getProxyType() instanceof Group) { $searchData['PARAMS'] = array('socnet_group' => $storage->getEntityId(), 'entity' => 'socnet_group'); } /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CSearch::index(Driver::INTERNAL_MODULE_ID, $this->getItemId($folder), $searchData, true); }
/** * Returns path to list folder. * @param Folder $folder Target folder. * @return string */ public function getPathFolderList(Folder $folder) { if ($folder->getStorage()->getRootObjectId() == $folder->getId()) { return $folder->getStorage()->getProxyType()->getBaseUrlFolderList(); } $crumbs = implode('/', CrumbStorage::getInstance()->getByObject($folder)); if ($crumbs) { $crumbs .= '/'; } $crumbs .= $folder->getName(); return $folder->getStorage()->getProxyType()->getBaseUrlFolderList() . $crumbs; }