Source of file HomepageForDomainExtension.php
Size: 3,109 Bytes - Last Modified: 2021-12-23T10:31:57+00:00
/var/www/docs.ssmods.com/process/src/code/HomepageForDomainExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php namespace Twohill\HomepageForDomain; use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\TextField; use SilverStripe\ORM\DataExtension; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Forms\LiteralField; use SilverStripe\Versioned\Versioned; class HomepageForDomainExtension extends DataExtension { /** * Whether or not to write the homepage map for static publisher * * @var boolean */ public static $write_homepage_map = true; /** * @var array */ private static $db = array( "HomepageForDomain" => "Varchar(100)", ); public function updateSettingsFields(&$fields) { $fields->addFieldsToTab("Root.Settings", array( new LiteralField( "HomepageForDomainInfo", "<p>" . _t(__CLASS__ . '.NOTEUSEASHOMEPAGE', "Use this page as the 'home page' for the following domains: (separate multiple domains with commas)") . "</p>" ), new TextField( "HomepageForDomain", _t(__CLASS__ . '.Domains', 'Listing domains that should be used as homepage') ) )); } public function onAfterPublish() { // Check to write CMS homepage map. $usingStaticPublishing = false; $staticPublisherSubClasses = ClassInfo::subclassesFor('StaticPublisher'); if ($staticPublisherSubClasses) { foreach ($staticPublisherSubClasses as $class) { if ($this->owner->hasExtension($class)) { $usingStaticPublishing = true; } } } // Ff you change the path here, you must also change it in sapphire/static-main.php if (self::$write_homepage_map) { if ($usingStaticPublishing && $map = self::generate_homepage_domain_map()) { @file_put_contents(BASE_PATH . '/' . ASSETS_DIR . '/_homepage-map.php', "<?php\n\$homepageMap = " . var_export($map, true) . "; ?>"); } else { if (file_exists(BASE_PATH . '/' . ASSETS_DIR . '/_homepage-map.php')) { unlink(BASE_PATH . '/' . ASSETS_DIR . '/_homepage-map.php'); } } } } public function updateFieldLabels(&$labels) { $labels['HomepageForDomain'] = _t(SiteTree::class . '.HomepageForDomain', 'Hompage for this domain'); } /** * @return Array */ public static function generate_homepage_domain_map() { $domainSpecificHomepages = Versioned::get_by_stage(\Page::class, 'Live', "\"HomepageForDomain\" != ''", "\"URLSegment\" ASC"); if (!$domainSpecificHomepages) { return false; } $map = array(); foreach ($domainSpecificHomepages->map('URLSegment', 'HomepageForDomain') as $url => $domains) { foreach (explode(',', $domains) as $domain) { $map[$domain] = $url; } } return $map; } } |