EventMaxEnrollService.php in Open Social 8.6
Same filename and directory in other branches
- 8.9 modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 8.5 modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 8.7 modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 8.8 modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 10.3.x modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 10.0.x modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 10.1.x modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
- 10.2.x modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.php
Namespace
Drupal\social_event_max_enroll\ServiceFile
modules/social_features/social_event/modules/social_event_max_enroll/src/Service/EventMaxEnrollService.phpView source
<?php
namespace Drupal\social_event_max_enroll\Service;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\node\NodeInterface;
use Drupal\social_event\Service\SocialEventEnrollServiceInterface;
/**
* Class EventMaxEnrollService.
*
* @package Drupal\social_event_max_enroll\Service
*/
class EventMaxEnrollService implements EventMaxEnrollServiceInterface {
/**
* The event enrollment storage.
*
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $storage;
/**
* The configuration factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;
/**
* The social event enroll.
*
* @var \Drupal\social_event\Service\SocialEventEnrollServiceInterface
*/
protected $socialEventEnroll;
/**
* EventMaxEnrollService constructor.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
* Injection of the configFactory.
* @param \Drupal\social_event\Service\SocialEventEnrollServiceInterface $social_event_enroll
* The social event enroll.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $configFactory, SocialEventEnrollServiceInterface $social_event_enroll) {
$this->storage = $entity_type_manager
->getStorage('event_enrollment');
$this->configFactory = $configFactory;
$this->socialEventEnroll = $social_event_enroll;
}
/**
* {@inheritdoc}
*/
public function getEnrollmentsNumber(NodeInterface $node) {
return $this->storage
->getQuery()
->condition('field_event', $node
->id())
->condition('field_enrollment_status', 1)
->count()
->execute();
}
/**
* {@inheritdoc}
*/
public function getEnrollmentsLeft(NodeInterface $node) {
// Get max enrollment number.
$max = $node
->get('field_event_max_enroll_num')->value;
// Take into account AN enrollments.
$current = $this
->getEnrollmentsNumber($node);
// Count how many spots are left, but never display less than 0.
return $max >= $current ? $max - $current : 0;
}
/**
* {@inheritdoc}
*/
public function isEnabled(NodeInterface $node) {
// Check if we're working with an event.
if ($this->socialEventEnroll
->isEnabled($node)) {
$config = $this->configFactory
->get('social_event_max_enroll.settings');
// Check if feature is enabled.
if ($config
->get('max_enroll')) {
// Get enrollment configuration for this event.
$is_event_max_enroll = !$node->field_event_max_enroll
->isEmpty() && $node->field_event_max_enroll->value;
$is_event_max_enroll_num = !$node->field_event_max_enroll_num
->isEmpty();
return $is_event_max_enroll && $is_event_max_enroll_num;
}
}
return FALSE;
}
}
Classes
Name![]() |
Description |
---|---|
EventMaxEnrollService | Class EventMaxEnrollService. |