Esempio n. 1
0
 /**
  * Provides the domain alias submission form.
  *
  * @param \Drupal\domain\DomainInterface $domain
  *   An domain record entity.
  *
  * @return array
  *   Returns the domain alias submission form.
  */
 public function addAlias(DomainInterface $domain)
 {
     // The entire purpose of this controller is to add the values from
     // the parent domain entity.
     $values['domain_id'] = $domain->id();
     // @TODO: ensure that this value is present in all cases.
     $alias = \Drupal::entityTypeManager()->getStorage('domain_alias')->create($values);
     return $this->entityFormBuilder()->getForm($alias);
 }
Esempio n. 2
0
 /**
  * Creates an alias for testing.
  *
  * @param Drupal\domain\Entity\Domain $domain
  *   A domain entity.
  * @param string $pattern
  *   An optional alias pattern.
  * @param int $redirect
  *   An optional redirect (301 or 302).
  *
  * @return Drupal\domain_alias\Entity\DomainAlias
  *   A domain alias entity.
  */
 public function domainAliasCreateTestAlias(DomainInterface $domain, $pattern = NULL, $redirect = 0)
 {
     if (empty($pattern)) {
         $pattern = '*.' . $domain->getHostname();
     }
     $values = array('domain_id' => $domain->id(), 'pattern' => $pattern, 'redirect' => $redirect);
     // Replicate the logic for creating machine_name patterns.
     $values['id'] = str_replace(array('*', '.'), '_', $values['pattern']);
     $alias = \Drupal::entityManager()->getStorage('domain_alias')->create($values);
     $alias->save();
     return $alias;
 }
Esempio n. 3
0
 /**
  * @inheritdoc
  *
  * @TODO: Divide this into separate methods. Do not return Drupal-specfic
  * responses.
  */
 public function validate(DomainInterface $domain)
 {
     $hostname = $domain->getHostname();
     $error_list = array();
     // Check for at least one dot or the use of 'localhost'.
     // Note that localhost can specify a port.
     $localhost_check = explode(':', $hostname);
     if (substr_count($hostname, '.') == 0 && $localhost_check[0] != 'localhost') {
         $error_list[] = $this->t('At least one dot (.) is required, except when using <em>localhost</em>.');
     }
     // Check for one colon only.
     if (substr_count($hostname, ':') > 1) {
         $error_list[] = $this->t('Only one colon (:) is allowed.');
     } elseif (substr_count($hostname, ':') == 1) {
         $parts = explode(':', $hostname);
         $port = (int) $parts[1];
         if (strcmp($port, $parts[1])) {
             $error_list[] = $this->t('The port protocol must be an integer.');
         }
     }
     // The domain cannot begin or end with a period.
     if (substr($hostname, 0, 1) == '.') {
         $error_list[] = $this->t('The domain must not begin with a dot (.)');
     }
     // The domain cannot begin or end with a period.
     if (substr($hostname, -1) == '.') {
         $error_list[] = $this->t('The domain must not end with a dot (.)');
     }
     // Check for valid characters, unless using non-ASCII domains.
     $non_ascii = \Drupal::config('domain.settings')->get('allow_non_ascii');
     if (!$non_ascii) {
         $pattern = '/^[a-z0-9\\.\\-:]*$/i';
         if (!preg_match($pattern, $hostname)) {
             $error_list[] = $this->t('Only alphanumeric characters, dashes, and a colon are allowed.');
         }
     }
     // Check for lower case.
     if ($hostname != Unicode::strtolower($hostname)) {
         $error_list[] = $this->t('Only lower-case characters are allowed.');
     }
     // Check for 'www' prefix if redirection / handling is enabled under global domain settings.
     // Note that www prefix handling must be set explicitly in the UI.
     // See http://drupal.org/node/1529316 and http://drupal.org/node/1783042
     if (\Drupal::config('domain.settings')->get('www_prefix') && substr($hostname, 0, strpos($hostname, '.')) == 'www') {
         $error_list[] = $this->t('WWW prefix handling: Domains must be registered without the www. prefix.');
     }
     // Check existing domains.
     $domains = \Drupal::entityManager()->getStorage('domain')->loadByProperties(array('hostname' => $hostname));
     foreach ($domains as $domain) {
         if ($domain->id() != $domain->id()) {
             $error_list[] = $this->t('The hostname is already registered.');
         }
     }
     // Allow modules to alter this behavior.
     \Drupal::moduleHandler()->invokeAll('domain_validate', $error_list, $hostname);
     // Return the errors, if any.
     if (!empty($error_list)) {
         return $this->t('The domain string is invalid for %subdomain: @errors', array('%subdomain' => $hostname, '@errors' => array('#theme' => 'item_list', '#items' => $error_list)));
     }
     return array();
 }
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 public function getActiveId()
 {
     return $this->domain->id();
 }
Esempio n. 5
0
 /**
  * Get configuration name for this hostname.
  *
  * It will be the same name with a prefix depending on domain and language:
  * domain.config.DOMAIN_ID.LANGCODE
  *
  * @param string $name
  *   The name of the config object.
  * @param \Drupal\domain\DomainInterface $domain
  *   The domain object.
  *
  * @return array
  *   The domain-language, and domain-specific config names.
  */
 protected function getDomainConfigName($name, DomainInterface $domain)
 {
     return ['langcode' => 'domain.config.' . $domain->id() . '.' . $this->language->getId() . '.' . $name, 'domain' => 'domain.config.' . $domain->id() . '.' . $name];
 }