Completed
Pull Request — master (#26)
by Robbie
02:32
created
src/Tasks/CleanupGeneratedPdfBuildTask.php 1 patch
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -7,24 +7,24 @@
 block discarded – undo
7 7
 
8 8
 class CleanupGeneratedPdfBuildTask extends BuildTask
9 9
 {
10
-    protected $title = 'Cleanup generated PDFs';
10
+	protected $title = 'Cleanup generated PDFs';
11 11
 
12
-    protected $description = 'Removes generated PDFs on the site, forcing a regeneration of all exports to PDF '
13
-        . 'when users go to download them. This is most useful when templates have been changed so users should '
14
-        . 'receive a new copy';
12
+	protected $description = 'Removes generated PDFs on the site, forcing a regeneration of all exports to PDF '
13
+		. 'when users go to download them. This is most useful when templates have been changed so users should '
14
+		. 'receive a new copy';
15 15
 
16
-    public function run($request)
17
-    {
18
-        $path = sprintf('%s/%s', BASE_PATH, BasePage::config()->generated_pdf_path);
19
-        if (!file_exists($path)) {
20
-            return false;
21
-        }
16
+	public function run($request)
17
+	{
18
+		$path = sprintf('%s/%s', BASE_PATH, BasePage::config()->generated_pdf_path);
19
+		if (!file_exists($path)) {
20
+			return false;
21
+		}
22 22
 
23
-        exec(sprintf('if [ "$(ls -A %s 2> /dev/null)" != "" ]; then rm %s/*; fi', $path, $path), $output, $return_val);
23
+		exec(sprintf('if [ "$(ls -A %s 2> /dev/null)" != "" ]; then rm %s/*; fi', $path, $path), $output, $return_val);
24 24
 
25
-        // output any errors
26
-        if ($return_val != 0) {
27
-            user_error(sprintf('%s failed: ', get_class($this)) . implode("\n", $output), E_USER_ERROR);
28
-        }
29
-    }
25
+		// output any errors
26
+		if ($return_val != 0) {
27
+			user_error(sprintf('%s failed: ', get_class($this)) . implode("\n", $output), E_USER_ERROR);
28
+		}
29
+	}
30 30
 }
Please login to merge, or discard this patch.
src/Search/CwpSearchEngine.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -16,138 +16,138 @@
 block discarded – undo
16 16
  */
17 17
 class CwpSearchEngine
18 18
 {
19
-    use Configurable;
20
-    use Extensible;
21
-    use Injectable;
22
-
23
-    /**
24
-     * Default search options
25
-     *
26
-     * @var array
27
-     * @config
28
-     */
29
-    private static $search_options = [
30
-        'hl' => 'true',
31
-    ];
32
-
33
-    /**
34
-     * Additional search options to send to search when spellcheck
35
-     * is included
36
-     *
37
-     * @var array
38
-     * @config
39
-     */
40
-    private static $spellcheck_options = [
41
-        'spellcheck' => 'true',
42
-        'spellcheck.collate' => 'true',
43
-        // spellcheck.dictionary can also be configured to use '_spellcheck'
44
-        // dictionary when indexing fields under the _spellcheckText column
45
-        'spellcheck.dictionary' => 'default',
46
-    ];
47
-
48
-    /**
49
-     * Build a SearchQuery for a new search
50
-     *
51
-     * @param string $keywords
52
-     * @param array $classes
53
-     * @return SearchQuery
54
-     */
55
-    protected function getSearchQuery($keywords, $classes)
56
-    {
57
-        $query = new SearchQuery();
58
-        $query->classes = $classes;
59
-        $query->search($keywords);
60
-        $query->exclude('SiteTree_ShowInSearch', 0);
61
-        $query->exclude('File_ShowInSearch', 0);
62
-
63
-        // Artificially lower the amount of results to prevent too high resource usage.
64
-        // on subsequent canView check loop.
65
-        $query->limit(100);
66
-        return $query;
67
-    }
68
-
69
-    /**
70
-     * Get solr search options for this query
71
-     *
72
-     * @param bool $spellcheck True if we should include spellcheck support
73
-     * @return array
74
-     */
75
-    protected function getSearchOptions($spellcheck)
76
-    {
77
-        $options = $this->config()->search_options;
78
-        if ($spellcheck) {
79
-            $options = array_merge($options, $this->config()->spellcheck_options);
80
-        }
81
-        return $options;
82
-    }
83
-
84
-    /**
85
-     * Get results for a search term
86
-     *
87
-     * @param string $keywords
88
-     * @param array $classes
89
-     * @param SolrIndex $searchIndex
90
-     * @param int $limit Max number of results for this page
91
-     * @param int $start Skip this number of records
92
-     * @param bool $spellcheck True to enable spellcheck
93
-     * @return CwpSearchResult
94
-     */
95
-    protected function getResult($keywords, $classes, $searchIndex, $limit = -1, $start = 0, $spellcheck = false)
96
-    {
97
-        // Prepare options
98
-        $query = $this->getSearchQuery($keywords, $classes);
99
-        $options = $this->getSearchOptions($spellcheck);
100
-
101
-        // Get results
102
-        $solrResult = $searchIndex->search(
103
-            $query,
104
-            $start,
105
-            $limit,
106
-            $options
107
-        );
108
-
109
-        return CwpSearchResult::create($keywords, $solrResult);
110
-    }
111
-
112
-    /**
113
-     * Get a CwpSearchResult for a given criterea
114
-     *
115
-     * @param string $keywords
116
-     * @param array $classes
117
-     * @param SolrIndex $searchIndex
118
-     * @param int $limit Max number of results for this page
119
-     * @param int $start Skip this number of records
120
-     * @param bool $followSuggestions True to enable suggested searches to be returned immediately
121
-     * @return CwpSearchResult|null
122
-     */
123
-    public function search($keywords, $classes, $searchIndex, $limit = -1, $start = 0, $followSuggestions = false)
124
-    {
125
-        if (empty($keywords)) {
126
-            return null;
127
-        }
128
-
129
-        try {
130
-            // Begin search
131
-            $result = $this->getResult($keywords, $classes, $searchIndex, $limit, $start, true);
132
-
133
-            // Return results if we don't need to refine this any further
134
-            if (!$followSuggestions || $result->hasResults() || !$result->getSuggestion()) {
135
-                return $result;
136
-            }
137
-
138
-            // Perform new search with the suggested terms
139
-            $suggested = $result->getSuggestion();
140
-            $newResult = $this->getResult($suggested, $classes, $searchIndex, $limit, $start, false);
141
-            $newResult->setOriginal($keywords);
142
-
143
-            // Compare new results to the original query
144
-            if ($newResult->hasResults()) {
145
-                return $newResult;
146
-            } else {
147
-                return $result;
148
-            }
149
-        } catch (Exception $e) {
150
-            Injector::inst()->get(LoggerInterface::class)->warning($e);
151
-        }
152
-    }
19
+	use Configurable;
20
+	use Extensible;
21
+	use Injectable;
22
+
23
+	/**
24
+	 * Default search options
25
+	 *
26
+	 * @var array
27
+	 * @config
28
+	 */
29
+	private static $search_options = [
30
+		'hl' => 'true',
31
+	];
32
+
33
+	/**
34
+	 * Additional search options to send to search when spellcheck
35
+	 * is included
36
+	 *
37
+	 * @var array
38
+	 * @config
39
+	 */
40
+	private static $spellcheck_options = [
41
+		'spellcheck' => 'true',
42
+		'spellcheck.collate' => 'true',
43
+		// spellcheck.dictionary can also be configured to use '_spellcheck'
44
+		// dictionary when indexing fields under the _spellcheckText column
45
+		'spellcheck.dictionary' => 'default',
46
+	];
47
+
48
+	/**
49
+	 * Build a SearchQuery for a new search
50
+	 *
51
+	 * @param string $keywords
52
+	 * @param array $classes
53
+	 * @return SearchQuery
54
+	 */
55
+	protected function getSearchQuery($keywords, $classes)
56
+	{
57
+		$query = new SearchQuery();
58
+		$query->classes = $classes;
59
+		$query->search($keywords);
60
+		$query->exclude('SiteTree_ShowInSearch', 0);
61
+		$query->exclude('File_ShowInSearch', 0);
62
+
63
+		// Artificially lower the amount of results to prevent too high resource usage.
64
+		// on subsequent canView check loop.
65
+		$query->limit(100);
66
+		return $query;
67
+	}
68
+
69
+	/**
70
+	 * Get solr search options for this query
71
+	 *
72
+	 * @param bool $spellcheck True if we should include spellcheck support
73
+	 * @return array
74
+	 */
75
+	protected function getSearchOptions($spellcheck)
76
+	{
77
+		$options = $this->config()->search_options;
78
+		if ($spellcheck) {
79
+			$options = array_merge($options, $this->config()->spellcheck_options);
80
+		}
81
+		return $options;
82
+	}
83
+
84
+	/**
85
+	 * Get results for a search term
86
+	 *
87
+	 * @param string $keywords
88
+	 * @param array $classes
89
+	 * @param SolrIndex $searchIndex
90
+	 * @param int $limit Max number of results for this page
91
+	 * @param int $start Skip this number of records
92
+	 * @param bool $spellcheck True to enable spellcheck
93
+	 * @return CwpSearchResult
94
+	 */
95
+	protected function getResult($keywords, $classes, $searchIndex, $limit = -1, $start = 0, $spellcheck = false)
96
+	{
97
+		// Prepare options
98
+		$query = $this->getSearchQuery($keywords, $classes);
99
+		$options = $this->getSearchOptions($spellcheck);
100
+
101
+		// Get results
102
+		$solrResult = $searchIndex->search(
103
+			$query,
104
+			$start,
105
+			$limit,
106
+			$options
107
+		);
108
+
109
+		return CwpSearchResult::create($keywords, $solrResult);
110
+	}
111
+
112
+	/**
113
+	 * Get a CwpSearchResult for a given criterea
114
+	 *
115
+	 * @param string $keywords
116
+	 * @param array $classes
117
+	 * @param SolrIndex $searchIndex
118
+	 * @param int $limit Max number of results for this page
119
+	 * @param int $start Skip this number of records
120
+	 * @param bool $followSuggestions True to enable suggested searches to be returned immediately
121
+	 * @return CwpSearchResult|null
122
+	 */
123
+	public function search($keywords, $classes, $searchIndex, $limit = -1, $start = 0, $followSuggestions = false)
124
+	{
125
+		if (empty($keywords)) {
126
+			return null;
127
+		}
128
+
129
+		try {
130
+			// Begin search
131
+			$result = $this->getResult($keywords, $classes, $searchIndex, $limit, $start, true);
132
+
133
+			// Return results if we don't need to refine this any further
134
+			if (!$followSuggestions || $result->hasResults() || !$result->getSuggestion()) {
135
+				return $result;
136
+			}
137
+
138
+			// Perform new search with the suggested terms
139
+			$suggested = $result->getSuggestion();
140
+			$newResult = $this->getResult($suggested, $classes, $searchIndex, $limit, $start, false);
141
+			$newResult->setOriginal($keywords);
142
+
143
+			// Compare new results to the original query
144
+			if ($newResult->hasResults()) {
145
+				return $newResult;
146
+			} else {
147
+				return $result;
148
+			}
149
+		} catch (Exception $e) {
150
+			Injector::inst()->get(LoggerInterface::class)->warning($e);
151
+		}
152
+	}
153 153
 }
Please login to merge, or discard this patch.
src/Search/CwpSearchResult.php 2 patches
Indentation   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -11,204 +11,204 @@
 block discarded – undo
11 11
  */
12 12
 class CwpSearchResult extends ViewableData
13 13
 {
14
-    private static $casting = [
15
-        'Original' => 'Text',
16
-        'OriginalLink' => 'Text',
17
-        'Suggestion' => 'Text',
18
-        'SuggestionLink' => 'Text',
19
-        'Query' => 'Text',
20
-        'SearchLink' => 'Text',
21
-        'RSSLink' => 'Text',
22
-        'AtomLink' => 'Text',
23
-    ];
24
-
25
-    /**
26
-     * List of results
27
-     *
28
-     * @var PaginatedList
29
-     */
30
-    protected $matches;
31
-
32
-    /**
33
-     * Search terms for these results
34
-     *
35
-     * @var string
36
-     */
37
-    protected $query;
38
-
39
-    /**
40
-     * Suggested search keywords
41
-     * Used when this search has suggested terms, but following suggestions isn't enabled
42
-     *
43
-     * @var string
44
-     */
45
-    protected $suggestion;
46
-
47
-    /**
48
-     * Original terms superceded by these result.
49
-     * Used when a prior search had suggested terms, and follow suggestions is enabled.
50
-     *
51
-     * @var PaginatedList
52
-     */
53
-    protected $original;
54
-
55
-    /**
56
-     * Create a new CwpSearchResult
57
-     *
58
-     * @param string $terms
59
-     * @param ArrayData $results Result from SolrIndex
60
-     */
61
-    public function __construct($terms = '', ArrayData $results = null)
62
-    {
63
-        $this->query = $terms;
64
-        if ($results) {
65
-            // Clean up the results.
66
-            $matches = $results->Matches;
67
-            foreach ($matches as $result) {
68
-                if (!$result->canView()) {
69
-                    $matches->remove($result);
70
-                }
71
-            }
72
-
73
-            $this->matches = $matches;
74
-            $this->suggestion = $results->SuggestionNice;
75
-        }
76
-    }
77
-
78
-    /**
79
-     * Get search results
80
-     *
81
-     * @return PaginatedList
82
-     */
83
-    public function getResults()
84
-    {
85
-        return $this->matches;
86
-    }
87
-
88
-    /**
89
-     * Check if there are found results
90
-     *
91
-     * @return bool
92
-     */
93
-    public function hasResults()
94
-    {
95
-        return $this->matches && $this->matches->exists();
96
-    }
97
-
98
-    /**
99
-     * Get search keywords matching these results
100
-     *
101
-     * @return string
102
-     */
103
-    public function getQuery()
104
-    {
105
-        return $this->query;
106
-    }
107
-
108
-    /**
109
-     * Get suggested search keywords
110
-     *
111
-     * @return string
112
-     */
113
-    public function getSuggestion()
114
-    {
115
-        return $this->suggestion;
116
-    }
117
-
118
-    /**
119
-     * Get original search keywords superceded by these results
120
-     *
121
-     * @return string
122
-     */
123
-    public function getOriginal()
124
-    {
125
-        return $this->original;
126
-    }
127
-
128
-    /**
129
-     * Set original keywords
130
-     *
131
-     * @param string $original
132
-     */
133
-    public function setOriginal($original)
134
-    {
135
-        $this->original = $original;
136
-    }
137
-
138
-    /**
139
-     * Get the link to the suggested search
140
-     *
141
-     * @param string $format Optional output format
142
-     * @return string
143
-     */
144
-    public function getSuggestionLink($format = null)
145
-    {
146
-        return $this->getLink($this->suggestion, $format);
147
-    }
148
-
149
-    /**
150
-     * Gets the link to the given search
151
-     *
152
-     * @param string $format Optional output format
153
-     * @return string
154
-     */
155
-    public function getSearchLink($format = null)
156
-    {
157
-        return $this->getLink($this->query, $format);
158
-    }
159
-
160
-    /**
161
-     * Gets the link to the original search, with suggestions disabled
162
-     *
163
-     * @param string $format Optional output format
164
-     * @return string
165
-     */
166
-    public function getOriginalLink($format = null)
167
-    {
168
-        return $this->getLink($this->original, $format) . "&suggestions=0";
169
-    }
170
-
171
-    /**
172
-     * Get link to these results in RSS format
173
-     *
174
-     * @return string
175
-     */
176
-    public function getRSSLink()
177
-    {
178
-        return $this->getLink($this->query, 'rss');
179
-    }
180
-
181
-    /**
182
-     * Get link to these results in atom format
183
-     *
184
-     * @return string
185
-     */
186
-    public function getAtomLink()
187
-    {
188
-        return $this->getLink($this->query, 'atom');
189
-    }
190
-
191
-    /**
192
-     * Get a search link for given terms
193
-     *
194
-     * @param string $terms
195
-     * @return string|null
196
-     */
197
-    protected function getLink($terms, $format = null)
198
-    {
199
-        if (!$terms) {
200
-            return null;
201
-        }
202
-        $link = 'search/SearchForm?Search='.rawurlencode($terms);
203
-        if ($format) {
204
-            $link .= '&format='.rawurlencode($format);
205
-        }
206
-        return $link;
207
-    }
208
-
209
-    public function hasField($field)
210
-    {
211
-        // Fix customise not detecting custom field getters
212
-        return array_key_exists($field, $this->config()->casting);
213
-    }
14
+	private static $casting = [
15
+		'Original' => 'Text',
16
+		'OriginalLink' => 'Text',
17
+		'Suggestion' => 'Text',
18
+		'SuggestionLink' => 'Text',
19
+		'Query' => 'Text',
20
+		'SearchLink' => 'Text',
21
+		'RSSLink' => 'Text',
22
+		'AtomLink' => 'Text',
23
+	];
24
+
25
+	/**
26
+	 * List of results
27
+	 *
28
+	 * @var PaginatedList
29
+	 */
30
+	protected $matches;
31
+
32
+	/**
33
+	 * Search terms for these results
34
+	 *
35
+	 * @var string
36
+	 */
37
+	protected $query;
38
+
39
+	/**
40
+	 * Suggested search keywords
41
+	 * Used when this search has suggested terms, but following suggestions isn't enabled
42
+	 *
43
+	 * @var string
44
+	 */
45
+	protected $suggestion;
46
+
47
+	/**
48
+	 * Original terms superceded by these result.
49
+	 * Used when a prior search had suggested terms, and follow suggestions is enabled.
50
+	 *
51
+	 * @var PaginatedList
52
+	 */
53
+	protected $original;
54
+
55
+	/**
56
+	 * Create a new CwpSearchResult
57
+	 *
58
+	 * @param string $terms
59
+	 * @param ArrayData $results Result from SolrIndex
60
+	 */
61
+	public function __construct($terms = '', ArrayData $results = null)
62
+	{
63
+		$this->query = $terms;
64
+		if ($results) {
65
+			// Clean up the results.
66
+			$matches = $results->Matches;
67
+			foreach ($matches as $result) {
68
+				if (!$result->canView()) {
69
+					$matches->remove($result);
70
+				}
71
+			}
72
+
73
+			$this->matches = $matches;
74
+			$this->suggestion = $results->SuggestionNice;
75
+		}
76
+	}
77
+
78
+	/**
79
+	 * Get search results
80
+	 *
81
+	 * @return PaginatedList
82
+	 */
83
+	public function getResults()
84
+	{
85
+		return $this->matches;
86
+	}
87
+
88
+	/**
89
+	 * Check if there are found results
90
+	 *
91
+	 * @return bool
92
+	 */
93
+	public function hasResults()
94
+	{
95
+		return $this->matches && $this->matches->exists();
96
+	}
97
+
98
+	/**
99
+	 * Get search keywords matching these results
100
+	 *
101
+	 * @return string
102
+	 */
103
+	public function getQuery()
104
+	{
105
+		return $this->query;
106
+	}
107
+
108
+	/**
109
+	 * Get suggested search keywords
110
+	 *
111
+	 * @return string
112
+	 */
113
+	public function getSuggestion()
114
+	{
115
+		return $this->suggestion;
116
+	}
117
+
118
+	/**
119
+	 * Get original search keywords superceded by these results
120
+	 *
121
+	 * @return string
122
+	 */
123
+	public function getOriginal()
124
+	{
125
+		return $this->original;
126
+	}
127
+
128
+	/**
129
+	 * Set original keywords
130
+	 *
131
+	 * @param string $original
132
+	 */
133
+	public function setOriginal($original)
134
+	{
135
+		$this->original = $original;
136
+	}
137
+
138
+	/**
139
+	 * Get the link to the suggested search
140
+	 *
141
+	 * @param string $format Optional output format
142
+	 * @return string
143
+	 */
144
+	public function getSuggestionLink($format = null)
145
+	{
146
+		return $this->getLink($this->suggestion, $format);
147
+	}
148
+
149
+	/**
150
+	 * Gets the link to the given search
151
+	 *
152
+	 * @param string $format Optional output format
153
+	 * @return string
154
+	 */
155
+	public function getSearchLink($format = null)
156
+	{
157
+		return $this->getLink($this->query, $format);
158
+	}
159
+
160
+	/**
161
+	 * Gets the link to the original search, with suggestions disabled
162
+	 *
163
+	 * @param string $format Optional output format
164
+	 * @return string
165
+	 */
166
+	public function getOriginalLink($format = null)
167
+	{
168
+		return $this->getLink($this->original, $format) . "&suggestions=0";
169
+	}
170
+
171
+	/**
172
+	 * Get link to these results in RSS format
173
+	 *
174
+	 * @return string
175
+	 */
176
+	public function getRSSLink()
177
+	{
178
+		return $this->getLink($this->query, 'rss');
179
+	}
180
+
181
+	/**
182
+	 * Get link to these results in atom format
183
+	 *
184
+	 * @return string
185
+	 */
186
+	public function getAtomLink()
187
+	{
188
+		return $this->getLink($this->query, 'atom');
189
+	}
190
+
191
+	/**
192
+	 * Get a search link for given terms
193
+	 *
194
+	 * @param string $terms
195
+	 * @return string|null
196
+	 */
197
+	protected function getLink($terms, $format = null)
198
+	{
199
+		if (!$terms) {
200
+			return null;
201
+		}
202
+		$link = 'search/SearchForm?Search='.rawurlencode($terms);
203
+		if ($format) {
204
+			$link .= '&format='.rawurlencode($format);
205
+		}
206
+		return $link;
207
+	}
208
+
209
+	public function hasField($field)
210
+	{
211
+		// Fix customise not detecting custom field getters
212
+		return array_key_exists($field, $this->config()->casting);
213
+	}
214 214
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -199,9 +199,9 @@
 block discarded – undo
199 199
         if (!$terms) {
200 200
             return null;
201 201
         }
202
-        $link = 'search/SearchForm?Search='.rawurlencode($terms);
202
+        $link = 'search/SearchForm?Search=' . rawurlencode($terms);
203 203
         if ($format) {
204
-            $link .= '&format='.rawurlencode($format);
204
+            $link .= '&format=' . rawurlencode($format);
205 205
         }
206 206
         return $link;
207 207
     }
Please login to merge, or discard this patch.
src/Search/CwpSearchPage.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -11,14 +11,14 @@
 block discarded – undo
11 11
  */
12 12
 class CwpSearchPage extends Page
13 13
 {
14
-    private static $hide_ancestor = CwpSearchPage::class;
14
+	private static $hide_ancestor = CwpSearchPage::class;
15 15
 
16
-    public function canViewStage($stage = Versioned::LIVE, $member = null)
17
-    {
18
-        if (Permission::checkMember($member, 'VIEW_DRAFT_CONTENT')) {
19
-            return true;
20
-        }
16
+	public function canViewStage($stage = Versioned::LIVE, $member = null)
17
+	{
18
+		if (Permission::checkMember($member, 'VIEW_DRAFT_CONTENT')) {
19
+			return true;
20
+		}
21 21
 
22
-        return parent::canViewStage($stage, $member);
23
-    }
22
+		return parent::canViewStage($stage, $member);
23
+	}
24 24
 }
Please login to merge, or discard this patch.
src/Extensions/TaxonomyTermExtension.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -8,9 +8,9 @@
 block discarded – undo
8 8
 class TaxonomyTermExtension extends DataExtension
9 9
 {
10 10
 
11
-    private static $api_access = true;
11
+	private static $api_access = true;
12 12
 
13
-    private static $belongs_many_many = array(
14
-        'Pages' => BasePage::class
15
-    );
13
+	private static $belongs_many_many = array(
14
+		'Pages' => BasePage::class
15
+	);
16 16
 }
Please login to merge, or discard this patch.
src/Extensions/SynonymValidator.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -75,7 +75,7 @@
 block discarded – undo
75 75
         );
76 76
 
77 77
         // strip comments (lines beginning with "#")
78
-        $lines = array_filter($lines, function ($line) {
78
+        $lines = array_filter($lines, function($line) {
79 79
             $line = trim($line);
80 80
 
81 81
             return !empty($line) && $line[0] !== '#';
Please login to merge, or discard this patch.
Indentation   +150 added lines, -150 removed lines patch added patch discarded remove patch
@@ -6,154 +6,154 @@
 block discarded – undo
6 6
 
7 7
 class SynonymValidator extends Validator
8 8
 {
9
-    /**
10
-     * @var array
11
-     */
12
-    protected $fieldNames;
13
-
14
-    /**
15
-     * @inheritdoc
16
-     *
17
-     * @param array $fieldNames
18
-     */
19
-    public function __construct(array $fieldNames)
20
-    {
21
-        $this->fieldNames = $fieldNames;
22
-
23
-        parent::__construct();
24
-    }
25
-
26
-    /**
27
-     * @inheritdoc
28
-     *
29
-     * @param array $data
30
-     *
31
-     * @return mixed
32
-     */
33
-    public function php($data)
34
-    {
35
-        foreach ($this->fieldNames as $fieldName) {
36
-            if (empty($data[$fieldName])) {
37
-                return;
38
-            }
39
-
40
-            $this->validateField($fieldName, $data[$fieldName]);
41
-        }
42
-    }
43
-
44
-    /**
45
-     * Validate field values, raising errors if the values are invalid.
46
-     *
47
-     * @param string $fieldName
48
-     * @param mixed $value
49
-     */
50
-    protected function validateField($fieldName, $value)
51
-    {
52
-        if (!$this->validateValue($value)) {
53
-            $this->validationError(
54
-                $fieldName,
55
-                _t(
56
-                    __CLASS__ . '.InvalidValue',
57
-                    'Synonyms cannot contain words separated by spaces'
58
-                )
59
-            );
60
-        }
61
-    }
62
-
63
-    /**
64
-     * Check field values to see that they doesn't contain spaces between words.
65
-     *
66
-     * @param mixed $value
67
-     *
68
-     * @return bool
69
-     */
70
-    protected function validateValue($value)
71
-    {
72
-        // strip empty lines
73
-        $lines = array_filter(
74
-            explode("\n", $value)
75
-        );
76
-
77
-        // strip comments (lines beginning with "#")
78
-        $lines = array_filter($lines, function ($line) {
79
-            $line = trim($line);
80
-
81
-            return !empty($line) && $line[0] !== '#';
82
-        });
83
-
84
-        // validate each line
85
-        foreach ($lines as $line) {
86
-            if (!$this->validateLine($line)) {
87
-                return false;
88
-            }
89
-        }
90
-
91
-        return true;
92
-    }
93
-
94
-    /**
95
-     * Check each line to see that it doesn't contain spaces between words.
96
-     *
97
-     * @param string $line
98
-     *
99
-     * @return bool
100
-     */
101
-    protected function validateLine($line)
102
-    {
103
-        $line = trim($line);
104
-
105
-        $parts = explode(',', $line);
106
-        $parts = array_filter($parts);
107
-
108
-        foreach ($parts as $part) {
109
-            if (!$this->validatePart($part)) {
110
-                return false;
111
-            }
112
-        }
113
-
114
-        return true;
115
-    }
116
-
117
-    /**
118
-     * Check each part of the line doesn't contain spaces between words.
119
-     *
120
-     * @param string $part
121
-     *
122
-     * @return bool
123
-     */
124
-    protected function validatePart($part)
125
-    {
126
-        if (strpos($part, '=>') !== false) {
127
-            $subs = explode('=>', $part);
128
-            $subs = array_filter($subs);
129
-
130
-            foreach ($subs as $sub) {
131
-                if (!$this->validateNoSpaces($sub)) {
132
-                    return false;
133
-                }
134
-            }
135
-
136
-            return true;
137
-        }
138
-
139
-        return $this->validateNoSpaces($part);
140
-    }
141
-
142
-    /**
143
-     * @param string $value
144
-     *
145
-     * @return bool
146
-     */
147
-    protected function validateNoSpaces($value)
148
-    {
149
-        // allow spaces at the beginning and end of the value
150
-        $value = trim($value);
151
-
152
-        // does the value contain 1 or more whitespace characters?
153
-        if (preg_match('/\s+/', $value)) {
154
-            return false;
155
-        }
156
-
157
-        return true;
158
-    }
9
+	/**
10
+	 * @var array
11
+	 */
12
+	protected $fieldNames;
13
+
14
+	/**
15
+	 * @inheritdoc
16
+	 *
17
+	 * @param array $fieldNames
18
+	 */
19
+	public function __construct(array $fieldNames)
20
+	{
21
+		$this->fieldNames = $fieldNames;
22
+
23
+		parent::__construct();
24
+	}
25
+
26
+	/**
27
+	 * @inheritdoc
28
+	 *
29
+	 * @param array $data
30
+	 *
31
+	 * @return mixed
32
+	 */
33
+	public function php($data)
34
+	{
35
+		foreach ($this->fieldNames as $fieldName) {
36
+			if (empty($data[$fieldName])) {
37
+				return;
38
+			}
39
+
40
+			$this->validateField($fieldName, $data[$fieldName]);
41
+		}
42
+	}
43
+
44
+	/**
45
+	 * Validate field values, raising errors if the values are invalid.
46
+	 *
47
+	 * @param string $fieldName
48
+	 * @param mixed $value
49
+	 */
50
+	protected function validateField($fieldName, $value)
51
+	{
52
+		if (!$this->validateValue($value)) {
53
+			$this->validationError(
54
+				$fieldName,
55
+				_t(
56
+					__CLASS__ . '.InvalidValue',
57
+					'Synonyms cannot contain words separated by spaces'
58
+				)
59
+			);
60
+		}
61
+	}
62
+
63
+	/**
64
+	 * Check field values to see that they doesn't contain spaces between words.
65
+	 *
66
+	 * @param mixed $value
67
+	 *
68
+	 * @return bool
69
+	 */
70
+	protected function validateValue($value)
71
+	{
72
+		// strip empty lines
73
+		$lines = array_filter(
74
+			explode("\n", $value)
75
+		);
76
+
77
+		// strip comments (lines beginning with "#")
78
+		$lines = array_filter($lines, function ($line) {
79
+			$line = trim($line);
80
+
81
+			return !empty($line) && $line[0] !== '#';
82
+		});
83
+
84
+		// validate each line
85
+		foreach ($lines as $line) {
86
+			if (!$this->validateLine($line)) {
87
+				return false;
88
+			}
89
+		}
90
+
91
+		return true;
92
+	}
93
+
94
+	/**
95
+	 * Check each line to see that it doesn't contain spaces between words.
96
+	 *
97
+	 * @param string $line
98
+	 *
99
+	 * @return bool
100
+	 */
101
+	protected function validateLine($line)
102
+	{
103
+		$line = trim($line);
104
+
105
+		$parts = explode(',', $line);
106
+		$parts = array_filter($parts);
107
+
108
+		foreach ($parts as $part) {
109
+			if (!$this->validatePart($part)) {
110
+				return false;
111
+			}
112
+		}
113
+
114
+		return true;
115
+	}
116
+
117
+	/**
118
+	 * Check each part of the line doesn't contain spaces between words.
119
+	 *
120
+	 * @param string $part
121
+	 *
122
+	 * @return bool
123
+	 */
124
+	protected function validatePart($part)
125
+	{
126
+		if (strpos($part, '=>') !== false) {
127
+			$subs = explode('=>', $part);
128
+			$subs = array_filter($subs);
129
+
130
+			foreach ($subs as $sub) {
131
+				if (!$this->validateNoSpaces($sub)) {
132
+					return false;
133
+				}
134
+			}
135
+
136
+			return true;
137
+		}
138
+
139
+		return $this->validateNoSpaces($part);
140
+	}
141
+
142
+	/**
143
+	 * @param string $value
144
+	 *
145
+	 * @return bool
146
+	 */
147
+	protected function validateNoSpaces($value)
148
+	{
149
+		// allow spaces at the beginning and end of the value
150
+		$value = trim($value);
151
+
152
+		// does the value contain 1 or more whitespace characters?
153
+		if (preg_match('/\s+/', $value)) {
154
+			return false;
155
+		}
156
+
157
+		return true;
158
+	}
159 159
 }
Please login to merge, or discard this patch.
src/Extensions/CwpWorkflowDefinitionExtension.php 1 patch
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -12,37 +12,37 @@
 block discarded – undo
12 12
  */
13 13
 class CwpWorkflowDefinitionExtension extends DataExtension
14 14
 {
15
-    /**
16
-     * Create the default 'Two-step Workflow' when this extension is loaded
17
-     *
18
-     * @config
19
-     * @var boolean
20
-     */
21
-    private static $create_default_workflow = true;
15
+	/**
16
+	 * Create the default 'Two-step Workflow' when this extension is loaded
17
+	 *
18
+	 * @config
19
+	 * @var boolean
20
+	 */
21
+	private static $create_default_workflow = true;
22 22
 
23
-    public function requireDefaultRecords()
24
-    {
25
-        if (Config::inst()->get(CwpWorkflowDefinitionExtension::class, 'create_default_workflow')) {
26
-            // Only proceed if a definition using this template has not been created yet
27
-            $definition = WorkflowDefinition::get()->filter("Template", "Review and Approve")->First();
28
-            if ($definition && $definition->exists()) {
29
-                return;
30
-            }
23
+	public function requireDefaultRecords()
24
+	{
25
+		if (Config::inst()->get(CwpWorkflowDefinitionExtension::class, 'create_default_workflow')) {
26
+			// Only proceed if a definition using this template has not been created yet
27
+			$definition = WorkflowDefinition::get()->filter("Template", "Review and Approve")->First();
28
+			if ($definition && $definition->exists()) {
29
+				return;
30
+			}
31 31
 
32
-            //generate from the template, which happens after we write the definition
33
-            $definition = WorkflowDefinition::create();
34
-            $definition->Template = "Review and Approve";
35
-            $definition->write();
32
+			//generate from the template, which happens after we write the definition
33
+			$definition = WorkflowDefinition::create();
34
+			$definition->Template = "Review and Approve";
35
+			$definition->write();
36 36
 
37
-            //change the title, description, and reminder days
38
-            $definition->update(array(
39
-                'Title' => "Two-step Workflow",
40
-                'Description' => "Content Authors can write content and Content Publishers can approve/reject.",
41
-                'RemindDays' => 3,
42
-            ));
43
-            $definition->write();
37
+			//change the title, description, and reminder days
38
+			$definition->update(array(
39
+				'Title' => "Two-step Workflow",
40
+				'Description' => "Content Authors can write content and Content Publishers can approve/reject.",
41
+				'RemindDays' => 3,
42
+			));
43
+			$definition->write();
44 44
 
45
-            DB::alteration_message("Added default workflow definition to WorkflowDefinition table", "created");
46
-        }
47
-    }
45
+			DB::alteration_message("Added default workflow definition to WorkflowDefinition table", "created");
46
+		}
47
+	}
48 48
 }
Please login to merge, or discard this patch.
tests/PageTypes/BasePageTest.php 1 patch
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -8,42 +8,42 @@
 block discarded – undo
8 8
 
9 9
 class BasePageTest extends SapphireTest
10 10
 {
11
-    protected static $fixture_file = 'BasePageTest.yml';
12
-
13
-    protected function setUp()
14
-    {
15
-        parent::setUp();
16
-
17
-        Config::modify()->set(BasePage::class, 'pdf_export', true);
18
-        Config::modify()->set(BasePage::class, 'generated_pdf_path', 'assets/_generated_pdfs');
19
-    }
20
-
21
-    public function testPdfFilename()
22
-    {
23
-        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
24
-        $this->assertContains(
25
-            'assets/_generated_pdfs/test-page-one-1.pdf',
26
-            $page->getPdfFilename(),
27
-            'Generated filename for PDF'
28
-        );
29
-    }
30
-
31
-    public function testPdfLink()
32
-    {
33
-        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
34
-        $this->assertContains('test-page-one/downloadpdf', $page->PdfLink(), 'Link to download PDF');
35
-    }
36
-
37
-    public function testHomePagePdfLink()
38
-    {
39
-        $page = $this->objFromFixture(BasePage::class, 'home-page');
40
-        $this->assertContains('home/downloadpdf', $page->PdfLink(), 'Link to download PDF');
41
-    }
42
-
43
-    public function testPdfLinkDisabled()
44
-    {
45
-        Config::modify()->set(BasePage::class, 'pdf_export', false);
46
-        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
47
-        $this->assertFalse($page->PdfLink(), 'No PDF link as the functionality is disabled');
48
-    }
11
+	protected static $fixture_file = 'BasePageTest.yml';
12
+
13
+	protected function setUp()
14
+	{
15
+		parent::setUp();
16
+
17
+		Config::modify()->set(BasePage::class, 'pdf_export', true);
18
+		Config::modify()->set(BasePage::class, 'generated_pdf_path', 'assets/_generated_pdfs');
19
+	}
20
+
21
+	public function testPdfFilename()
22
+	{
23
+		$page = $this->objFromFixture(BasePage::class, 'test-page-one');
24
+		$this->assertContains(
25
+			'assets/_generated_pdfs/test-page-one-1.pdf',
26
+			$page->getPdfFilename(),
27
+			'Generated filename for PDF'
28
+		);
29
+	}
30
+
31
+	public function testPdfLink()
32
+	{
33
+		$page = $this->objFromFixture(BasePage::class, 'test-page-one');
34
+		$this->assertContains('test-page-one/downloadpdf', $page->PdfLink(), 'Link to download PDF');
35
+	}
36
+
37
+	public function testHomePagePdfLink()
38
+	{
39
+		$page = $this->objFromFixture(BasePage::class, 'home-page');
40
+		$this->assertContains('home/downloadpdf', $page->PdfLink(), 'Link to download PDF');
41
+	}
42
+
43
+	public function testPdfLinkDisabled()
44
+	{
45
+		Config::modify()->set(BasePage::class, 'pdf_export', false);
46
+		$page = $this->objFromFixture(BasePage::class, 'test-page-one');
47
+		$this->assertFalse($page->PdfLink(), 'No PDF link as the functionality is disabled');
48
+	}
49 49
 }
Please login to merge, or discard this patch.
tests/PageTypes/EventHolderTest.php 1 patch
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -8,94 +8,94 @@
 block discarded – undo
8 8
 
9 9
 class EventHolderTest extends SapphireTest
10 10
 {
11
-    protected static $fixture_file = 'EventHolderTest.yml';
11
+	protected static $fixture_file = 'EventHolderTest.yml';
12 12
 
13
-    public function testEventTags()
14
-    {
15
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
13
+	public function testEventTags()
14
+	{
15
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
16 16
 
17
-        $tags = $holder->UpdateTags();
18
-        $this->assertNotNull($tags->find('Name', 'Future'), 'Finds present terms.');
19
-        $this->assertNull($tags->find('Name', 'Event types', 'Does not find top level taxonomy.'));
20
-        $this->assertNull($tags->find('Name', 'Carrot'), 'Does not find terms that are not applied.');
21
-    }
17
+		$tags = $holder->UpdateTags();
18
+		$this->assertNotNull($tags->find('Name', 'Future'), 'Finds present terms.');
19
+		$this->assertNull($tags->find('Name', 'Event types', 'Does not find top level taxonomy.'));
20
+		$this->assertNull($tags->find('Name', 'Carrot'), 'Does not find terms that are not applied.');
21
+	}
22 22
 
23
-    public function testEventWithParentFilter()
24
-    {
25
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder2');
23
+	public function testEventWithParentFilter()
24
+	{
25
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder2');
26 26
 
27
-        $items = $holder->Updates();
27
+		$items = $holder->Updates();
28 28
 
29
-        $this->assertNotNull($items->find('URLSegment', 'other-holder'), 'Event from the holder is shown.');
30
-        $this->assertNull($items->find('URLSegment', 'future-event-1'), 'Events from other holders are not shown.');
31
-    }
29
+		$this->assertNotNull($items->find('URLSegment', 'other-holder'), 'Event from the holder is shown.');
30
+		$this->assertNull($items->find('URLSegment', 'future-event-1'), 'Events from other holders are not shown.');
31
+	}
32 32
 
33
-    public function testEventsWithTagFilter()
34
-    {
35
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
33
+	public function testEventsWithTagFilter()
34
+	{
35
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
36 36
 
37
-        //Get the "Future" tag.
38
-        $tag = $this->objFromFixture(TaxonomyTerm::class, 'TaxonomyTerm1');
37
+		//Get the "Future" tag.
38
+		$tag = $this->objFromFixture(TaxonomyTerm::class, 'TaxonomyTerm1');
39 39
 
40
-        $items = $holder->Updates($tag->ID);
40
+		$items = $holder->Updates($tag->ID);
41 41
 
42
-        $this->assertNotNull($items->find('URLSegment', 'future-event-1'), 'Finds the tagged page.');
43
-        $this->assertNull($items->find('URLSegment', 'past-event-1'), 'Does not find pages that are not tagged.');
44
-    }
42
+		$this->assertNotNull($items->find('URLSegment', 'future-event-1'), 'Finds the tagged page.');
43
+		$this->assertNull($items->find('URLSegment', 'past-event-1'), 'Does not find pages that are not tagged.');
44
+	}
45 45
 
46
-    public function testEventsWithMonthFilter()
47
-    {
48
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
46
+	public function testEventsWithMonthFilter()
47
+	{
48
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
49 49
 
50
-        $items = $holder->Updates(null, null, null, 2013, 7);
50
+		$items = $holder->Updates(null, null, null, 2013, 7);
51 51
 
52
-        $this->assertNotNull($items->find('URLSegment', 'future-event-1'), 'Finds the event in 2013-07.');
53
-        $this->assertNull($items->find('URLSegment', 'past-event-1'), 'Does not find events at other dates.');
54
-    }
52
+		$this->assertNotNull($items->find('URLSegment', 'future-event-1'), 'Finds the event in 2013-07.');
53
+		$this->assertNull($items->find('URLSegment', 'past-event-1'), 'Does not find events at other dates.');
54
+	}
55 55
 
56
-    public function testEventsWithDateRangeFilter()
57
-    {
58
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
56
+	public function testEventsWithDateRangeFilter()
57
+	{
58
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
59 59
 
60
-        $items = $holder->Updates(null, '2013-01-19', null);
61
-        $this->assertNotNull($items->find('URLSegment', 'past-event-2'), 'Finds the event at the date');
62
-        $this->assertNull($items->find('URLSegment', 'future-event-1'), 'Does not find the event at another date');
60
+		$items = $holder->Updates(null, '2013-01-19', null);
61
+		$this->assertNotNull($items->find('URLSegment', 'past-event-2'), 'Finds the event at the date');
62
+		$this->assertNull($items->find('URLSegment', 'future-event-1'), 'Does not find the event at another date');
63 63
 
64
-        $items = $holder->Updates(null, '2013-01-01', '2013-01-19');
65
-        $this->assertNotNull($items->find('URLSegment', 'past-event-2'), 'Finds events in the date range');
66
-        $this->assertNull($items->find('URLSegment', 'future-event-1'), 'Does not find event out of range');
67
-    }
64
+		$items = $holder->Updates(null, '2013-01-01', '2013-01-19');
65
+		$this->assertNotNull($items->find('URLSegment', 'past-event-2'), 'Finds events in the date range');
66
+		$this->assertNull($items->find('URLSegment', 'future-event-1'), 'Does not find event out of range');
67
+	}
68 68
 
69
-    public function testExtractMonths()
70
-    {
71
-        $holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
69
+	public function testExtractMonths()
70
+	{
71
+		$holder = $this->objFromFixture(EventHolder::class, 'EventHolder1');
72 72
 
73
-        $months = EventHolder::ExtractMonths(
74
-            $holder->Updates(),
75
-            'http://mybase.org/?tag=12&start=10&from=2010-10-10&to=2010-10-11', // Used for link generation
76
-            2013, // Currently selected
77
-            1 // Currently selected
78
-        );
73
+		$months = EventHolder::ExtractMonths(
74
+			$holder->Updates(),
75
+			'http://mybase.org/?tag=12&start=10&from=2010-10-10&to=2010-10-11', // Used for link generation
76
+			2013, // Currently selected
77
+			1 // Currently selected
78
+		);
79 79
 
80
-        // Check which years are generated.
81
-        $this->assertNotNull($months->find('YearName', 2013), 'Generates existing year');
82
-        $this->assertNull($months->find('YearName', 1990), 'Does not generate non-present year');
80
+		// Check which years are generated.
81
+		$this->assertNotNull($months->find('YearName', 2013), 'Generates existing year');
82
+		$this->assertNull($months->find('YearName', 1990), 'Does not generate non-present year');
83 83
 
84
-        $year = $months->find('YearName', 2013);
84
+		$year = $months->find('YearName', 2013);
85 85
 
86
-        // Check which months come up in 2013
87
-        $this->assertNotNull($year['Months']->find('MonthNumber', 7), 'Generates existing month');
88
-        $this->assertNull($year['Months']->find('MonthNumber', 12), 'Does not generate non-present month');
86
+		// Check which months come up in 2013
87
+		$this->assertNotNull($year['Months']->find('MonthNumber', 7), 'Generates existing month');
88
+		$this->assertNull($year['Months']->find('MonthNumber', 12), 'Does not generate non-present month');
89 89
 
90
-        $month = $year['Months']->find('MonthNumber', 7);
91
-        $this->assertEquals(
92
-            $month['MonthLink'],
93
-            'http://mybase.org/?tag=12&from=2010-10-10&to=2010-10-11&month=7&year=2013',
94
-            'Selection link is built properly - start is removed, and tag, from and to retained.'
95
-        );
90
+		$month = $year['Months']->find('MonthNumber', 7);
91
+		$this->assertEquals(
92
+			$month['MonthLink'],
93
+			'http://mybase.org/?tag=12&from=2010-10-10&to=2010-10-11&month=7&year=2013',
94
+			'Selection link is built properly - start is removed, and tag, from and to retained.'
95
+		);
96 96
 
97
-        // Check if these months are marked properly.
98
-        $month = $year['Months']->find('MonthNumber', 1);
99
-        $this->assertEquals($month['Active'], true, 'Correctly marks active link');
100
-    }
97
+		// Check if these months are marked properly.
98
+		$month = $year['Months']->find('MonthNumber', 1);
99
+		$this->assertEquals($month['Active'], true, 'Correctly marks active link');
100
+	}
101 101
 }
Please login to merge, or discard this patch.