forked from alxp/islandora
-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add term_is_published and media_is_published conditions.
- Loading branch information
Showing
3 changed files
with
192 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
<?php | ||
|
||
namespace Drupal\islandora\Plugin\Condition; | ||
|
||
use Drupal\Core\Condition\ConditionPluginBase; | ||
use Drupal\Core\Entity\EntityTypeManagerInterface; | ||
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | ||
use Symfony\Component\DependencyInjection\ContainerInterface; | ||
|
||
/** | ||
* Provides an 'Is Published' condition for media. | ||
* | ||
* @Condition( | ||
* id = "media_is_published", | ||
* label = @Translation("Media is published"), | ||
* context_definitions = { | ||
* "media" = @ContextDefinition("entity:media", required = TRUE , label = @Translation("media")) | ||
* } | ||
* ) | ||
*/ | ||
class MediaIsPublished extends ConditionPluginBase implements ContainerFactoryPluginInterface { | ||
|
||
/** | ||
* Term storage. | ||
* | ||
* @var \Drupal\Core\Entity\EntityTypeManagerInterface | ||
*/ | ||
protected $entityTypeManager; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @param array $configuration | ||
* The plugin configuration, i.e. an array with configuration values keyed | ||
* by configuration option name. The special key 'context' may be used to | ||
* initialize the defined contexts by setting it to an array of context | ||
* values keyed by context names. | ||
* @param string $plugin_id | ||
* The plugin_id for the plugin instance. | ||
* @param mixed $plugin_definition | ||
* The plugin implementation definition. | ||
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager | ||
* Entity type manager. | ||
*/ | ||
public function __construct( | ||
array $configuration, | ||
$plugin_id, | ||
$plugin_definition, | ||
EntityTypeManagerInterface $entity_type_manager | ||
) { | ||
parent::__construct($configuration, $plugin_id, $plugin_definition); | ||
$this->entityTypeManager = $entity_type_manager; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | ||
return new static( | ||
$configuration, | ||
$plugin_id, | ||
$plugin_definition, | ||
$container->get('entity_type.manager') | ||
); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function evaluate() { | ||
$taxonomy_media = $this->getContextValue('taxonomy_media'); | ||
if (!$taxonomy_media && !$this->isNegated()) { | ||
return FALSE; | ||
} | ||
elseif (!$taxonomy_media) { | ||
return FALSE; | ||
} | ||
else { | ||
return $taxonomy_media->isPublished(); | ||
} | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function summary() { | ||
if (!empty($this->configuration['negate'])) { | ||
return $this->t('The taxonomy media is not published.'); | ||
} | ||
else { | ||
return $this->t('The taxonomy media is published.'); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
<?php | ||
|
||
namespace Drupal\islandora\Plugin\Condition; | ||
|
||
use Drupal\Core\Condition\ConditionPluginBase; | ||
use Drupal\Core\Entity\EntityTypeManagerInterface; | ||
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | ||
use Symfony\Component\DependencyInjection\ContainerInterface; | ||
|
||
/** | ||
* Provides an 'Is Published' condition for taxonomy terms. | ||
* | ||
* @Condition( | ||
* id = "term_is_published", | ||
* label = @Translation("Term is published"), | ||
* context_definitions = { | ||
* "taxonomy_term" = @ContextDefinition("entity:taxonomy_term", required = TRUE , label = @Translation("taxonomy term")) | ||
* } | ||
* ) | ||
*/ | ||
class TermIsPublished extends ConditionPluginBase implements ContainerFactoryPluginInterface { | ||
|
||
/** | ||
* Term storage. | ||
* | ||
* @var \Drupal\Core\Entity\EntityTypeManagerInterface | ||
*/ | ||
protected $entityTypeManager; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @param array $configuration | ||
* The plugin configuration, i.e. an array with configuration values keyed | ||
* by configuration option name. The special key 'context' may be used to | ||
* initialize the defined contexts by setting it to an array of context | ||
* values keyed by context names. | ||
* @param string $plugin_id | ||
* The plugin_id for the plugin instance. | ||
* @param mixed $plugin_definition | ||
* The plugin implementation definition. | ||
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager | ||
* Entity type manager. | ||
*/ | ||
public function __construct( | ||
array $configuration, | ||
$plugin_id, | ||
$plugin_definition, | ||
EntityTypeManagerInterface $entity_type_manager | ||
) { | ||
parent::__construct($configuration, $plugin_id, $plugin_definition); | ||
$this->entityTypeManager = $entity_type_manager; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | ||
return new static( | ||
$configuration, | ||
$plugin_id, | ||
$plugin_definition, | ||
$container->get('entity_type.manager') | ||
); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function evaluate() { | ||
$taxonomy_term = $this->getContextValue('taxonomy_term'); | ||
if (!$taxonomy_term && !$this->isNegated()) { | ||
return FALSE; | ||
} | ||
elseif (!$taxonomy_term) { | ||
return FALSE; | ||
} | ||
else { | ||
return $taxonomy_term->isPublished(); | ||
} | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function summary() { | ||
if (!empty($this->configuration['negate'])) { | ||
return $this->t('The taxonomy term is not published.'); | ||
} | ||
else { | ||
return $this->t('The taxonomy term is published.'); | ||
} | ||
} | ||
|
||
} |