class MediaExpireService in Media Expire 8.2
Same name and namespace in other branches
- 8 src/MediaExpireService.php \Drupal\media_expire\MediaExpireService
Contains the media unpublish logic.
@package Drupal\media_expire
Hierarchy
- class \Drupal\media_expire\MediaExpireService
Expanded class hierarchy of MediaExpireService
2 files declare their use of MediaExpireService
- FallbackEntity.php in src/
Plugin/ GraphQL/ DataProducer/ FallbackEntity.php - MediaExpireCommands.php in src/
Commands/ MediaExpireCommands.php
1 string reference to 'MediaExpireService'
1 service uses MediaExpireService
File
- src/
MediaExpireService.php, line 14
Namespace
Drupal\media_expireView source
class MediaExpireService {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The entity repository service.
*
* @var \Drupal\Core\Entity\EntityRepositoryInterface
*/
protected $entityRepository;
/**
* Constructs the MediaExpireService.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager service.
* @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
* The entity repository service.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityRepositoryInterface $entity_repository) {
$this->entityTypeManager = $entity_type_manager;
$this->entityRepository = $entity_repository;
}
/**
* Unpublishes already expired media elements.
*/
public function unpublishExpiredMedia() {
/** @var \Drupal\media\MediaTypeInterface[] $bundles */
$bundles = $this->entityTypeManager
->getStorage('media_type')
->loadMultiple();
foreach ($bundles as $bundle) {
if ($bundle
->getThirdPartySetting('media_expire', 'enable_expiring')) {
$expireField = $bundle
->getThirdPartySetting('media_expire', 'expire_field');
$query = $this->entityTypeManager
->getStorage('media')
->getQuery('AND');
$query
->condition('status', 1);
$query
->condition('bundle', $bundle
->id());
$query
->condition($expireField, date("Y-m-d\\TH:i:s"), '<');
$entityIds = $query
->execute();
/** @var \Drupal\media\Entity\Media[] $medias */
$medias = $this->entityTypeManager
->getStorage('media')
->loadMultiple($entityIds);
foreach ($medias as $media) {
$media
->setUnpublished();
$media->{$expireField}
->removeItem(0);
$media
->save();
}
}
}
}
/**
* Returns the fallback media item.
*
* @param \Drupal\media\MediaInterface $media
* The current media item.
*
* @return \Drupal\Core\Entity\EntityInterface|null
* The fallback media.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function getFallbackMedia(MediaInterface $media) {
/** @var \Drupal\media\MediaTypeInterface $bundle */
$bundle = $this->entityTypeManager
->getStorage('media_type')
->load($media
->bundle());
if ($bundle
->getThirdPartySetting('media_expire', 'enable_expiring') && !$media
->isPublished()) {
$fallbackMediaUuid = $bundle
->getThirdPartySetting('media_expire', 'fallback_media');
if ($fallbackMediaUuid && ($media = $this->entityRepository
->loadEntityByUuid('media', $fallbackMediaUuid))) {
return $media;
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MediaExpireService:: |
protected | property | The entity repository service. | |
MediaExpireService:: |
protected | property | The entity type manager. | |
MediaExpireService:: |
public | function | Returns the fallback media item. | |
MediaExpireService:: |
public | function | Unpublishes already expired media elements. | |
MediaExpireService:: |
public | function | Constructs the MediaExpireService. |