Brak opisu

Source.php 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace MailPoet\Subscribers;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Models\Subscriber;
  5. class Source {
  6. const FORM = 'form';
  7. const IMPORTED = 'imported';
  8. const ADMINISTRATOR = 'administrator';
  9. const API = 'api';
  10. const WORDPRESS_USER = 'wordpress_user';
  11. const WOOCOMMERCE_USER = 'woocommerce_user';
  12. const WOOCOMMERCE_CHECKOUT = 'woocommerce_checkout';
  13. const UNKNOWN = 'unknown';
  14. private static $allowedSources = [
  15. Source::FORM,
  16. Source::IMPORTED,
  17. Source::ADMINISTRATOR,
  18. Source::API,
  19. Source::WORDPRESS_USER,
  20. Source::WOOCOMMERCE_USER,
  21. Source::WOOCOMMERCE_CHECKOUT,
  22. Source::UNKNOWN,
  23. ];
  24. public static function setSource(Subscriber $subscriber, $source) {
  25. if ((isset($subscriber->source)) && ($subscriber->source !== Source::UNKNOWN)) {
  26. // we don't want to override source
  27. return $subscriber;
  28. }
  29. if (!in_array($source, Source::$allowedSources)) {
  30. throw new \InvalidArgumentException('Invalid source "' . $source . '""');
  31. }
  32. $subscriber->set('source', $source);
  33. return $subscriber;
  34. }
  35. }