pluginManager = $plugin_manager; $this->logger = $logger; $this->fileSystem = $file_system; $this->uri = $uri; $this->hash = $hash; } /** * {@inheritdoc} */ public function getUri() { return $this->uri; } /** * {@inheritdoc} */ public function getLocalTempPath() { return $this->localTempPath; } /** * {@inheritdoc} */ public function setLocalTempPath($temp_uri) { $this->localTempPath = $temp_uri; foreach ($this->plugins as $plugin) { $plugin->setLocalTempPath($this->localTempPath); } return $this; } /** * {@inheritdoc} */ public function copyUriToTemp($temp_uri = NULL) { if ($temp_uri === NULL) { $temp_uri = $this->fileSystem->tempnam('temporary://', 'file_mdm_'); $this->fileSystem->unlink($temp_uri); $temp_uri .= '.' . pathinfo($this->getUri(), PATHINFO_EXTENSION); } if ($temp_path = file_unmanaged_copy($this->getUri(), $this->fileSystem->realpath($temp_uri), FILE_EXISTS_REPLACE)) { $this->setLocalTempPath($temp_path); } return (bool) $temp_path; } /** * {@inheritdoc} */ public function copyTempToUri() { if (($temp_path = $this->getLocalTempPath()) === NULL) { return FALSE; } return (bool) file_unmanaged_copy($temp_path, $this->getUri(), FILE_EXISTS_REPLACE); } /** * {@inheritdoc} */ public function getFileMetadataPlugin($metadata_id) { if (!isset($this->plugins[$metadata_id])) { try { $this->plugins[$metadata_id] = $this->pluginManager->createInstance($metadata_id); $this->plugins[$metadata_id]->setUri($this->uri); $this->plugins[$metadata_id]->setLocalTempPath($this->localTempPath ?: $this->uri); $this->plugins[$metadata_id]->setHash($this->hash); } catch (PluginNotFoundException $e) { return NULL; } } return $this->plugins[$metadata_id]; } /** * {@inheritdoc} */ public function getSupportedKeys($metadata_id, $options = NULL) { try { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { $keys = $plugin->getSupportedKeys($options); } else { $keys = NULL; } } catch (\Exception $e) { $this->logger->error($e->getMessage()); $keys = NULL; } return $keys; } /** * {@inheritdoc} */ public function getMetadata($metadata_id, $key = NULL) { try { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { $metadata = $plugin->getMetadata($key); } else { $metadata = NULL; } } catch (\Exception $e) { $this->logger->error($e->getMessage()); $metadata = NULL; } return $metadata; } /** * {@inheritdoc} */ public function removeMetadata($metadata_id, $key) { try { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->removeMetadata($key); } } catch (\Exception $e) { $this->logger->error($e->getMessage()); } return FALSE; } /** * {@inheritdoc} */ public function setMetadata($metadata_id, $key, $value) { try { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->setMetadata($key, $value); } } catch (\Exception $e) { $this->logger->error($e->getMessage()); } return FALSE; } /** * {@inheritdoc} */ public function isMetadataLoaded($metadata_id) { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->isMetadataLoaded(); } return FALSE; } /** * {@inheritdoc} */ public function loadMetadata($metadata_id, $metadata) { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->loadMetadata($metadata); } return FALSE; } /** * {@inheritdoc} */ public function loadMetadataFromCache($metadata_id) { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->loadMetadataFromCache(); } return FALSE; } /** * {@inheritdoc} */ public function saveMetadataToCache($metadata_id, array $tags = []) { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->saveMetadataToCache($tags); } return FALSE; } /** * {@inheritdoc} */ public function saveMetadataToFile($metadata_id) { if ($plugin = $this->getFileMetadataPlugin($metadata_id)) { return $plugin->saveMetadataToFile(); } return FALSE; } }