/** * Create reference for media. * * @param MediaInterface $media * * @return bool */ public function createReference(MediaInterface $media) { $allowed = false; foreach ($this->contexts as $context) { if (in_array($media->getExtension(), $context)) { $allowed = true; break; } } if ($allowed === false) { $this->error = array('error.extensionNotAllowed', array('%extension%' => $media->getExtension())); return false; } // secure extension for reference if (!in_array($media->getExtension(), $this->trustedExtensions)) { $media->setExtension($media->getExtension() . '.txt'); $media->setType($media::OTHER); } do { $media->setReference(sha1(microtime(true) . mt_rand()) . '.' . $media->getExtension()); } while ($this->filesystemManipulator->has($this->originalDir . '/' . $media->getReference())); return true; }