settings = $settings; $this->subscribers_repository = $subscribers_repository; } public function check() { $subscribers_count = $this->subscribers_repository->getTotalSubscribers(); return $subscribers_count > $this->getSubscribersLimit(); } public function hasAPIKey() { $has_mss_key = !empty($this->settings->get(Bridge::API_KEY_SETTING_NAME)); $has_premium_key = !empty($this->settings->get(Bridge::PREMIUM_KEY_SETTING_NAME)); return $has_mss_key || $has_premium_key; } public function getSubscribersLimit() { $has_mss_key = !empty($this->settings->get(Bridge::API_KEY_SETTING_NAME)); $mss_subscribers_limit = $this->settings->get(self::MSS_SUBSCRIBERS_LIMIT_SETTING_KEY); if ($has_mss_key && !empty($mss_subscribers_limit)) return (int)$mss_subscribers_limit; $has_premium_key = !empty($this->settings->get(Bridge::PREMIUM_KEY_SETTING_NAME)); $premium_subscribers_limit = $this->settings->get(self::PREMIUM_SUBSCRIBERS_LIMIT_SETTING_KEY); if ($has_premium_key && !empty($premium_subscribers_limit)) return (int)$premium_subscribers_limit; $installation_time = strtotime($this->settings->get('installed_at')); $old_user = $installation_time < strtotime(self::NEW_LIMIT_DATE); return $old_user ? self::SUBSCRIBERS_OLD_LIMIT : self::SUBSCRIBERS_NEW_LIMIT; } }