private function getSource(FileEvent $e) { $source = $e->getSource(); if (!$source instanceof IShareableFile) { throw new EyeInvalidArgumentException('Source of event is not a IShareableFile.'); } return $source; }
public function fileWritten(FileEvent $e) { if ($e->getSource() instanceof EyeUserFile) { SearchFileRecollPlugin::callRecollIndex($e->getSource()->getRealFile(), '-i'); } }
public function fileWritten(FileEvent $e) { $file = $e->getSource(); $meta = null; $activity = null; $by = null; self::initContext($file, $meta, $activity, $by); // On virtual files, creating a file by adding content consist in 2 different operations and // therefore may create 2 different activities, so we avoid that by the following condition // checking that the creation of the file has been performed more than 5 seconds ago. $lastActivity = end($activity); if (is_array($lastActivity) && $lastActivity['type'] == 'creation' && $e->getTimeStamp() - $lastActivity['time'] < 5) { return; } $activity[] = array('type' => 'edition', 'by' => $by->getId(), 'time' => $e->getTimeStamp()); $meta->set('activity', $activity); $meta->set(EyeosAbstractVirtualFile::METADATA_KEY_MODIFICATIONTIME, $e->getTimeStamp()); $file->setMeta($meta); }
public function fileWritten(FileEvent $e) { //Logger::getLogger('sebas')->error('MetadataWritten:' . $e->getSource()->getPath()); $apiManager = new ApiManager(); $path = $e->getSource()->getPath(); $user = ProcManager::getInstance()->getCurrentProcess()->getLoginContext()->getEyeosUser(); $userName = $user->getName(); $cloud = $this->isCloud($path, $userName); $resourceUrl = null; if ($cloud->isCloud) { $pathU1db = substr($path, strlen($cloud->path)); $lenfinal = strrpos($pathU1db, $e->getSource()->getName()); $posfinal = $lenfinal > 1 ? $lenfinal - strlen($pathU1db) - 1 : $lenfinal - strlen($pathU1db); $pathParent = substr($pathU1db, 0, $posfinal); $folder = NULL; if ($pathParent !== '/') { $pos = strrpos($pathParent, '/'); $folder = substr($pathParent, $pos + 1); $pathParent = substr($pathParent, 0, $pos + 1); } $parentId = false; if ($folder !== NULL) { $path = $pathParent . $folder . '/'; $lista = new stdClass(); $lista->cloud = $cloud->name; $lista->path = $pathParent; $lista->filename = $folder; $lista->user_eyeos = $user->getId(); $u1db = json_decode($apiManager->callProcessU1db('parent', $lista)); if ($u1db !== NULL && count($u1db) > 0) { $parentId = $u1db[0]->id; if (isset($u1db[0]->resource_url)) { $resourceUrl = new stdClass(); $resourceUrl->resource_url = $u1db[0]->resource_url; $resourceUrl->token = new stdClass(); $resourceUrl->token->key = $u1db[0]->access_token_key; $resourceUrl->token->secret = $u1db[0]->access_token_secret; if ($parentId === 'null') { $parentId = 0; } } } } else { $parentId = '0'; $path = $pathParent; } if ($parentId !== false) { $pathAbsolute = AdvancedPathLib::getPhpLocalHackPath($e->getSource()->getRealFile()->getAbsolutePath()); $token = $_SESSION['access_token_' . $cloud->name . '_v2']; if ($resourceUrl) { $token = $resourceUrl->token; $resourceUrl = $resourceUrl->resource_url; } $result = $apiManager->createMetadata($cloud->name, $token, $user->getId(), true, $e->getSource()->getName(), $parentId, $path, $pathAbsolute, $resourceUrl); if ($result['status'] == 'OK') { $params = array($e->getSource()->getParentPath(), $e->getSource()->getPath()); $message = new ClientBusMessage('file', 'refreshStackSync', $params); ClientMessageBusController::getInstance()->queueMessage($message); } else { if ($result['error'] == 403) { $path = $this->cleanCloud($cloud->name, $user); $params = array($path, $cloud->name); $message = new ClientBusMessage('file', 'permissionDenied', $params); ClientMessageBusController::getInstance()->queueMessage($message); } } } } }