Passed
Push — master ( ed222d...64e89d )
by
unknown
02:51
created
src/Extensions/CustomSiteConfig.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -11,55 +11,55 @@
 block discarded – undo
11 11
  */
12 12
 class CustomSiteConfig extends DataExtension
13 13
 {
14
-    private static $db = array(
15
-        'GACode' => 'Varchar(16)',
16
-        'FacebookURL' => 'Varchar(256)', // multitude of ways to link to Facebook accounts, best to leave it open.
17
-        'TwitterUsername' => 'Varchar(16)', // max length of Twitter username 15
18
-    );
14
+	private static $db = array(
15
+		'GACode' => 'Varchar(16)',
16
+		'FacebookURL' => 'Varchar(256)', // multitude of ways to link to Facebook accounts, best to leave it open.
17
+		'TwitterUsername' => 'Varchar(16)', // max length of Twitter username 15
18
+	);
19 19
 
20
-    public function updateCMSFields(FieldList $fields)
21
-    {
22
-        $fields->addFieldToTab(
23
-            'Root.Main',
24
-            $gaCode = TextField::create(
25
-                'GACode',
26
-                _t(__CLASS__ . '.GaField', 'Google Analytics account')
27
-            )
28
-        );
20
+	public function updateCMSFields(FieldList $fields)
21
+	{
22
+		$fields->addFieldToTab(
23
+			'Root.Main',
24
+			$gaCode = TextField::create(
25
+				'GACode',
26
+				_t(__CLASS__ . '.GaField', 'Google Analytics account')
27
+			)
28
+		);
29 29
 
30
-        $gaCode->setRightTitle(
31
-            _t(
32
-                __CLASS__ . '.GaFieldDesc',
33
-                'Account number to be used all across the site (in the format <strong>UA-XXXXX-X</strong>)'
34
-            )
35
-        );
30
+		$gaCode->setRightTitle(
31
+			_t(
32
+				__CLASS__ . '.GaFieldDesc',
33
+				'Account number to be used all across the site (in the format <strong>UA-XXXXX-X</strong>)'
34
+			)
35
+		);
36 36
 
37
-        $fields->findOrMakeTab('Root.SocialMedia', _t(__CLASS__ . '.SocialMediaTab', 'Social Media'));
37
+		$fields->findOrMakeTab('Root.SocialMedia', _t(__CLASS__ . '.SocialMediaTab', 'Social Media'));
38 38
 
39
-        $fields->addFieldToTab(
40
-            'Root.SocialMedia',
41
-            $facebookURL = TextField::create(
42
-                'FacebookURL',
43
-                _t(__CLASS__ . '.FbField', 'Facebook UID or username')
44
-            )
45
-        );
46
-        $facebookURL->setRightTitle(
47
-            _t(
48
-                __CLASS__ . '.FbFieldDesc',
49
-                'Facebook link (everything after the "http://facebook.com/", eg http://facebook.com/'
50
-                . '<strong>username</strong> or http://facebook.com/<strong>pages/108510539573</strong>)'
51
-            )
52
-        );
39
+		$fields->addFieldToTab(
40
+			'Root.SocialMedia',
41
+			$facebookURL = TextField::create(
42
+				'FacebookURL',
43
+				_t(__CLASS__ . '.FbField', 'Facebook UID or username')
44
+			)
45
+		);
46
+		$facebookURL->setRightTitle(
47
+			_t(
48
+				__CLASS__ . '.FbFieldDesc',
49
+				'Facebook link (everything after the "http://facebook.com/", eg http://facebook.com/'
50
+				. '<strong>username</strong> or http://facebook.com/<strong>pages/108510539573</strong>)'
51
+			)
52
+		);
53 53
 
54
-        $fields->addFieldToTab(
55
-            'Root.SocialMedia',
56
-            $twitterUsername = TextField::create(
57
-                'TwitterUsername',
58
-                _t(__CLASS__ . '.TwitterField', 'Twitter username')
59
-            )
60
-        );
61
-        $twitterUsername->setRightTitle(
62
-            _t(__CLASS__ . '.TwitterFieldDesc', 'Twitter username (eg, http://twitter.com/<strong>username</strong>)')
63
-        );
64
-    }
54
+		$fields->addFieldToTab(
55
+			'Root.SocialMedia',
56
+			$twitterUsername = TextField::create(
57
+				'TwitterUsername',
58
+				_t(__CLASS__ . '.TwitterField', 'Twitter username')
59
+			)
60
+		);
61
+		$twitterUsername->setRightTitle(
62
+			_t(__CLASS__ . '.TwitterFieldDesc', 'Twitter username (eg, http://twitter.com/<strong>username</strong>)')
63
+		);
64
+	}
65 65
 }
Please login to merge, or discard this patch.
src/Extensions/CwpCommentingExtension.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -13,20 +13,20 @@
 block discarded – undo
13 13
  */
14 14
 class CwpCommentingExtension extends Extension
15 15
 {
16
-    public function alterCommentForm(Form $form)
17
-    {
18
-        $fields = $form->Fields();
16
+	public function alterCommentForm(Form $form)
17
+	{
18
+		$fields = $form->Fields();
19 19
 
20
-        if ($emailField = $fields->dataFieldByName(Email::class)) {
21
-            $emailField
22
-                ->setTitle(_t(__CLASS__ . '.EMAIL_TITLE', Email::class))
23
-                ->setDescription(_t(__CLASS__ . '.WILL_NOT_BE_PUBLISHED', 'Will not be published.'));
24
-        }
20
+		if ($emailField = $fields->dataFieldByName(Email::class)) {
21
+			$emailField
22
+				->setTitle(_t(__CLASS__ . '.EMAIL_TITLE', Email::class))
23
+				->setDescription(_t(__CLASS__ . '.WILL_NOT_BE_PUBLISHED', 'Will not be published.'));
24
+		}
25 25
 
26
-        if ($urlField = $fields->dataFieldByName('URL')) {
27
-            $urlField
28
-                ->setTitle(_t(__CLASS__ . '.WEBSITE_TITLE', 'Your website (optional)'))
29
-                ->setAttribute('placeholder', 'http://');
30
-        }
31
-    }
26
+		if ($urlField = $fields->dataFieldByName('URL')) {
27
+			$urlField
28
+				->setTitle(_t(__CLASS__ . '.WEBSITE_TITLE', 'Your website (optional)'))
29
+				->setAttribute('placeholder', 'http://');
30
+		}
31
+	}
32 32
 }
Please login to merge, or discard this patch.
src/Extensions/CwpSearchBoostExtension.php 1 patch
Indentation   +41 added lines, -41 removed lines patch added patch discarded remove patch
@@ -12,45 +12,45 @@
 block discarded – undo
12 12
 class CwpSearchBoostExtension extends DataExtension
13 13
 {
14 14
 
15
-    /**
16
-     * Quality to boost the 'SearchBoost' field by.
17
-     * Default boost is 2x
18
-     *
19
-     * @config
20
-     * @var string
21
-     */
22
-    private static $search_boost = '2';
23
-
24
-    private static $db = array(
25
-        'SearchBoost' => 'Text'
26
-    );
27
-
28
-    /**
29
-     * Adds boost fields to this page
30
-     *
31
-     * @param FieldList $fields
32
-     */
33
-    public function updateCMSFields(FieldList $fields)
34
-    {
35
-        parent::updateCMSFields($fields);
36
-
37
-        // Rename metafield
38
-        $meta = $fields->fieldByName('Root.Main.Metadata');
39
-        $meta->setTitle(_t(__CLASS__ . '.PAGEINFO', 'Page info and SEO'));
40
-
41
-        $boostTitle = _t(__CLASS__ . '.SearchBoost', 'Boost Keywords');
42
-        $boostNote = _t(
43
-            __CLASS__ . '.SearchBoostNote',
44
-            '(Only applies to the search results on this site e.g. not on Google search)'
45
-        );
46
-        $boostDescription = _t(
47
-            __CLASS__ . '.SearchBoostDescription',
48
-            'Enter keywords separated by comma ( , ) for which to boost the ranking of this page '
49
-            . 'within the search results on this site.'
50
-        );
51
-        $boostField = TextareaField::create('SearchBoost', $boostTitle)
52
-            ->setRightTitle($boostNote)
53
-            ->setDescription($boostDescription);
54
-        $fields->insertBefore('MetaDescription', $boostField);
55
-    }
15
+	/**
16
+	 * Quality to boost the 'SearchBoost' field by.
17
+	 * Default boost is 2x
18
+	 *
19
+	 * @config
20
+	 * @var string
21
+	 */
22
+	private static $search_boost = '2';
23
+
24
+	private static $db = array(
25
+		'SearchBoost' => 'Text'
26
+	);
27
+
28
+	/**
29
+	 * Adds boost fields to this page
30
+	 *
31
+	 * @param FieldList $fields
32
+	 */
33
+	public function updateCMSFields(FieldList $fields)
34
+	{
35
+		parent::updateCMSFields($fields);
36
+
37
+		// Rename metafield
38
+		$meta = $fields->fieldByName('Root.Main.Metadata');
39
+		$meta->setTitle(_t(__CLASS__ . '.PAGEINFO', 'Page info and SEO'));
40
+
41
+		$boostTitle = _t(__CLASS__ . '.SearchBoost', 'Boost Keywords');
42
+		$boostNote = _t(
43
+			__CLASS__ . '.SearchBoostNote',
44
+			'(Only applies to the search results on this site e.g. not on Google search)'
45
+		);
46
+		$boostDescription = _t(
47
+			__CLASS__ . '.SearchBoostDescription',
48
+			'Enter keywords separated by comma ( , ) for which to boost the ranking of this page '
49
+			. 'within the search results on this site.'
50
+		);
51
+		$boostField = TextareaField::create('SearchBoost', $boostTitle)
52
+			->setRightTitle($boostNote)
53
+			->setDescription($boostDescription);
54
+		$fields->insertBefore('MetaDescription', $boostField);
55
+	}
56 56
 }
Please login to merge, or discard this patch.
src/Extensions/CwpSiteTreeFileExtension.php 1 patch
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -11,53 +11,53 @@
 block discarded – undo
11 11
 class CwpSiteTreeFileExtension extends DataExtension
12 12
 {
13 13
 
14
-    public function updateCMSFields(FieldList $fields)
15
-    {
16
-        Requirements::css('cwp/cwp:css/fieldDescriptionToggle.css');
17
-        Requirements::javascript('cwp/cwp:javascript/fieldDescriptionToggle.js');
18
-
19
-        $fields->insertAfter(
20
-            'LastEdited',
21
-            ReadonlyField::create(
22
-                'BackLinkCount',
23
-                _t('SilverStripe\\CMS\\Model\\SiteTreeFileExtension.BACKLINKCOUNT', 'Used on:'),
24
-                $this->owner->BackLinkTracking()->Count() . ' '
25
-                    . _t('SilverStripe\\CMS\\Model\\SiteTreeFileExtension.PAGES', 'page(s)')
26
-            )
27
-            ->addExtraClass('cms-description-toggle')
28
-            ->setDescription($this->BackLinkHTMLList())
29
-        );
30
-    }
31
-
32
-    /**
33
-     * Generate an HTML list which provides links to where a file is used.
34
-     *
35
-     * @return string
36
-     */
37
-    public function BackLinkHTMLList()
38
-    {
39
-        $html = '<em>' . _t(
40
-            __CLASS__ . '.BACKLINK_LIST_DESCRIPTION',
41
-            'This list shows all pages where the file has been added through a WYSIWYG editor.'
42
-        ) . '</em>';
43
-        $html .= '<ul>';
44
-
45
-        foreach ($this->owner->BackLinkTracking() as $backLink) {
46
-            $listItem = '<li>';
47
-
48
-            // Add the page link
49
-            $listItem .= '<a href="' . $backLink->Link() . '" target="_blank">'
50
-                . Convert::raw2xml($backLink->MenuTitle) . '</a> &ndash; ';
51
-
52
-            // Add the CMS link
53
-            $listItem .= '<a href="' . $backLink->CMSEditLink() . '">'
54
-                . _t(__CLASS__ . '.EDIT', 'Edit') . '</a>';
55
-
56
-            $html .= $listItem . '</li>';
57
-        }
58
-
59
-        $html .= '</ul>';
60
-
61
-        return $html;
62
-    }
14
+	public function updateCMSFields(FieldList $fields)
15
+	{
16
+		Requirements::css('cwp/cwp:css/fieldDescriptionToggle.css');
17
+		Requirements::javascript('cwp/cwp:javascript/fieldDescriptionToggle.js');
18
+
19
+		$fields->insertAfter(
20
+			'LastEdited',
21
+			ReadonlyField::create(
22
+				'BackLinkCount',
23
+				_t('SilverStripe\\CMS\\Model\\SiteTreeFileExtension.BACKLINKCOUNT', 'Used on:'),
24
+				$this->owner->BackLinkTracking()->Count() . ' '
25
+					. _t('SilverStripe\\CMS\\Model\\SiteTreeFileExtension.PAGES', 'page(s)')
26
+			)
27
+			->addExtraClass('cms-description-toggle')
28
+			->setDescription($this->BackLinkHTMLList())
29
+		);
30
+	}
31
+
32
+	/**
33
+	 * Generate an HTML list which provides links to where a file is used.
34
+	 *
35
+	 * @return string
36
+	 */
37
+	public function BackLinkHTMLList()
38
+	{
39
+		$html = '<em>' . _t(
40
+			__CLASS__ . '.BACKLINK_LIST_DESCRIPTION',
41
+			'This list shows all pages where the file has been added through a WYSIWYG editor.'
42
+		) . '</em>';
43
+		$html .= '<ul>';
44
+
45
+		foreach ($this->owner->BackLinkTracking() as $backLink) {
46
+			$listItem = '<li>';
47
+
48
+			// Add the page link
49
+			$listItem .= '<a href="' . $backLink->Link() . '" target="_blank">'
50
+				. Convert::raw2xml($backLink->MenuTitle) . '</a> &ndash; ';
51
+
52
+			// Add the CMS link
53
+			$listItem .= '<a href="' . $backLink->CMSEditLink() . '">'
54
+				. _t(__CLASS__ . '.EDIT', 'Edit') . '</a>';
55
+
56
+			$html .= $listItem . '</li>';
57
+		}
58
+
59
+		$html .= '</ul>';
60
+
61
+		return $html;
62
+	}
63 63
 }
Please login to merge, or discard this patch.
src/Extensions/CwpSiteTreeExtension.php 1 patch
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -9,39 +9,39 @@
 block discarded – undo
9 9
 
10 10
 class CwpSiteTreeExtension extends DataExtension
11 11
 {
12
-    private static $db = array(
13
-        'ShowPageUtilities' => 'Boolean(1)'
14
-    );
12
+	private static $db = array(
13
+		'ShowPageUtilities' => 'Boolean(1)'
14
+	);
15 15
 
16
-    private static $defaults = array(
17
-        'ShowPageUtilities' => true
18
-    );
16
+	private static $defaults = array(
17
+		'ShowPageUtilities' => true
18
+	);
19 19
 
20
-    /**
21
-     * Modify the settings for a SiteTree
22
-     *
23
-     * {@inheritDoc}
24
-     *
25
-     * @param FieldList $fields
26
-     */
27
-    public function updateSettingsFields(FieldList $fields)
28
-    {
29
-        $helpText = _t(
30
-            __CLASS__ . '.SHOW_PAGE_UTILITIES_HELP',
31
-            'You can disable page utilities (print, share, etc) for this page'
32
-        );
20
+	/**
21
+	 * Modify the settings for a SiteTree
22
+	 *
23
+	 * {@inheritDoc}
24
+	 *
25
+	 * @param FieldList $fields
26
+	 */
27
+	public function updateSettingsFields(FieldList $fields)
28
+	{
29
+		$helpText = _t(
30
+			__CLASS__ . '.SHOW_PAGE_UTILITIES_HELP',
31
+			'You can disable page utilities (print, share, etc) for this page'
32
+		);
33 33
 
34
-        $fields->addFieldsToTab(
35
-            'Root.Settings',
36
-            array(
37
-                LiteralField::create('PageUtilitiesHelp', $helpText),
38
-                CheckboxField::create('ShowPageUtilities', $this->owner->fieldLabel('ShowPageUtilities'))
39
-            )
40
-        );
41
-    }
34
+		$fields->addFieldsToTab(
35
+			'Root.Settings',
36
+			array(
37
+				LiteralField::create('PageUtilitiesHelp', $helpText),
38
+				CheckboxField::create('ShowPageUtilities', $this->owner->fieldLabel('ShowPageUtilities'))
39
+			)
40
+		);
41
+	}
42 42
 
43
-    public function updateFieldLabels(&$labels)
44
-    {
45
-        $labels['ShowPageUtilities'] = _t(__CLASS__ . '.SHOW_PAGE_UTILITIES', 'Show page utilities?');
46
-    }
43
+	public function updateFieldLabels(&$labels)
44
+	{
45
+		$labels['ShowPageUtilities'] = _t(__CLASS__ . '.SHOW_PAGE_UTILITIES', 'Show page utilities?');
46
+	}
47 47
 }
Please login to merge, or discard this patch.
src/Extensions/SynonymsSiteConfig.php 2 patches
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -16,52 +16,52 @@
 block discarded – undo
16 16
 class SynonymsSiteConfig extends DataExtension
17 17
 {
18 18
 
19
-    private static $db = array(
20
-        'SearchSynonyms' => 'Text', // fulltextsearch synonyms.txt content
21
-    );
19
+	private static $db = array(
20
+		'SearchSynonyms' => 'Text', // fulltextsearch synonyms.txt content
21
+	);
22 22
 
23
-    public function updateCMSFields(FieldList $fields)
24
-    {
25
-        // Don't show this field if you're not an admin
26
-        if (!Permission::check('ADMIN')) {
27
-            return;
28
-        }
23
+	public function updateCMSFields(FieldList $fields)
24
+	{
25
+		// Don't show this field if you're not an admin
26
+		if (!Permission::check('ADMIN')) {
27
+			return;
28
+		}
29 29
 
30
-        // Search synonyms
31
-        $fields->addFieldToTab(
32
-            'Root.FulltextSearch',
33
-            TextareaField::create('SearchSynonyms', _t(__CLASS__ . '.SearchSynonyms', 'Search Synonyms'))
34
-                ->setDescription(_t(
35
-                    __CLASS__ . '.SearchSynonyms_Description',
36
-                    'Enter as many comma separated synonyms as you wish, where '.
37
-                    'each line represents a group of synonyms.<br /> ' .
38
-                    'You will need to run <a rel="external" target="_blank" href="dev/tasks/Solr_Configure">'
39
-                    . 'Solr_Configure</a> if you make any changes'
40
-                ))
41
-        );
42
-    }
30
+		// Search synonyms
31
+		$fields->addFieldToTab(
32
+			'Root.FulltextSearch',
33
+			TextareaField::create('SearchSynonyms', _t(__CLASS__ . '.SearchSynonyms', 'Search Synonyms'))
34
+				->setDescription(_t(
35
+					__CLASS__ . '.SearchSynonyms_Description',
36
+					'Enter as many comma separated synonyms as you wish, where '.
37
+					'each line represents a group of synonyms.<br /> ' .
38
+					'You will need to run <a rel="external" target="_blank" href="dev/tasks/Solr_Configure">'
39
+					. 'Solr_Configure</a> if you make any changes'
40
+				))
41
+		);
42
+	}
43 43
 
44
-    /**
45
-     * @inheritdoc
46
-     *
47
-     * @param ValidationResult $validationResult
48
-     */
49
-    public function validate(ValidationResult $validationResult)
50
-    {
51
-        $validator = new SynonymValidator(array(
52
-            'SearchSynonyms',
53
-        ));
44
+	/**
45
+	 * @inheritdoc
46
+	 *
47
+	 * @param ValidationResult $validationResult
48
+	 */
49
+	public function validate(ValidationResult $validationResult)
50
+	{
51
+		$validator = new SynonymValidator(array(
52
+			'SearchSynonyms',
53
+		));
54 54
 
55
-        $validator->php(array(
56
-            'SearchSynonyms' => $this->owner->SearchSynonyms
57
-        ));
55
+		$validator->php(array(
56
+			'SearchSynonyms' => $this->owner->SearchSynonyms
57
+		));
58 58
 
59
-        $errors = $validator->getErrors();
59
+		$errors = $validator->getErrors();
60 60
 
61
-        if (is_array($errors) || $errors instanceof Traversable) {
62
-            foreach ($errors as $error) {
63
-                $validationResult->addError($error['message']);
64
-            }
65
-        }
66
-    }
61
+		if (is_array($errors) || $errors instanceof Traversable) {
62
+			foreach ($errors as $error) {
63
+				$validationResult->addError($error['message']);
64
+			}
65
+		}
66
+	}
67 67
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -33,7 +33,7 @@
 block discarded – undo
33 33
             TextareaField::create('SearchSynonyms', _t(__CLASS__ . '.SearchSynonyms', 'Search Synonyms'))
34 34
                 ->setDescription(_t(
35 35
                     __CLASS__ . '.SearchSynonyms_Description',
36
-                    'Enter as many comma separated synonyms as you wish, where '.
36
+                    'Enter as many comma separated synonyms as you wish, where ' .
37 37
                     'each line represents a group of synonyms.<br /> ' .
38 38
                     'You will need to run <a rel="external" target="_blank" href="dev/tasks/Solr_Configure">'
39 39
                     . 'Solr_Configure</a> if you make any changes'
Please login to merge, or discard this patch.
src/Search/CwpSearchPageController.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -11,25 +11,25 @@
 block discarded – undo
11 11
  */
12 12
 class CwpSearchPageController extends PageController
13 13
 {
14
-    /**
15
-     * Create the dummy search record for this page
16
-     *
17
-     * @return CwpSearchPage
18
-     */
19
-    protected function generateSearchRecord()
20
-    {
21
-        $searchPage = CwpSearchPage::create();
22
-        $searchPage->URLSegment = 'search';
23
-        $searchPage->Title = _t('SilverStripe\\CMS\\Search\\SearchForm.SearchResults', 'Search Results');
24
-        $searchPage->ID = -1;
25
-        return $searchPage;
26
-    }
14
+	/**
15
+	 * Create the dummy search record for this page
16
+	 *
17
+	 * @return CwpSearchPage
18
+	 */
19
+	protected function generateSearchRecord()
20
+	{
21
+		$searchPage = CwpSearchPage::create();
22
+		$searchPage->URLSegment = 'search';
23
+		$searchPage->Title = _t('SilverStripe\\CMS\\Search\\SearchForm.SearchResults', 'Search Results');
24
+		$searchPage->ID = -1;
25
+		return $searchPage;
26
+	}
27 27
 
28
-    public function __construct($dataRecord = null)
29
-    {
30
-        if (!$dataRecord) {
31
-            $dataRecord = $this->generateSearchRecord();
32
-        }
33
-        parent::__construct($dataRecord);
34
-    }
28
+	public function __construct($dataRecord = null)
29
+	{
30
+		if (!$dataRecord) {
31
+			$dataRecord = $this->generateSearchRecord();
32
+		}
33
+		parent::__construct($dataRecord);
34
+	}
35 35
 }
Please login to merge, or discard this patch.
src/Tasks/PopulateThemeSampleDataTask.php 1 patch
Indentation   +129 added lines, -129 removed lines patch added patch discarded remove patch
@@ -17,133 +17,133 @@
 block discarded – undo
17 17
  */
18 18
 class PopulateThemeSampleDataTask extends BuildTask
19 19
 {
20
-    protected $title = 'Populate sample data for theme demo';
21
-
22
-    protected $description = 'Populates some sample data for showcasing the functionality of the '
23
-        . 'starter and Wātea themes';
24
-
25
-    /**
26
-     * A series of method calls to create sample data
27
-     *
28
-     * @param HTTPRequest $request
29
-     */
30
-    public function run($request)
31
-    {
32
-        $this->handleContactForm();
33
-    }
34
-
35
-    /**
36
-     * Decide whether to create a contact user defined form, and call it to be be created if so
37
-     *
38
-     * @return $this
39
-     */
40
-    protected function handleContactForm()
41
-    {
42
-        if (!$this->getContactFormExists()) {
43
-            $this->createContactForm();
44
-        }
45
-        return $this;
46
-    }
47
-
48
-    /**
49
-     * Determine whether a "contact us" userform exists yet
50
-     *
51
-     * @return bool
52
-     */
53
-    protected function getContactFormExists()
54
-    {
55
-        $exists = false;
56
-        foreach (UserDefinedForm::get()->column('ID') as $formId) {
57
-            $count = Versioned::get_all_versions(UserDefinedForm::class, $formId)
58
-                ->filter('URLSegment', 'contact')
59
-                ->count();
60
-
61
-            if ($count >= 1) {
62
-                $exists = true;
63
-                break;
64
-            }
65
-        }
66
-        return $exists;
67
-    }
68
-
69
-    /**
70
-     * Create a "contact us" userform. Please note that this form does not have any recipients by default, so
71
-     * no emails will be sent. To add recipients - edit the page in the CMS and add a recipient via the "Recipients"
72
-     * tab.
73
-     *
74
-     * @return $this
75
-     */
76
-    protected function createContactForm()
77
-    {
78
-        $form = UserDefinedForm::create(array(
79
-            'Title' => 'Contact',
80
-            'URLSegment' => 'contact',
81
-            'Content' => '<p>$UserDefinedForm</p>',
82
-            'SubmitButtonText' => 'Submit',
83
-            'ClearButtonText' => 'Clear',
84
-            'OnCompleteMessage' => "<p>Thanks, we've received your submission and will be in touch shortly.</p>",
85
-            'EnableLiveValidation' => true
86
-        ));
87
-
88
-        $form->write();
89
-
90
-        // Add form fields
91
-        $fields = array(
92
-            EditableFormStep::create([
93
-                'Title' => _t(
94
-                    'SilverStripe\\UserForms\\Model\\EditableFormField\\EditableFormStep.TITLE_FIRST',
95
-                    'First Page'
96
-                )
97
-            ]),
98
-            EditableTextField::create([
99
-                'Title' => 'Name',
100
-                'Required' => true,
101
-                'RightTitle' => 'Please enter your first and last name'
102
-            ]),
103
-            EditableEmailField::create([
104
-                'Title' => Email::class,
105
-                'Required' => true,
106
-                'Placeholder' => '[email protected]'
107
-            ]),
108
-            EditableTextField::create([
109
-                'Title' => 'Subject'
110
-            ]),
111
-            EditableTextField::create([
112
-                'Title' => 'Message',
113
-                'Required' => true,
114
-                'Rows' => 5
115
-            ])
116
-        );
117
-
118
-        foreach ($fields as $field) {
119
-            $field->write();
120
-            $form->Fields()->add($field);
121
-            $field->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
122
-        }
123
-
124
-        $form->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
125
-        $form->flushCache();
126
-
127
-        $this->output(' + Created "contact" UserDefinedForm page');
128
-
129
-        return $this;
130
-    }
131
-
132
-    /**
133
-     * Output a message either to the console or browser
134
-     *
135
-     * @param  string $message
136
-     * @return $this
137
-     */
138
-    protected function output($message)
139
-    {
140
-        if (Director::is_cli()) {
141
-            $message .= PHP_EOL;
142
-        } else {
143
-            $message = sprintf('<p>%s</p>', $message);
144
-        }
145
-        echo $message;
146
-
147
-        return $this;
148
-    }
20
+	protected $title = 'Populate sample data for theme demo';
21
+
22
+	protected $description = 'Populates some sample data for showcasing the functionality of the '
23
+		. 'starter and Wātea themes';
24
+
25
+	/**
26
+	 * A series of method calls to create sample data
27
+	 *
28
+	 * @param HTTPRequest $request
29
+	 */
30
+	public function run($request)
31
+	{
32
+		$this->handleContactForm();
33
+	}
34
+
35
+	/**
36
+	 * Decide whether to create a contact user defined form, and call it to be be created if so
37
+	 *
38
+	 * @return $this
39
+	 */
40
+	protected function handleContactForm()
41
+	{
42
+		if (!$this->getContactFormExists()) {
43
+			$this->createContactForm();
44
+		}
45
+		return $this;
46
+	}
47
+
48
+	/**
49
+	 * Determine whether a "contact us" userform exists yet
50
+	 *
51
+	 * @return bool
52
+	 */
53
+	protected function getContactFormExists()
54
+	{
55
+		$exists = false;
56
+		foreach (UserDefinedForm::get()->column('ID') as $formId) {
57
+			$count = Versioned::get_all_versions(UserDefinedForm::class, $formId)
58
+				->filter('URLSegment', 'contact')
59
+				->count();
60
+
61
+			if ($count >= 1) {
62
+				$exists = true;
63
+				break;
64
+			}
65
+		}
66
+		return $exists;
67
+	}
68
+
69
+	/**
70
+	 * Create a "contact us" userform. Please note that this form does not have any recipients by default, so
71
+	 * no emails will be sent. To add recipients - edit the page in the CMS and add a recipient via the "Recipients"
72
+	 * tab.
73
+	 *
74
+	 * @return $this
75
+	 */
76
+	protected function createContactForm()
77
+	{
78
+		$form = UserDefinedForm::create(array(
79
+			'Title' => 'Contact',
80
+			'URLSegment' => 'contact',
81
+			'Content' => '<p>$UserDefinedForm</p>',
82
+			'SubmitButtonText' => 'Submit',
83
+			'ClearButtonText' => 'Clear',
84
+			'OnCompleteMessage' => "<p>Thanks, we've received your submission and will be in touch shortly.</p>",
85
+			'EnableLiveValidation' => true
86
+		));
87
+
88
+		$form->write();
89
+
90
+		// Add form fields
91
+		$fields = array(
92
+			EditableFormStep::create([
93
+				'Title' => _t(
94
+					'SilverStripe\\UserForms\\Model\\EditableFormField\\EditableFormStep.TITLE_FIRST',
95
+					'First Page'
96
+				)
97
+			]),
98
+			EditableTextField::create([
99
+				'Title' => 'Name',
100
+				'Required' => true,
101
+				'RightTitle' => 'Please enter your first and last name'
102
+			]),
103
+			EditableEmailField::create([
104
+				'Title' => Email::class,
105
+				'Required' => true,
106
+				'Placeholder' => '[email protected]'
107
+			]),
108
+			EditableTextField::create([
109
+				'Title' => 'Subject'
110
+			]),
111
+			EditableTextField::create([
112
+				'Title' => 'Message',
113
+				'Required' => true,
114
+				'Rows' => 5
115
+			])
116
+		);
117
+
118
+		foreach ($fields as $field) {
119
+			$field->write();
120
+			$form->Fields()->add($field);
121
+			$field->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
122
+		}
123
+
124
+		$form->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
125
+		$form->flushCache();
126
+
127
+		$this->output(' + Created "contact" UserDefinedForm page');
128
+
129
+		return $this;
130
+	}
131
+
132
+	/**
133
+	 * Output a message either to the console or browser
134
+	 *
135
+	 * @param  string $message
136
+	 * @return $this
137
+	 */
138
+	protected function output($message)
139
+	{
140
+		if (Director::is_cli()) {
141
+			$message .= PHP_EOL;
142
+		} else {
143
+			$message = sprintf('<p>%s</p>', $message);
144
+		}
145
+		echo $message;
146
+
147
+		return $this;
148
+	}
149 149
 }
Please login to merge, or discard this patch.
src/PageTypes/BasePageController.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
     {
86 86
         //if base url YML is defined in YML, use that
87 87
         if (Config::inst()->get(BasePage::class, 'pdf_base_url')) {
88
-            $pdfBaseUrl = Config::inst()->get(BasePage::class, 'pdf_base_url').'/';
88
+            $pdfBaseUrl = Config::inst()->get(BasePage::class, 'pdf_base_url') . '/';
89 89
             //otherwise, if we are CWP use the secure domain
90 90
         } elseif (Environment::getEnv('CWP_SECURE_DOMAIN')) {
91 91
             $pdfBaseUrl = Environment::getEnv('CWP_SECURE_DOMAIN') . '/';
@@ -273,7 +273,7 @@  discard block
 block discarded – undo
273 273
         if ($results) {
274 274
             $response = $response
275 275
                 ->customise($results)
276
-                ->customise(array( 'Results' => $results->getResults() ));
276
+                ->customise(array('Results' => $results->getResults()));
277 277
         }
278 278
 
279 279
         // Render
Please login to merge, or discard this patch.
Indentation   +283 added lines, -283 removed lines patch added patch discarded remove patch
@@ -21,293 +21,293 @@
 block discarded – undo
21 21
 
22 22
 class BasePageController extends ContentController
23 23
 {
24
-    private static $allowed_actions = [
25
-        'downloadpdf',
26
-        'SearchForm',
27
-        'results',
28
-    ];
29
-
30
-    /**
31
-     * How many search results should be shown per-page?
32
-     *
33
-     * @config
34
-     * @var int
35
-     */
36
-    private static $results_per_page = 10;
37
-
38
-    /**
39
-     * If spelling suggestions for searches are given, enable
40
-     * suggested searches to be followed immediately
41
-     *
42
-     * @config
43
-     * @var bool
44
-     */
45
-    private static $search_follow_suggestions = true;
46
-
47
-    /**
48
-     * Which classes should be queried when searching?
49
-     *
50
-     * @config
51
-     * @var array
52
-     */
53
-    private static $classes_to_search = [
54
-        [
55
-            'class' => 'Page',
56
-            'includeSubclasses' => true,
57
-        ]
58
-    ];
59
-
60
-    /**
61
-     * Serve the page rendered as PDF.
62
-     */
63
-    public function downloadpdf()
64
-    {
65
-        if (!Config::inst()->get(BasePage::class, 'pdf_export')) {
66
-            return false;
67
-        }
68
-
69
-        // We only allow producing live pdf. There is no way to secure the draft files.
70
-        Versioned::set_stage(Versioned::LIVE);
71
-
72
-        $path = $this->dataRecord->getPdfFilename();
73
-        if (!file_exists($path)) {
74
-            $this->generatePDF();
75
-        }
76
-
77
-        return HTTPRequest::send_file(file_get_contents($path), basename($path), 'application/pdf');
78
-    }
79
-
80
-    /*
24
+	private static $allowed_actions = [
25
+		'downloadpdf',
26
+		'SearchForm',
27
+		'results',
28
+	];
29
+
30
+	/**
31
+	 * How many search results should be shown per-page?
32
+	 *
33
+	 * @config
34
+	 * @var int
35
+	 */
36
+	private static $results_per_page = 10;
37
+
38
+	/**
39
+	 * If spelling suggestions for searches are given, enable
40
+	 * suggested searches to be followed immediately
41
+	 *
42
+	 * @config
43
+	 * @var bool
44
+	 */
45
+	private static $search_follow_suggestions = true;
46
+
47
+	/**
48
+	 * Which classes should be queried when searching?
49
+	 *
50
+	 * @config
51
+	 * @var array
52
+	 */
53
+	private static $classes_to_search = [
54
+		[
55
+			'class' => 'Page',
56
+			'includeSubclasses' => true,
57
+		]
58
+	];
59
+
60
+	/**
61
+	 * Serve the page rendered as PDF.
62
+	 */
63
+	public function downloadpdf()
64
+	{
65
+		if (!Config::inst()->get(BasePage::class, 'pdf_export')) {
66
+			return false;
67
+		}
68
+
69
+		// We only allow producing live pdf. There is no way to secure the draft files.
70
+		Versioned::set_stage(Versioned::LIVE);
71
+
72
+		$path = $this->dataRecord->getPdfFilename();
73
+		if (!file_exists($path)) {
74
+			$this->generatePDF();
75
+		}
76
+
77
+		return HTTPRequest::send_file(file_get_contents($path), basename($path), 'application/pdf');
78
+	}
79
+
80
+	/*
81 81
     * This will return either pdf_base_url from YML, CWP_SECURE_DOMAIN
82 82
     * from _ss_environment, or blank. In that order of importance.
83 83
     */
84
-    public function getPDFBaseURL()
85
-    {
86
-        //if base url YML is defined in YML, use that
87
-        if (Config::inst()->get(BasePage::class, 'pdf_base_url')) {
88
-            $pdfBaseUrl = Config::inst()->get(BasePage::class, 'pdf_base_url').'/';
89
-            //otherwise, if we are CWP use the secure domain
90
-        } elseif (Environment::getEnv('CWP_SECURE_DOMAIN')) {
91
-            $pdfBaseUrl = Environment::getEnv('CWP_SECURE_DOMAIN') . '/';
92
-            //or if neither, leave blank
93
-        } else {
94
-            $pdfBaseUrl = '';
95
-        }
96
-        return $pdfBaseUrl;
97
-    }
98
-
99
-    /*
84
+	public function getPDFBaseURL()
85
+	{
86
+		//if base url YML is defined in YML, use that
87
+		if (Config::inst()->get(BasePage::class, 'pdf_base_url')) {
88
+			$pdfBaseUrl = Config::inst()->get(BasePage::class, 'pdf_base_url').'/';
89
+			//otherwise, if we are CWP use the secure domain
90
+		} elseif (Environment::getEnv('CWP_SECURE_DOMAIN')) {
91
+			$pdfBaseUrl = Environment::getEnv('CWP_SECURE_DOMAIN') . '/';
92
+			//or if neither, leave blank
93
+		} else {
94
+			$pdfBaseUrl = '';
95
+		}
96
+		return $pdfBaseUrl;
97
+	}
98
+
99
+	/*
100 100
     * Don't use the proxy if the pdf domain is the CWP secure domain
101 101
     * Or if we aren't on a CWP server
102 102
     */
103
-    public function getPDFProxy($pdfBaseUrl)
104
-    {
105
-        if (!Environment::getEnv('CWP_SECURE_DOMAIN')
106
-            || $pdfBaseUrl == Environment::getEnv('CWP_SECURE_DOMAIN') . '/'
107
-        ) {
108
-            $proxy = '';
109
-        } else {
110
-            $proxy = ' --proxy ' . Environment::getEnv('SS_OUTBOUND_PROXY')
111
-                . ':' . Environment::getEnv('SS_OUTBOUND_PROXY_PORT');
112
-        }
113
-        return $proxy;
114
-    }
115
-
116
-    /**
117
-     * Render the page as PDF using wkhtmltopdf.
118
-     */
119
-    public function generatePDF()
120
-    {
121
-        if (!Config::inst()->get(BasePage::class, 'pdf_export')) {
122
-            return false;
123
-        }
124
-
125
-        $binaryPath = Config::inst()->get(BasePage::class, 'wkhtmltopdf_binary');
126
-        if (!$binaryPath || !is_executable($binaryPath)) {
127
-            if (Environment::getEnv('WKHTMLTOPDF_BINARY')
128
-                && is_executable(Environment::getEnv('WKHTMLTOPDF_BINARY'))
129
-            ) {
130
-                $binaryPath = Environment::getEnv('WKHTMLTOPDF_BINARY');
131
-            }
132
-        }
133
-
134
-        if (!$binaryPath) {
135
-            user_error('Neither WKHTMLTOPDF_BINARY nor BasePage.wkhtmltopdf_binary are defined', E_USER_ERROR);
136
-        }
137
-
138
-        if (Versioned::get_reading_mode() == 'Stage.Stage') {
139
-            user_error('Generating PDFs on draft is not supported', E_USER_ERROR);
140
-        }
141
-
142
-        set_time_limit(60);
143
-
144
-        // prepare the paths
145
-        $pdfFile = $this->dataRecord->getPdfFilename();
146
-        $bodyFile = str_replace('.pdf', '_pdf.html', $pdfFile);
147
-        $footerFile = str_replace('.pdf', '_pdffooter.html', $pdfFile);
148
-
149
-        // make sure the work directory exists
150
-        if (!file_exists(dirname($pdfFile))) {
151
-            Filesystem::makeFolder(dirname($pdfFile));
152
-        }
153
-
154
-        //decide the domain to use in generation
155
-        $pdfBaseUrl = $this->getPDFBaseURL();
156
-
157
-        // Force http protocol on CWP - fetching from localhost without using the proxy, SSL terminates on gateway.
158
-        if (Environment::getEnv('CWP_ENVIRONMENT')) {
159
-            Config::modify()->set(Director::class, 'alternate_protocol', 'http');
160
-            //only set alternate protocol if CWP_SECURE_DOMAIN is defined OR pdf_base_url is
161
-            if ($pdfBaseUrl) {
162
-                Config::modify()->set(Director::class, 'alternate_base_url', 'http://' . $pdfBaseUrl);
163
-            }
164
-        }
165
-
166
-        $bodyViewer = $this->getViewer('pdf');
167
-
168
-        // write the output of this page to HTML, ready for conversion to PDF
169
-        file_put_contents($bodyFile, $bodyViewer->process($this));
170
-
171
-        // get the viewer for the current template with _pdffooter
172
-        $footerViewer = $this->getViewer('pdffooter');
173
-
174
-        // write the output of the footer template to HTML, ready for conversion to PDF
175
-        file_put_contents($footerFile, $footerViewer->process($this));
176
-
177
-        //decide what the proxy should look like
178
-        $proxy = $this->getPDFProxy($pdfBaseUrl);
179
-
180
-        // finally, generate the PDF
181
-        $command = $binaryPath . $proxy . ' --outline -B 40pt -L 20pt -R 20pt -T 20pt --encoding utf-8 '
182
-            . '--orientation Portrait --disable-javascript --quiet --print-media-type ';
183
-        $retVal = 0;
184
-        $output = array();
185
-        exec(
186
-            $command . " --footer-html \"$footerFile\" \"$bodyFile\" \"$pdfFile\" &> /dev/stdout",
187
-            $output,
188
-            $retVal
189
-        );
190
-
191
-        // remove temporary file
192
-        unlink($bodyFile);
193
-        unlink($footerFile);
194
-
195
-        // output any errors
196
-        if ($retVal != 0) {
197
-            user_error('wkhtmltopdf failed: ' . implode("\n", $output), E_USER_ERROR);
198
-        }
199
-
200
-        // serve the generated file
201
-        return HTTPRequest::send_file(file_get_contents($pdfFile), basename($pdfFile), 'application/pdf');
202
-    }
203
-
204
-    /**
205
-     * Site search form
206
-     */
207
-    public function SearchForm()
208
-    {
209
-        $searchText = $this->getRequest()->getVar('Search');
210
-
211
-        $fields = FieldList::create(
212
-            TextField::create('Search', false, $searchText)
213
-        );
214
-        $actions = FieldList::create(
215
-            FormAction::create('results', _t('SilverStripe\\CMS\\Search\\SearchForm.GO', 'Go'))
216
-        );
217
-
218
-        $form = SearchForm::create($this, SearchForm::class, $fields, $actions);
219
-        $form->setFormAction('search/SearchForm');
220
-
221
-        return $form;
222
-    }
223
-
224
-    /**
225
-     * Get search form with _header suffix
226
-     *
227
-     * @return SearchForm
228
-     */
229
-    public function HeaderSearchForm()
230
-    {
231
-        return $this->SearchForm()->setTemplate('SearchForm_header');
232
-    }
233
-
234
-    /**
235
-     * Process and render search results.
236
-     *
237
-     * @param array $data The raw request data submitted by user
238
-     * @param SearchForm $form The form instance that was submitted
239
-     * @param HTTPRequest $request Request generated for this action
240
-     * @return DBHTMLText
241
-     */
242
-    public function results($data, $form, $request)
243
-    {
244
-        // Check parameters for terms, pagination, and if we should follow suggestions
245
-        $keywords = empty($data['Search']) ? '' : $data['Search'];
246
-        $start = isset($data['start']) ? $data['start'] : 0;
247
-        $suggestions = isset($data['suggestions'])
248
-            ? $data['suggestions']
249
-            : $this->config()->get('search_follow_suggestions');
250
-
251
-        $results = CwpSearchEngine::create()
252
-            ->search(
253
-                $keywords,
254
-                $this->config()->get('classes_to_search'),
255
-                Injector::inst()->get(CwpSearchEngine::class . '.search_index'),
256
-                $this->config()->get('results_per_page'),
257
-                $start,
258
-                $suggestions
259
-            );
260
-
261
-        // Customise content with these results
262
-        $properties = [
263
-            'MetaTitle' => _t(__CLASS__ . '.MetaTitle', 'Search {keywords}', ['keywords' => $keywords]),
264
-            'NoSearchResults' => _t(__CLASS__ . '.NoResult', 'Sorry, your search query did not return any results.'),
265
-            'EmptySearch' => _t(__CLASS__ . '.EmptySearch', 'Search field empty, please enter your search query.'),
266
-            'PdfLink' => '',
267
-            'Title' => _t('SilverStripe\\CMS\\Search\\SearchForm.SearchResults', 'Search Results'),
268
-        ];
269
-        $this->extend('updateSearchResults', $results, $properties);
270
-
271
-        // Customise page
272
-        $response = $this->customise($properties);
273
-        if ($results) {
274
-            $response = $response
275
-                ->customise($results)
276
-                ->customise(array( 'Results' => $results->getResults() ));
277
-        }
278
-
279
-        // Render
280
-        $templates = $this->getResultsTemplate($request);
281
-        return $response->renderWith($templates);
282
-    }
283
-
284
-    /**
285
-     * Select the template to render search results with
286
-     *
287
-     * @param HTTPRequest $request
288
-     * @return array
289
-     */
290
-    protected function getResultsTemplate($request)
291
-    {
292
-        $templates = [Page::class . '_results', Page::class];
293
-        if ($request->getVar('format') == 'rss') {
294
-            array_unshift($templates, 'Page_results_rss');
295
-        }
296
-        if ($request->getVar('format') == 'atom') {
297
-            array_unshift($templates, 'Page_results_atom');
298
-        }
299
-        return $templates;
300
-    }
301
-
302
-    /**
303
-     * Provide current year.
304
-     */
305
-    public function CurrentDatetime()
306
-    {
307
-        return DBDatetime::now();
308
-    }
309
-
310
-    public function getRSSLink()
311
-    {
312
-    }
103
+	public function getPDFProxy($pdfBaseUrl)
104
+	{
105
+		if (!Environment::getEnv('CWP_SECURE_DOMAIN')
106
+			|| $pdfBaseUrl == Environment::getEnv('CWP_SECURE_DOMAIN') . '/'
107
+		) {
108
+			$proxy = '';
109
+		} else {
110
+			$proxy = ' --proxy ' . Environment::getEnv('SS_OUTBOUND_PROXY')
111
+				. ':' . Environment::getEnv('SS_OUTBOUND_PROXY_PORT');
112
+		}
113
+		return $proxy;
114
+	}
115
+
116
+	/**
117
+	 * Render the page as PDF using wkhtmltopdf.
118
+	 */
119
+	public function generatePDF()
120
+	{
121
+		if (!Config::inst()->get(BasePage::class, 'pdf_export')) {
122
+			return false;
123
+		}
124
+
125
+		$binaryPath = Config::inst()->get(BasePage::class, 'wkhtmltopdf_binary');
126
+		if (!$binaryPath || !is_executable($binaryPath)) {
127
+			if (Environment::getEnv('WKHTMLTOPDF_BINARY')
128
+				&& is_executable(Environment::getEnv('WKHTMLTOPDF_BINARY'))
129
+			) {
130
+				$binaryPath = Environment::getEnv('WKHTMLTOPDF_BINARY');
131
+			}
132
+		}
133
+
134
+		if (!$binaryPath) {
135
+			user_error('Neither WKHTMLTOPDF_BINARY nor BasePage.wkhtmltopdf_binary are defined', E_USER_ERROR);
136
+		}
137
+
138
+		if (Versioned::get_reading_mode() == 'Stage.Stage') {
139
+			user_error('Generating PDFs on draft is not supported', E_USER_ERROR);
140
+		}
141
+
142
+		set_time_limit(60);
143
+
144
+		// prepare the paths
145
+		$pdfFile = $this->dataRecord->getPdfFilename();
146
+		$bodyFile = str_replace('.pdf', '_pdf.html', $pdfFile);
147
+		$footerFile = str_replace('.pdf', '_pdffooter.html', $pdfFile);
148
+
149
+		// make sure the work directory exists
150
+		if (!file_exists(dirname($pdfFile))) {
151
+			Filesystem::makeFolder(dirname($pdfFile));
152
+		}
153
+
154
+		//decide the domain to use in generation
155
+		$pdfBaseUrl = $this->getPDFBaseURL();
156
+
157
+		// Force http protocol on CWP - fetching from localhost without using the proxy, SSL terminates on gateway.
158
+		if (Environment::getEnv('CWP_ENVIRONMENT')) {
159
+			Config::modify()->set(Director::class, 'alternate_protocol', 'http');
160
+			//only set alternate protocol if CWP_SECURE_DOMAIN is defined OR pdf_base_url is
161
+			if ($pdfBaseUrl) {
162
+				Config::modify()->set(Director::class, 'alternate_base_url', 'http://' . $pdfBaseUrl);
163
+			}
164
+		}
165
+
166
+		$bodyViewer = $this->getViewer('pdf');
167
+
168
+		// write the output of this page to HTML, ready for conversion to PDF
169
+		file_put_contents($bodyFile, $bodyViewer->process($this));
170
+
171
+		// get the viewer for the current template with _pdffooter
172
+		$footerViewer = $this->getViewer('pdffooter');
173
+
174
+		// write the output of the footer template to HTML, ready for conversion to PDF
175
+		file_put_contents($footerFile, $footerViewer->process($this));
176
+
177
+		//decide what the proxy should look like
178
+		$proxy = $this->getPDFProxy($pdfBaseUrl);
179
+
180
+		// finally, generate the PDF
181
+		$command = $binaryPath . $proxy . ' --outline -B 40pt -L 20pt -R 20pt -T 20pt --encoding utf-8 '
182
+			. '--orientation Portrait --disable-javascript --quiet --print-media-type ';
183
+		$retVal = 0;
184
+		$output = array();
185
+		exec(
186
+			$command . " --footer-html \"$footerFile\" \"$bodyFile\" \"$pdfFile\" &> /dev/stdout",
187
+			$output,
188
+			$retVal
189
+		);
190
+
191
+		// remove temporary file
192
+		unlink($bodyFile);
193
+		unlink($footerFile);
194
+
195
+		// output any errors
196
+		if ($retVal != 0) {
197
+			user_error('wkhtmltopdf failed: ' . implode("\n", $output), E_USER_ERROR);
198
+		}
199
+
200
+		// serve the generated file
201
+		return HTTPRequest::send_file(file_get_contents($pdfFile), basename($pdfFile), 'application/pdf');
202
+	}
203
+
204
+	/**
205
+	 * Site search form
206
+	 */
207
+	public function SearchForm()
208
+	{
209
+		$searchText = $this->getRequest()->getVar('Search');
210
+
211
+		$fields = FieldList::create(
212
+			TextField::create('Search', false, $searchText)
213
+		);
214
+		$actions = FieldList::create(
215
+			FormAction::create('results', _t('SilverStripe\\CMS\\Search\\SearchForm.GO', 'Go'))
216
+		);
217
+
218
+		$form = SearchForm::create($this, SearchForm::class, $fields, $actions);
219
+		$form->setFormAction('search/SearchForm');
220
+
221
+		return $form;
222
+	}
223
+
224
+	/**
225
+	 * Get search form with _header suffix
226
+	 *
227
+	 * @return SearchForm
228
+	 */
229
+	public function HeaderSearchForm()
230
+	{
231
+		return $this->SearchForm()->setTemplate('SearchForm_header');
232
+	}
233
+
234
+	/**
235
+	 * Process and render search results.
236
+	 *
237
+	 * @param array $data The raw request data submitted by user
238
+	 * @param SearchForm $form The form instance that was submitted
239
+	 * @param HTTPRequest $request Request generated for this action
240
+	 * @return DBHTMLText
241
+	 */
242
+	public function results($data, $form, $request)
243
+	{
244
+		// Check parameters for terms, pagination, and if we should follow suggestions
245
+		$keywords = empty($data['Search']) ? '' : $data['Search'];
246
+		$start = isset($data['start']) ? $data['start'] : 0;
247
+		$suggestions = isset($data['suggestions'])
248
+			? $data['suggestions']
249
+			: $this->config()->get('search_follow_suggestions');
250
+
251
+		$results = CwpSearchEngine::create()
252
+			->search(
253
+				$keywords,
254
+				$this->config()->get('classes_to_search'),
255
+				Injector::inst()->get(CwpSearchEngine::class . '.search_index'),
256
+				$this->config()->get('results_per_page'),
257
+				$start,
258
+				$suggestions
259
+			);
260
+
261
+		// Customise content with these results
262
+		$properties = [
263
+			'MetaTitle' => _t(__CLASS__ . '.MetaTitle', 'Search {keywords}', ['keywords' => $keywords]),
264
+			'NoSearchResults' => _t(__CLASS__ . '.NoResult', 'Sorry, your search query did not return any results.'),
265
+			'EmptySearch' => _t(__CLASS__ . '.EmptySearch', 'Search field empty, please enter your search query.'),
266
+			'PdfLink' => '',
267
+			'Title' => _t('SilverStripe\\CMS\\Search\\SearchForm.SearchResults', 'Search Results'),
268
+		];
269
+		$this->extend('updateSearchResults', $results, $properties);
270
+
271
+		// Customise page
272
+		$response = $this->customise($properties);
273
+		if ($results) {
274
+			$response = $response
275
+				->customise($results)
276
+				->customise(array( 'Results' => $results->getResults() ));
277
+		}
278
+
279
+		// Render
280
+		$templates = $this->getResultsTemplate($request);
281
+		return $response->renderWith($templates);
282
+	}
283
+
284
+	/**
285
+	 * Select the template to render search results with
286
+	 *
287
+	 * @param HTTPRequest $request
288
+	 * @return array
289
+	 */
290
+	protected function getResultsTemplate($request)
291
+	{
292
+		$templates = [Page::class . '_results', Page::class];
293
+		if ($request->getVar('format') == 'rss') {
294
+			array_unshift($templates, 'Page_results_rss');
295
+		}
296
+		if ($request->getVar('format') == 'atom') {
297
+			array_unshift($templates, 'Page_results_atom');
298
+		}
299
+		return $templates;
300
+	}
301
+
302
+	/**
303
+	 * Provide current year.
304
+	 */
305
+	public function CurrentDatetime()
306
+	{
307
+		return DBDatetime::now();
308
+	}
309
+
310
+	public function getRSSLink()
311
+	{
312
+	}
313 313
 }
Please login to merge, or discard this patch.