Pimcore\Model\Site\Dao::getByDomain PHP Method

getByDomain() public method

public getByDomain ( $domain )
$domain
    public function getByDomain($domain)
    {
        $data = $this->db->fetchRow("SELECT * FROM sites WHERE mainDomain = ? OR domains LIKE ?", [$domain, "%\"" . $domain . "\"%"]);
        if (!$data["id"]) {
            // check for wildcards
            // @TODO: refactor this to be more clear
            $sitesRaw = $this->db->fetchAll("SELECT id,domains FROM sites");
            $wildcardDomains = [];
            foreach ($sitesRaw as $site) {
                if (!empty($site["domains"]) && strpos($site["domains"], "*")) {
                    $siteDomains = unserialize($site["domains"]);
                    if (is_array($siteDomains) && count($siteDomains) > 0) {
                        foreach ($siteDomains as $siteDomain) {
                            if (strpos($siteDomain, "*") !== false) {
                                $siteDomain = str_replace(".*", "*", $siteDomain);
                                // backward compatibility
                                $wildcardDomains[$siteDomain] = $site["id"];
                            }
                        }
                    }
                }
            }
            foreach ($wildcardDomains as $wildcardDomain => $siteId) {
                $wildcardDomain = preg_quote($wildcardDomain, "#");
                $wildcardDomain = str_replace("\\*", ".*", $wildcardDomain);
                if (preg_match("#^" . $wildcardDomain . "\$#", $domain)) {
                    $data = $this->db->fetchRow("SELECT * FROM sites WHERE id = ?", [$siteId]);
                }
            }
            if (!$data["id"]) {
                throw new \Exception("there is no site for the requested domain: `" . $domain . "ยด");
            }
        }
        $this->assignVariablesToModel($data);
    }