Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.0 KiB

<?php
namespace Drupal\islandora\ContextProvider;
use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Plugin\Context\Context;
use Drupal\Core\Plugin\Context\ContextProviderInterface;
D9 islandora (#809) * update messenger for d9 * fix dependency injection * update info files * stream_for updates for d9 * remove deprecated entity query * replace deprecated functions * use dependency injection for messenger and fix other deprecated functions for d9 * fix deprecations in tests * fix test * phpcs fixes * fix toUrl method * properly use StringTranslationTrait * phpcs fixes and using dependency injection * more deprecations with upgrade_status 3.x version and more phpcs fixes * add defaultTheme per https://www.drupal.org/node/3083055 * replace deprecated context definition method - per https://www.drupal.org/node/2976400 * fix context definitions * remove more deprecations * fix deprecations in tests * codesniffer fixes - dependencies must be prefixed with drupal: and missing variable doc comments * replace more url() -> toUrl() and remove unused variables * more code sniffer fixes * some of these urls are necessary as strings * d9 requires update to flysystem module * update migrate_source_csv * temporarily point crayfish-commons to branch with d9 dependencies * another composer dependency adjustment * point composer to d9 branch of jsonld * remove hook_post_action for d9 * remove hook_post_action as a dependency - this does break multifile media FOR NOW * update migration keys -> ids per https://www.drupal.org/node/3060246 * fix url method * point jsonld back to dev since PR has been merged * wrong branch name * add update hook for change in migration source * update travis.yml for php 7.4 * add doc comment * build on php7.2, 7.3, 7.4 * use this instead of Drupal:: * just php 7.3 and 7.4 * swap back to dev-dev crayfish-commons since PR was merged * perhaps this fixes the config thing * trying to fix config * ugh errant semicolon * missing variable name * maybe it would help if i named the variables consistently * please work... * i can't get the dependency injection of config correct * sad panda * thanks @seth-shaw-unlv for this magical fix * fix dependency injection * putting the config in the AbstractGenerateDerivativeMediaFile class instead * already the system.file config * update test module info file * fix implode ordre of parameters * remove unused use statement * fix geminiclient tests * phpcs fix * check for fedora key in flysystem * check for array not being null * more null checks * try on the downgrade-symfony branch * set fedora url to null if it isn't in the settings * testing the crayfish-commons version fix * fixes for new classes in newer version of guzzlehttp but still needing to support old methods * update phpunit.xml? * transform 1 response from preg_match to a boolean * reorder crayfish-commons version fix * code sniffer fixes * abstract awaying the shared constructor so that phpcpd is happy about less duplicated code * attempt to reduce shared code in the FedoraAdapterTest * remove unused use statement * code sniffer fixes...not sure how i missed these... * remove reliance on branch of crayfish-commons since PR has been merged
4 years ago
use Drupal\Core\Plugin\Context\EntityContext;
use Drupal\Core\Plugin\Context\EntityContextDefinition;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
/**
* Sets the current file as a context on file routes.
*/
class FileRouteContextProvider implements ContextProviderInterface {
use StringTranslationTrait;
/**
* The route match object.
*
* @var \Drupal\Core\Routing\RouteMatchInterface
*/
protected $routeMatch;
/**
* Constructs a new FileRouteContextProvider.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* The route match object.
*/
public function __construct(RouteMatchInterface $route_match) {
$this->routeMatch = $route_match;
}
/**
* {@inheritdoc}
*/
public function getRuntimeContexts(array $unqualified_context_ids) {
D9 islandora (#809) * update messenger for d9 * fix dependency injection * update info files * stream_for updates for d9 * remove deprecated entity query * replace deprecated functions * use dependency injection for messenger and fix other deprecated functions for d9 * fix deprecations in tests * fix test * phpcs fixes * fix toUrl method * properly use StringTranslationTrait * phpcs fixes and using dependency injection * more deprecations with upgrade_status 3.x version and more phpcs fixes * add defaultTheme per https://www.drupal.org/node/3083055 * replace deprecated context definition method - per https://www.drupal.org/node/2976400 * fix context definitions * remove more deprecations * fix deprecations in tests * codesniffer fixes - dependencies must be prefixed with drupal: and missing variable doc comments * replace more url() -> toUrl() and remove unused variables * more code sniffer fixes * some of these urls are necessary as strings * d9 requires update to flysystem module * update migrate_source_csv * temporarily point crayfish-commons to branch with d9 dependencies * another composer dependency adjustment * point composer to d9 branch of jsonld * remove hook_post_action for d9 * remove hook_post_action as a dependency - this does break multifile media FOR NOW * update migration keys -> ids per https://www.drupal.org/node/3060246 * fix url method * point jsonld back to dev since PR has been merged * wrong branch name * add update hook for change in migration source * update travis.yml for php 7.4 * add doc comment * build on php7.2, 7.3, 7.4 * use this instead of Drupal:: * just php 7.3 and 7.4 * swap back to dev-dev crayfish-commons since PR was merged * perhaps this fixes the config thing * trying to fix config * ugh errant semicolon * missing variable name * maybe it would help if i named the variables consistently * please work... * i can't get the dependency injection of config correct * sad panda * thanks @seth-shaw-unlv for this magical fix * fix dependency injection * putting the config in the AbstractGenerateDerivativeMediaFile class instead * already the system.file config * update test module info file * fix implode ordre of parameters * remove unused use statement * fix geminiclient tests * phpcs fix * check for fedora key in flysystem * check for array not being null * more null checks * try on the downgrade-symfony branch * set fedora url to null if it isn't in the settings * testing the crayfish-commons version fix * fixes for new classes in newer version of guzzlehttp but still needing to support old methods * update phpunit.xml? * transform 1 response from preg_match to a boolean * reorder crayfish-commons version fix * code sniffer fixes * abstract awaying the shared constructor so that phpcpd is happy about less duplicated code * attempt to reduce shared code in the FedoraAdapterTest * remove unused use statement * code sniffer fixes...not sure how i missed these... * remove reliance on branch of crayfish-commons since PR has been merged
4 years ago
$context_definition = EntityContextDefinition::fromEntityTypeId('file')->setLabel(NULL)->setRequired(FALSE);
$value = NULL;
// Hack the file out of the route.
$route_object = $this->routeMatch->getRouteObject();
if ($route_object) {
$route_contexts = $route_object->getOption('parameters');
if ($route_contexts && isset($route_contexts['file'])) {
$file = $this->routeMatch->getParameter('file');
if ($file) {
$value = $file;
}
}
}
$cacheability = new CacheableMetadata();
$cacheability->setCacheContexts(['route']);
$context = new Context($context_definition, $value);
$context->addCacheableDependency($cacheability);
return ['file' => $context];
}
/**
* {@inheritdoc}
*/
public function getAvailableContexts() {
D9 islandora (#809) * update messenger for d9 * fix dependency injection * update info files * stream_for updates for d9 * remove deprecated entity query * replace deprecated functions * use dependency injection for messenger and fix other deprecated functions for d9 * fix deprecations in tests * fix test * phpcs fixes * fix toUrl method * properly use StringTranslationTrait * phpcs fixes and using dependency injection * more deprecations with upgrade_status 3.x version and more phpcs fixes * add defaultTheme per https://www.drupal.org/node/3083055 * replace deprecated context definition method - per https://www.drupal.org/node/2976400 * fix context definitions * remove more deprecations * fix deprecations in tests * codesniffer fixes - dependencies must be prefixed with drupal: and missing variable doc comments * replace more url() -> toUrl() and remove unused variables * more code sniffer fixes * some of these urls are necessary as strings * d9 requires update to flysystem module * update migrate_source_csv * temporarily point crayfish-commons to branch with d9 dependencies * another composer dependency adjustment * point composer to d9 branch of jsonld * remove hook_post_action for d9 * remove hook_post_action as a dependency - this does break multifile media FOR NOW * update migration keys -> ids per https://www.drupal.org/node/3060246 * fix url method * point jsonld back to dev since PR has been merged * wrong branch name * add update hook for change in migration source * update travis.yml for php 7.4 * add doc comment * build on php7.2, 7.3, 7.4 * use this instead of Drupal:: * just php 7.3 and 7.4 * swap back to dev-dev crayfish-commons since PR was merged * perhaps this fixes the config thing * trying to fix config * ugh errant semicolon * missing variable name * maybe it would help if i named the variables consistently * please work... * i can't get the dependency injection of config correct * sad panda * thanks @seth-shaw-unlv for this magical fix * fix dependency injection * putting the config in the AbstractGenerateDerivativeMediaFile class instead * already the system.file config * update test module info file * fix implode ordre of parameters * remove unused use statement * fix geminiclient tests * phpcs fix * check for fedora key in flysystem * check for array not being null * more null checks * try on the downgrade-symfony branch * set fedora url to null if it isn't in the settings * testing the crayfish-commons version fix * fixes for new classes in newer version of guzzlehttp but still needing to support old methods * update phpunit.xml? * transform 1 response from preg_match to a boolean * reorder crayfish-commons version fix * code sniffer fixes * abstract awaying the shared constructor so that phpcpd is happy about less duplicated code * attempt to reduce shared code in the FedoraAdapterTest * remove unused use statement * code sniffer fixes...not sure how i missed these... * remove reliance on branch of crayfish-commons since PR has been merged
4 years ago
$context = EntityContext::fromEntityTypeId('file', $this->t('File from URL'));
return ['file' => $context];
}
}