final class DateRecurHelper in Recurring Dates Field 3.0.x
Same name and namespace in other branches
- 8.2 src/DateRecurHelper.php \Drupal\date_recur\DateRecurHelper
 - 3.x src/DateRecurHelper.php \Drupal\date_recur\DateRecurHelper
 - 3.1.x src/DateRecurHelper.php \Drupal\date_recur\DateRecurHelper
 
Helper for recurring rules.
Provides a helper for getting occurrences from a RRULE. The class can be iterated apon, producing occurrence objects beginning at the first occurrence.
This helper is a proxy to the default helper. It should be used if there is no preference of implementation.
Hierarchy
- class \Drupal\date_recur\DateRecurHelper implements DateRecurHelperInterface
 
Expanded class hierarchy of DateRecurHelper
5 files declare their use of DateRecurHelper
- DateRecurBasicWidget.php in src/
Plugin/ Field/ FieldWidget/ DateRecurBasicWidget.php  - DateRecurItem.php in src/
Plugin/ Field/ FieldType/ DateRecurItem.php  - DateRecurRruleConstraintValidator.php in src/
Plugin/ Validation/ Constraint/ DateRecurRruleConstraintValidator.php  - DateRecurRruleUnitTest.php in tests/
src/ Unit/ DateRecurRruleUnitTest.php  - DateRecurRulePartConstraintValidator.php in src/
Plugin/ Validation/ Constraint/ DateRecurRulePartConstraintValidator.php  
File
- src/
DateRecurHelper.php, line 20  
Namespace
Drupal\date_recurView source
final class DateRecurHelper implements DateRecurHelperInterface {
  /**
   * The date recur helper.
   *
   * @var \Drupal\date_recur\DateRecurHelperInterface
   */
  protected $dateRecurHelper;
  /**
   * DateRecurHelper constructor.
   *
   * @param \Drupal\date_recur\DateRecurHelperInterface $dateRecurHelper
   *   The date recur helper.
   */
  public function __construct(DateRecurHelperInterface $dateRecurHelper) {
    $this->dateRecurHelper = $dateRecurHelper;
  }
  /**
   * Create a instance of helper using system default.
   *
   * @param string $string
   *   The repeat rule.
   * @param \DateTimeInterface $dtStart
   *   The initial occurrence start date.
   * @param \DateTimeInterface|null $dtStartEnd
   *   The initial occurrence end date, or NULL to use start date.
   *
   * @return static
   *   A rule helper.
   *
   * @throws \Exception
   *   Throws various exceptions if string is invalid.
   */
  public static function create(string $string, \DateTimeInterface $dtStart, \DateTimeInterface $dtStartEnd = NULL) {
    // @todo Get the helper preference from Drupal module config.
    /** @var \Drupal\date_recur\DateRecurHelperInterface $dateRecurHelper */
    $dateRecurHelper = RlHelper::createInstance($string, $dtStart, $dtStartEnd);
    return new static($dateRecurHelper);
  }
  /**
   * {@inheritdoc}
   */
  public static function createInstance(string $string, \DateTimeInterface $dtStart, ?\DateTimeInterface $dtStartEnd = NULL) : DateRecurHelperInterface {
    throw new \LogicException('Create instance must not be called on this helper.');
  }
  /**
   * {@inheritdoc}
   */
  public function getRules() : array {
    $rules = $this->dateRecurHelper
      ->getRules();
    assert(is_array($rules));
    assert(Inspector::assertAllObjects($rules, DateRecurRuleInterface::class));
    return $rules;
  }
  /**
   * {@inheritdoc}
   */
  public function isInfinite() : bool {
    return $this->dateRecurHelper
      ->isInfinite();
  }
  /**
   * {@inheritdoc}
   */
  public function generateOccurrences(?\DateTimeInterface $rangeStart = NULL, ?\DateTimeInterface $rangeEnd = NULL) : \Generator {
    return $this->dateRecurHelper
      ->generateOccurrences($rangeStart, $rangeEnd);
  }
  /**
   * {@inheritdoc}
   */
  public function getOccurrences(\DateTimeInterface $rangeStart = NULL, ?\DateTimeInterface $rangeEnd = NULL, ?int $limit = NULL) : array {
    return $this->dateRecurHelper
      ->getOccurrences($rangeStart, $rangeEnd, $limit);
  }
  /**
   * {@inheritdoc}
   */
  public function getExcluded() : array {
    $exDates = $this->dateRecurHelper
      ->getExcluded();
    assert(Inspector::assertAllObjects($exDates, \DateTimeInterface::class));
    return $exDates;
  }
  /**
   * {@inheritdoc}
   */
  public function current() : DateRange {
    return $this->dateRecurHelper
      ->current();
  }
  /**
   * {@inheritdoc}
   */
  public function next() : void {
    $this->dateRecurHelper
      ->next();
  }
  /**
   * {@inheritdoc}
   */
  public function key() : ?int {
    return $this->dateRecurHelper
      ->key();
  }
  /**
   * {@inheritdoc}
   */
  public function valid() : bool {
    return $this->dateRecurHelper
      ->valid();
  }
  /**
   * {@inheritdoc}
   */
  public function rewind() : void {
    $this->dateRecurHelper
      ->rewind();
  }
}