コード例 #1
0
ファイル: indexmanager.php プロジェクト: DarneoStudio/bitrix
 /**
  * Search re-index handler.
  * @param array  $nextStepData Array with data about step.
  * @param null   $searchObject Search object.
  * @param string $method Method.
  * @return array|bool
  */
 public static function onSearchReindex($nextStepData = array(), $searchObject = null, $method = "")
 {
     $result = array();
     $filter = array('!PARENT_ID' => null);
     if (isset($nextStepData['MODULE']) && $nextStepData['MODULE'] === 'disk' && !empty($nextStepData['ID'])) {
         $filter['>ID'] = self::getObjectIdFromItemId($nextStepData['ID']);
     } else {
         $filter['>ID'] = 0;
     }
     static $self = null;
     if ($self === null) {
         $self = Driver::getInstance()->getIndexManager();
     }
     $query = BaseObject::getList(array('filter' => $filter, 'order' => array('ID' => 'ASC')));
     while ($fileData = $query->fetch()) {
         /** @var BaseObject $object */
         $object = BaseObject::buildFromArray($fileData);
         if (!$object->getStorage()) {
             continue;
         }
         $searchData = array('ID' => self::getItemId($object), 'LAST_MODIFIED' => $object->getUpdateTime() ?: $object->getCreateTime(), 'TITLE' => $object->getName(), 'PARAM1' => $object->getStorageId(), 'PARAM2' => $object->getParentId(), 'SITE_ID' => $object->getStorage()->getSiteId() ?: SITE_ID, 'URL' => self::getDetailUrl($object), 'PERMISSIONS' => $self->getSimpleRights($object), 'BODY' => $self->getObjectContent($object));
         if ($searchObject) {
             $indexResult = call_user_func(array($searchObject, $method), $searchData);
             if (!$indexResult) {
                 return $searchData["ID"];
             }
         } else {
             $result[] = $searchData;
         }
     }
     if ($searchObject) {
         return false;
     }
     return $result;
 }
コード例 #2
0
ファイル: webdavserver.php プロジェクト: DarneoStudio/bitrix
 protected function COPY($dest, $httpDestination, $overwrite, $delete = false)
 {
     /** @var CDavRequest $request */
     $request = $this->request;
     $v = $request->GetParameter('CONTENT_LENGTH');
     if (!empty($v)) {
         return "415 Unsupported media type";
     }
     //if (isset($httpDestination))
     //{
     //	return "502 bad gateway";
     //}
     $requestDocument = $request->GetXmlDocument();
     //todo откуда мы узнаем хранилище относительно которого вести поиск?
     /** @var Storage $storage */
     list($storage, $path) = $this->parsePath($request->getPath());
     $objectId = Driver::getInstance()->getUrlManager()->resolveObjectIdFromPath($storage, $path);
     if (!$objectId) {
         return '404 Not Found';
     }
     /** @var File|Folder $object */
     $object = BaseObject::loadById($objectId);
     if (!$object) {
         return '404 Not Found';
     }
     $securityContext = $object->getStorage()->getCurrentUserSecurityContext();
     if (!$object->canRead($securityContext)) {
         return '403 Forbidden';
     }
     list($destStorage, $poludest) = $this->parsePath($dest);
     if (!$destStorage) {
         return '404 Not Found';
     }
     $srcPath = GetDirPath(rtrim($path, '/'));
     $destPath = GetDirPath($poludest);
     if ($srcPath == $destPath) {
         if (!$object->canRename($securityContext)) {
             return '403 Forbidden';
         }
         if (!$object->rename(GetFileName($poludest))) {
             return '400 Bad Request';
         }
         return "201 Created";
     }
     //		$ret = $this->createFolderPath($destStorage, $poludest);
     //		if ($ret !== true)
     //			return $ret;
     $poludestExploded = explode('/', $poludest);
     $poludestFolderName = array_pop($poludestExploded);
     $targetObjectId = Driver::getInstance()->getUrlManager()->resolveObjectIdFromPath($destStorage, implode('/', $poludestExploded));
     if (!$targetObjectId) {
         return '404 Not Found';
     }
     /** @var File|Folder $folder */
     $folder = Folder::loadById($targetObjectId);
     if (!$targetObjectId) {
         return '404 Not Found';
     }
     if ($delete) {
         if (!$object->canMove($securityContext, $folder)) {
             return '403 Forbidden';
         }
     } else {
         if (!$folder->canAdd($folder->getStorage()->getCurrentUserSecurityContext())) {
             return '403 Forbidden';
         }
     }
     $opponent = false;
     if ($overwrite) {
         $opponent = BaseObject::getList(array('select' => array('ID'), 'filter' => array('NAME' => GetFileName($poludest), 'PARENT_ID' => $folder->getRealObjectId()), 'limit' => 1))->fetch();
         if ($opponent) {
             /** @var File|Folder $opponentObject */
             $opponentObject = BaseObject::loadById($opponent['ID']);
             if (!$opponentObject->canMarkDeleted($opponentObject->getStorage()->getCurrentUserSecurityContext())) {
                 return '403 Forbidden';
             }
             if (!$opponentObject->markDeleted($this->getUser()->getId())) {
                 return '400 Bad Request';
             }
         }
     }
     if ($delete) {
         if (!$object->moveTo($folder, $this->getUser()->getId(), true)) {
             return '400 Bad Request';
         }
     } else {
         if (!$object->copyTo($folder, $this->getUser()->getId(), true)) {
             return '400 Bad Request';
         }
     }
     if (GetFileName($poludest) != $object->getName()) {
         $object->rename(GetFileName($poludest));
     }
     return $opponent ? "201 Created" : "204 No Content";
 }