Passed
Push — master ( cccc68...fb3404 )
by
unknown
04:50 queued 11s
created
src/Models/ShareToken.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -14,39 +14,39 @@
 block discarded – undo
14 14
  */
15 15
 class ShareToken extends DataObject
16 16
 {
17
-    /**
18
-     * @var array
19
-     */
20
-    private static $db = array(
21
-        'Token' => 'Varchar(16)',
22
-        'ValidForDays' => 'Int',
23
-    );
24
-
25
-    /**
26
-     * @var array
27
-     */
28
-    private static $has_one = array(
29
-        'Page' => Page::class
30
-    );
31
-
32
-    /**
33
-     * @var string
34
-     */
35
-    private static $table_name = 'ShareToken';
36
-
37
-    /**
38
-     * Determines whether the token is still valid (from days since it was created).
39
-     *
40
-     * @return bool
41
-     */
42
-    public function isExpired()
43
-    {
44
-        $createdSeconds = strtotime($this->Created);
45
-
46
-        $validForSeconds = (int) $this->ValidForDays * 24 * 60 * 60;
47
-
48
-        $nowSeconds = DBDatetime::now()->getTimestamp();
49
-
50
-        return ($createdSeconds + $validForSeconds) <= $nowSeconds;
51
-    }
17
+	/**
18
+	 * @var array
19
+	 */
20
+	private static $db = array(
21
+		'Token' => 'Varchar(16)',
22
+		'ValidForDays' => 'Int',
23
+	);
24
+
25
+	/**
26
+	 * @var array
27
+	 */
28
+	private static $has_one = array(
29
+		'Page' => Page::class
30
+	);
31
+
32
+	/**
33
+	 * @var string
34
+	 */
35
+	private static $table_name = 'ShareToken';
36
+
37
+	/**
38
+	 * Determines whether the token is still valid (from days since it was created).
39
+	 *
40
+	 * @return bool
41
+	 */
42
+	public function isExpired()
43
+	{
44
+		$createdSeconds = strtotime($this->Created);
45
+
46
+		$validForSeconds = (int) $this->ValidForDays * 24 * 60 * 60;
47
+
48
+		$nowSeconds = DBDatetime::now()->getTimestamp();
49
+
50
+		return ($createdSeconds + $validForSeconds) <= $nowSeconds;
51
+	}
52 52
 }
Please login to merge, or discard this patch.
src/Tasks/RemoveExpiredShareTokensTask.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -14,24 +14,24 @@
 block discarded – undo
14 14
  */
15 15
 class RemoveExpiredShareTokens extends BuildTask
16 16
 {
17
-    private static $segment = 'RemoveExpiredShareTokens';
17
+	private static $segment = 'RemoveExpiredShareTokens';
18 18
 
19
-    protected $title = 'Remove expired share tokens';
19
+	protected $title = 'Remove expired share tokens';
20 20
 
21
-    protected $description = 'Remove all expired ShareTokens from the database';
21
+	protected $description = 'Remove all expired ShareTokens from the database';
22 22
 
23
-    public function run($request)
24
-    {
25
-        $shareTokens = ShareToken::get();
26
-        $removeCount = 0;
23
+	public function run($request)
24
+	{
25
+		$shareTokens = ShareToken::get();
26
+		$removeCount = 0;
27 27
 
28
-        foreach ($shareTokens as $token) {
29
-            if ($token->isExpired()) {
30
-                $token->delete();
31
-                $removeCount++;
32
-            }
33
-        }
28
+		foreach ($shareTokens as $token) {
29
+			if ($token->isExpired()) {
30
+				$token->delete();
31
+				$removeCount++;
32
+			}
33
+		}
34 34
 
35
-        echo "Removed $removeCount expired share tokens.\n";
36
-    }
35
+		echo "Removed $removeCount expired share tokens.\n";
36
+	}
37 37
 }
Please login to merge, or discard this patch.
src/Controllers/ShareDraftController.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -107,7 +107,7 @@
 block discarded – undo
107 107
                 Versioned::set_reading_mode($oldMode);
108 108
             }
109 109
 
110
-            return str_replace('</body>', $include . '</body>', (string) $rendered->getBody());
110
+            return str_replace('</body>', $include.'</body>', (string) $rendered->getBody());
111 111
         } else {
112 112
             return $this->errorPage();
113 113
         }
Please login to merge, or discard this patch.
Indentation   +147 added lines, -147 removed lines patch added patch discarded remove patch
@@ -21,151 +21,151 @@
 block discarded – undo
21 21
 
22 22
 class ShareDraftController extends Controller
23 23
 {
24
-    /**
25
-     * Controller for rendering draft pages.
26
-     *
27
-     * @config
28
-     *
29
-     * @var string
30
-     */
31
-    private static $controller = PageController::class;
32
-
33
-    /**
34
-     * @var array
35
-     */
36
-    private static $allowed_actions = array(
37
-        'preview'
38
-    );
39
-
40
-    /**
41
-     * @var array
42
-     */
43
-    private static $url_handlers = array(
44
-        '$Key/$Token' => 'preview'
45
-    );
46
-
47
-    /**
48
-     * @param HTTPRequest $request
49
-     *
50
-     * @return string|DBHTMLText
51
-     */
52
-    public function preview(HTTPRequest $request)
53
-    {
54
-        // Ensure this URL doesn't get picked up by HTTP caches
55
-        HTTPCacheControlMiddleware::singleton()->disableCache();
56
-
57
-        $key = $request->param('Key');
58
-        $token = $request->param('Token');
59
-        try {
60
-            $session = $this->getRequest()->getSession();
61
-        } catch (BadMethodCallException $e) {
62
-            // Create a new session
63
-            $session = $this->getRequest()
64
-                ->setSession(Injector::inst()->create(Session::class, []))
65
-                ->getSession();
66
-        }
67
-        /** @var ShareToken $shareToken */
68
-        $shareToken = ShareToken::get()->filter('Token', $token)->first();
69
-
70
-        if (!$shareToken) {
71
-            return $this->errorPage();
72
-        }
73
-
74
-        /** @var SiteTree|ShareDraftContentSiteTreeExtension $page */
75
-        $page = Versioned::get_by_stage(SiteTree::class, Versioned::DRAFT)
76
-            ->byID($shareToken->PageID);
77
-
78
-        $latest = Versioned::get_latest_version(SiteTree::class, $shareToken->PageID);
79
-
80
-        $controller = $this->getControllerFor($page);
81
-
82
-        if (!$shareToken->isExpired() && $page->generateKey($shareToken->Token) === $key) {
83
-            Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-frontend.css');
84
-
85
-            // Temporarily un-secure the draft site and switch to draft
86
-            $oldSecured = $this->getIsDraftSecured($session);
87
-            $oldMode = Versioned::get_reading_mode();
88
-
89
-            // Process page inside an unsecured draft container
90
-            try {
91
-                $this->setIsDraftSecured($session, false);
92
-                Versioned::set_stage('Stage');
93
-
94
-                // Hack to get around ContentController::init() redirecting on home page
95
-                $_FILES = array(array());
96
-
97
-                // Create mock request; Simplify request to single top level request
98
-                $pageRequest = new HTTPRequest('GET', $page->URLSegment);
99
-                $pageRequest->match('$URLSegment//$Action/$ID/$OtherID', true);
100
-                $pageRequest->setSession($session);
101
-                $rendered = $controller->handleRequest($pageRequest);
102
-
103
-                // Render draft heading
104
-                $data = new ArrayData(array(
105
-                    'Page' => $page,
106
-                    'Latest' => $latest,
107
-                ));
108
-                $include = (string) $data->renderWith('Includes/TopBar');
109
-            } finally {
110
-                $this->setIsDraftSecured($session, $oldSecured);
111
-                Versioned::set_reading_mode($oldMode);
112
-            }
113
-
114
-            return str_replace('</body>', $include . '</body>', (string) $rendered->getBody());
115
-        } else {
116
-            return $this->errorPage();
117
-        }
118
-    }
119
-
120
-    /**
121
-     * @return DBHTMLText
122
-     */
123
-    protected function errorPage()
124
-    {
125
-        Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-frontend.css');
126
-        return $this->renderWith('ShareDraftContentError');
127
-    }
128
-
129
-    /**
130
-     * @param SiteTree $page
131
-     * @return ContentController
132
-     */
133
-    protected function getControllerFor($page)
134
-    {
135
-        return ModelAsController::controller_for($page);
136
-    }
137
-
138
-    /**
139
-     * Check if the draft site is secured
140
-     *
141
-     * @param Session $session
142
-     * @return bool True if the draft site is secured
143
-     */
144
-    protected function getIsDraftSecured(Session $session)
145
-    {
146
-        // Versioned >=1.2
147
-        if (method_exists(Versioned::class, 'get_draft_site_secured')) {
148
-            return Versioned::get_draft_site_secured();
149
-        }
150
-
151
-        // Fall back to session
152
-        return !$session->get('unsecuredDraftSite');
153
-    }
154
-
155
-    /**
156
-     * Set draft site security
157
-     *
158
-     * @param Session $session
159
-     * @param bool $secured True if draft site should be secured
160
-     */
161
-    protected function setIsDraftSecured(Session $session, $secured)
162
-    {
163
-        // Versioned >=1.2
164
-        if (method_exists(Versioned::class, 'set_draft_site_secured')) {
165
-            Versioned::set_draft_site_secured($secured);
166
-        }
167
-
168
-        // Set session variable anyway
169
-        $session->set('unsecuredDraftSite', !$secured);
170
-    }
24
+	/**
25
+	 * Controller for rendering draft pages.
26
+	 *
27
+	 * @config
28
+	 *
29
+	 * @var string
30
+	 */
31
+	private static $controller = PageController::class;
32
+
33
+	/**
34
+	 * @var array
35
+	 */
36
+	private static $allowed_actions = array(
37
+		'preview'
38
+	);
39
+
40
+	/**
41
+	 * @var array
42
+	 */
43
+	private static $url_handlers = array(
44
+		'$Key/$Token' => 'preview'
45
+	);
46
+
47
+	/**
48
+	 * @param HTTPRequest $request
49
+	 *
50
+	 * @return string|DBHTMLText
51
+	 */
52
+	public function preview(HTTPRequest $request)
53
+	{
54
+		// Ensure this URL doesn't get picked up by HTTP caches
55
+		HTTPCacheControlMiddleware::singleton()->disableCache();
56
+
57
+		$key = $request->param('Key');
58
+		$token = $request->param('Token');
59
+		try {
60
+			$session = $this->getRequest()->getSession();
61
+		} catch (BadMethodCallException $e) {
62
+			// Create a new session
63
+			$session = $this->getRequest()
64
+				->setSession(Injector::inst()->create(Session::class, []))
65
+				->getSession();
66
+		}
67
+		/** @var ShareToken $shareToken */
68
+		$shareToken = ShareToken::get()->filter('Token', $token)->first();
69
+
70
+		if (!$shareToken) {
71
+			return $this->errorPage();
72
+		}
73
+
74
+		/** @var SiteTree|ShareDraftContentSiteTreeExtension $page */
75
+		$page = Versioned::get_by_stage(SiteTree::class, Versioned::DRAFT)
76
+			->byID($shareToken->PageID);
77
+
78
+		$latest = Versioned::get_latest_version(SiteTree::class, $shareToken->PageID);
79
+
80
+		$controller = $this->getControllerFor($page);
81
+
82
+		if (!$shareToken->isExpired() && $page->generateKey($shareToken->Token) === $key) {
83
+			Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-frontend.css');
84
+
85
+			// Temporarily un-secure the draft site and switch to draft
86
+			$oldSecured = $this->getIsDraftSecured($session);
87
+			$oldMode = Versioned::get_reading_mode();
88
+
89
+			// Process page inside an unsecured draft container
90
+			try {
91
+				$this->setIsDraftSecured($session, false);
92
+				Versioned::set_stage('Stage');
93
+
94
+				// Hack to get around ContentController::init() redirecting on home page
95
+				$_FILES = array(array());
96
+
97
+				// Create mock request; Simplify request to single top level request
98
+				$pageRequest = new HTTPRequest('GET', $page->URLSegment);
99
+				$pageRequest->match('$URLSegment//$Action/$ID/$OtherID', true);
100
+				$pageRequest->setSession($session);
101
+				$rendered = $controller->handleRequest($pageRequest);
102
+
103
+				// Render draft heading
104
+				$data = new ArrayData(array(
105
+					'Page' => $page,
106
+					'Latest' => $latest,
107
+				));
108
+				$include = (string) $data->renderWith('Includes/TopBar');
109
+			} finally {
110
+				$this->setIsDraftSecured($session, $oldSecured);
111
+				Versioned::set_reading_mode($oldMode);
112
+			}
113
+
114
+			return str_replace('</body>', $include . '</body>', (string) $rendered->getBody());
115
+		} else {
116
+			return $this->errorPage();
117
+		}
118
+	}
119
+
120
+	/**
121
+	 * @return DBHTMLText
122
+	 */
123
+	protected function errorPage()
124
+	{
125
+		Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-frontend.css');
126
+		return $this->renderWith('ShareDraftContentError');
127
+	}
128
+
129
+	/**
130
+	 * @param SiteTree $page
131
+	 * @return ContentController
132
+	 */
133
+	protected function getControllerFor($page)
134
+	{
135
+		return ModelAsController::controller_for($page);
136
+	}
137
+
138
+	/**
139
+	 * Check if the draft site is secured
140
+	 *
141
+	 * @param Session $session
142
+	 * @return bool True if the draft site is secured
143
+	 */
144
+	protected function getIsDraftSecured(Session $session)
145
+	{
146
+		// Versioned >=1.2
147
+		if (method_exists(Versioned::class, 'get_draft_site_secured')) {
148
+			return Versioned::get_draft_site_secured();
149
+		}
150
+
151
+		// Fall back to session
152
+		return !$session->get('unsecuredDraftSite');
153
+	}
154
+
155
+	/**
156
+	 * Set draft site security
157
+	 *
158
+	 * @param Session $session
159
+	 * @param bool $secured True if draft site should be secured
160
+	 */
161
+	protected function setIsDraftSecured(Session $session, $secured)
162
+	{
163
+		// Versioned >=1.2
164
+		if (method_exists(Versioned::class, 'set_draft_site_secured')) {
165
+			Versioned::set_draft_site_secured($secured);
166
+		}
167
+
168
+		// Set session variable anyway
169
+		$session->set('unsecuredDraftSite', !$secured);
170
+	}
171 171
 }
Please login to merge, or discard this patch.
tests/ShareTokenTest.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -8,27 +8,27 @@
 block discarded – undo
8 8
 
9 9
 class ShareTokenTest extends FunctionalTest
10 10
 {
11
-    /**
12
-     * @var string
13
-     */
14
-    protected static $fixture_file = 'ShareTokenTest.yml';
11
+	/**
12
+	 * @var string
13
+	 */
14
+	protected static $fixture_file = 'ShareTokenTest.yml';
15 15
 
16
-    public function testValidForDays()
17
-    {
18
-        DBDatetime::set_mock_now('2015-03-15 00:00:00');
16
+	public function testValidForDays()
17
+	{
18
+		DBDatetime::set_mock_now('2015-03-15 00:00:00');
19 19
 
20
-        /**
21
-         * @var ShareToken $validToken
22
-         */
23
-        $validToken = $this->objFromFixture(ShareToken::class, 'ValidToken');
20
+		/**
21
+		 * @var ShareToken $validToken
22
+		 */
23
+		$validToken = $this->objFromFixture(ShareToken::class, 'ValidToken');
24 24
 
25
-        $this->assertFalse($validToken->isExpired());
25
+		$this->assertFalse($validToken->isExpired());
26 26
 
27
-        /**
28
-         * @var ShareToken $invalidToken
29
-         */
30
-        $invalidToken = $this->objFromFixture(ShareToken::class, 'InvalidToken');
27
+		/**
28
+		 * @var ShareToken $invalidToken
29
+		 */
30
+		$invalidToken = $this->objFromFixture(ShareToken::class, 'InvalidToken');
31 31
 
32
-        $this->assertTrue($invalidToken->isExpired());
33
-    }
32
+		$this->assertTrue($invalidToken->isExpired());
33
+	}
34 34
 }
Please login to merge, or discard this patch.
tests/ShareDraftContentSiteTreeExtensionTest.php 1 patch
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -10,85 +10,85 @@
 block discarded – undo
10 10
 
11 11
 class ShareDraftContentSiteTreeExtensionTest extends FunctionalTest
12 12
 {
13
-    /**
14
-     * @var string
15
-     */
16
-    protected static $fixture_file = 'ShareDraftContentSiteTreeExtensionTest.yml';
13
+	/**
14
+	 * @var string
15
+	 */
16
+	protected static $fixture_file = 'ShareDraftContentSiteTreeExtensionTest.yml';
17 17
 
18
-    public function testShareTokenLink()
19
-    {
20
-        /**
21
-         * First we check if both pages generate new ShareTokenSalt values. Then we check that
22
-         * these values are not the same.
23
-         */
18
+	public function testShareTokenLink()
19
+	{
20
+		/**
21
+		 * First we check if both pages generate new ShareTokenSalt values. Then we check that
22
+		 * these values are not the same.
23
+		 */
24 24
 
25
-        /** @var Page|ShareDraftContentSiteTreeExtension $firstSharedPage */
26
-        $firstSharedPage = $this->objFromFixture(Page::class, 'FirstSharedPage');
25
+		/** @var Page|ShareDraftContentSiteTreeExtension $firstSharedPage */
26
+		$firstSharedPage = $this->objFromFixture(Page::class, 'FirstSharedPage');
27 27
 
28
-        $firstShareLink = $firstSharedPage->ShareTokenLink();
28
+		$firstShareLink = $firstSharedPage->ShareTokenLink();
29 29
 
30
-        $this->assertNotEmpty($firstSharedPage->ShareTokenSalt);
30
+		$this->assertNotEmpty($firstSharedPage->ShareTokenSalt);
31 31
 
32
-        /** @var Page|ShareDraftContentSiteTreeExtension $secondSharedPage */
33
-        $secondSharedPage = $this->objFromFixture(Page::class, 'SecondSharedPage');
32
+		/** @var Page|ShareDraftContentSiteTreeExtension $secondSharedPage */
33
+		$secondSharedPage = $this->objFromFixture(Page::class, 'SecondSharedPage');
34 34
 
35
-        $secondShareLink = $secondSharedPage->ShareTokenLink();
35
+		$secondShareLink = $secondSharedPage->ShareTokenLink();
36 36
 
37
-        $this->assertNotEmpty($secondSharedPage->ShareTokenSalt);
37
+		$this->assertNotEmpty($secondSharedPage->ShareTokenSalt);
38 38
 
39
-        $this->assertNotEquals($firstShareLink, $secondShareLink);
39
+		$this->assertNotEquals($firstShareLink, $secondShareLink);
40 40
 
41
-        // Ensure that salt between two pages causes key to differ for null token
42
-        $this->assertNotEquals(
43
-            $firstSharedPage->generateKey(null),
44
-            $secondSharedPage->generateKey(null)
45
-        );
41
+		// Ensure that salt between two pages causes key to differ for null token
42
+		$this->assertNotEquals(
43
+			$firstSharedPage->generateKey(null),
44
+			$secondSharedPage->generateKey(null)
45
+		);
46 46
 
47
-        /**
48
-         * Then we get the underlying token and send a preview request. With a valid key and token,
49
-         * this will return a draft page. With an invalid key or token, this will return an expired
50
-         * link page.
51
-         */
47
+		/**
48
+		 * Then we get the underlying token and send a preview request. With a valid key and token,
49
+		 * this will return a draft page. With an invalid key or token, this will return an expired
50
+		 * link page.
51
+		 */
52 52
 
53
-        $firstSharedPageToken = $firstSharedPage->ShareTokens()->first();
53
+		$firstSharedPageToken = $firstSharedPage->ShareTokens()->first();
54 54
 
55
-        $this->assertNotEmpty($firstSharedPageToken);
55
+		$this->assertNotEmpty($firstSharedPageToken);
56 56
 
57
-        // Ensure that salt between two pages causes key to differ for either token
58
-        $this->assertNotEquals(
59
-            $firstSharedPage->generateKey($firstSharedPageToken->Token),
60
-            $secondSharedPage->generateKey($firstSharedPageToken->Token)
61
-        );
57
+		// Ensure that salt between two pages causes key to differ for either token
58
+		$this->assertNotEquals(
59
+			$firstSharedPage->generateKey($firstSharedPageToken->Token),
60
+			$secondSharedPage->generateKey($firstSharedPageToken->Token)
61
+		);
62 62
 
63
-        $parts = explode('/', $firstShareLink);
63
+		$parts = explode('/', $firstShareLink);
64 64
 
65
-        $token = array_pop($parts);
66
-        $key = array_pop($parts);
65
+		$token = array_pop($parts);
66
+		$key = array_pop($parts);
67 67
 
68
-        $this->assertEquals($token, $firstSharedPageToken->Token);
68
+		$this->assertEquals($token, $firstSharedPageToken->Token);
69 69
 
70
-        $request = new HTTPRequest('GET', $firstShareLink);
70
+		$request = new HTTPRequest('GET', $firstShareLink);
71 71
 
72
-        $request->setRouteParams(array(
73
-            'Token' => $token,
74
-            'Key' => $key,
75
-        ));
72
+		$request->setRouteParams(array(
73
+			'Token' => $token,
74
+			'Key' => $key,
75
+		));
76 76
 
77
-        $controller = new ShareDraftController();
78
-        $response = $controller->preview($request);
77
+		$controller = new ShareDraftController();
78
+		$response = $controller->preview($request);
79 79
 
80
-        $this->assertContains('share-draft-content-message', $response);
80
+		$this->assertContains('share-draft-content-message', $response);
81 81
 
82
-        $request = new HTTPRequest('GET', $firstShareLink);
82
+		$request = new HTTPRequest('GET', $firstShareLink);
83 83
 
84
-        $request->setRouteParams(array(
85
-            'Token' => $token,
86
-            'Key' => '',
87
-        ));
84
+		$request->setRouteParams(array(
85
+			'Token' => $token,
86
+			'Key' => '',
87
+		));
88 88
 
89
-        $controller = new ShareDraftController();
90
-        $response = $controller->preview($request);
89
+		$controller = new ShareDraftController();
90
+		$response = $controller->preview($request);
91 91
 
92
-        $this->assertContains('share-draft-error-page', $response);
93
-    }
92
+		$this->assertContains('share-draft-error-page', $response);
93
+	}
94 94
 }
Please login to merge, or discard this patch.
src/Extensions/ShareDraftContentRequirementsExtension.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -7,9 +7,9 @@
 block discarded – undo
7 7
 
8 8
 class ShareDraftContentRequirementsExtension extends DataExtension
9 9
 {
10
-    public function init()
11
-    {
12
-        Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-cms.css');
13
-        Requirements::javascript('silverstripe/sharedraftcontent: client/dist/js/bundle.js');
14
-    }
10
+	public function init()
11
+	{
12
+		Requirements::css('silverstripe/sharedraftcontent: client/dist/styles/bundle-cms.css');
13
+		Requirements::javascript('silverstripe/sharedraftcontent: client/dist/js/bundle.js');
14
+	}
15 15
 }
Please login to merge, or discard this patch.
src/Extensions/ShareDraftContentControllerExtension.php 1 patch
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -7,38 +7,38 @@
 block discarded – undo
7 7
 
8 8
 class ShareDraftContentControllerExtension extends Extension
9 9
 {
10
-    /**
11
-     * @var array
12
-     */
13
-    private static $allowed_actions = [
14
-        'MakeShareDraftLink',
15
-    ];
10
+	/**
11
+	 * @var array
12
+	 */
13
+	private static $allowed_actions = [
14
+		'MakeShareDraftLink',
15
+	];
16 16
 
17
-    /**
18
-     * @return mixed
19
-     */
20
-    public function MakeShareDraftLink()
21
-    {
22
-        if ($member = Security::getCurrentUser()) {
23
-            if ($this->owner->hasMethod('CurrentPage') && $this->owner->CurrentPage()->canView($member)) {
24
-                return $this->owner->CurrentPage()->ShareTokenLink();
25
-            }
26
-            if ($this->owner->hasMethod('canView') && $this->owner->canView($member)) {
27
-                return $this->owner->ShareTokenLink();
28
-            }
29
-        }
17
+	/**
18
+	 * @return mixed
19
+	 */
20
+	public function MakeShareDraftLink()
21
+	{
22
+		if ($member = Security::getCurrentUser()) {
23
+			if ($this->owner->hasMethod('CurrentPage') && $this->owner->CurrentPage()->canView($member)) {
24
+				return $this->owner->CurrentPage()->ShareTokenLink();
25
+			}
26
+			if ($this->owner->hasMethod('canView') && $this->owner->canView($member)) {
27
+				return $this->owner->ShareTokenLink();
28
+			}
29
+		}
30 30
 
31
-        return Security::permissionFailure();
32
-    }
31
+		return Security::permissionFailure();
32
+	}
33 33
 
34
-    /**
35
-     * @return string
36
-     */
37
-    public function getShareDraftLinkAction()
38
-    {
39
-        if ($this->owner->config()->get('url_segment')) {
40
-            return $this->owner->Link('MakeShareDraftLink');
41
-        }
42
-        return '';
43
-    }
34
+	/**
35
+	 * @return string
36
+	 */
37
+	public function getShareDraftLinkAction()
38
+	{
39
+		if ($this->owner->config()->get('url_segment')) {
40
+			return $this->owner->Link('MakeShareDraftLink');
41
+		}
42
+		return '';
43
+	}
44 44
 }
Please login to merge, or discard this patch.
src/Extensions/ShareDraftContentSiteTreeExtension.php 1 patch
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -18,115 +18,115 @@
 block discarded – undo
18 18
  */
19 19
 class ShareDraftContentSiteTreeExtension extends DataExtension
20 20
 {
21
-    /**
22
-     * The number of days a shared link should be valid for, before expiring.
23
-     *
24
-     * @config
25
-     *
26
-     * @var int
27
-     */
28
-    private static $valid_for_days = 30;
29
-
30
-    /**
31
-     * @var array
32
-     */
33
-    private static $db = array(
34
-        'ShareTokenSalt' => 'Varchar(16)',
35
-    );
36
-
37
-    /**
38
-     * @var array
39
-     */
40
-    private static $has_many = array(
41
-        'ShareTokens' => ShareToken::class,
42
-    );
43
-
44
-    /**
45
-     * @var array
46
-     */
47
-    private static $allowed_actions = array(
48
-        'MakeShareDraftLink'
49
-    );
50
-
51
-    /**
52
-     * @return string
53
-     */
54
-    public function ShareTokenLink()
55
-    {
56
-        $shareToken = $this->getNewShareToken();
57
-
58
-        return Controller::join_links(
59
-            Director::absoluteBaseURL(),
60
-            'preview',
61
-            $this->generateKey($shareToken->Token),
62
-            $shareToken->Token
63
-        );
64
-    }
65
-
66
-    /**
67
-     * @return ShareToken
68
-     */
69
-    protected function getNewShareToken()
70
-    {
71
-        if (!$this->owner->ShareTokenSalt) {
72
-            $this->owner->ShareTokenSalt = $this->getNewToken();
73
-            $this->owner->writeWithoutVersion();
74
-        }
75
-
76
-        $found = null;
77
-        $token = null;
78
-        $tries = 1;
79
-        $limit = 5;
80
-
81
-        while (!$found && ($tries++ < $limit)) {
82
-            $token = $this->getNewToken();
83
-
84
-            $found = ShareToken::get()->filter(array(
85
-                "Token" => $token,
86
-                "PageID" => $this->owner->ID,
87
-            ))->first();
88
-        }
89
-
90
-        $config = Config::forClass(__CLASS__);
91
-
92
-        $validForDays = $config->get('valid_for_days');
93
-
94
-        $token = ShareToken::create(array(
95
-            "Token" => $token,
96
-            "ValidForDays" => $validForDays,
97
-            "PageID" => $this->owner->ID,
98
-        ));
99
-
100
-        $token->write();
101
-
102
-        return $token;
103
-    }
104
-
105
-    /**
106
-     * @return string
107
-     */
108
-    protected function getNewToken()
109
-    {
110
-        $generator = new RandomGenerator();
111
-
112
-        return substr($generator->randomToken('sha256'), 0, 16);
113
-    }
114
-
115
-    /**
116
-     * @param string $salt
117
-     *
118
-     * @return string
119
-     */
120
-    public function generateKey($salt)
121
-    {
122
-        return hash_pbkdf2('sha256', $salt, $this->owner->ShareTokenSalt, 1000, 16);
123
-    }
124
-
125
-    /**
126
-     * @return string
127
-     */
128
-    public function getShareDraftLinkAction()
129
-    {
130
-        return $this->owner->Link('MakeShareDraftLink');
131
-    }
21
+	/**
22
+	 * The number of days a shared link should be valid for, before expiring.
23
+	 *
24
+	 * @config
25
+	 *
26
+	 * @var int
27
+	 */
28
+	private static $valid_for_days = 30;
29
+
30
+	/**
31
+	 * @var array
32
+	 */
33
+	private static $db = array(
34
+		'ShareTokenSalt' => 'Varchar(16)',
35
+	);
36
+
37
+	/**
38
+	 * @var array
39
+	 */
40
+	private static $has_many = array(
41
+		'ShareTokens' => ShareToken::class,
42
+	);
43
+
44
+	/**
45
+	 * @var array
46
+	 */
47
+	private static $allowed_actions = array(
48
+		'MakeShareDraftLink'
49
+	);
50
+
51
+	/**
52
+	 * @return string
53
+	 */
54
+	public function ShareTokenLink()
55
+	{
56
+		$shareToken = $this->getNewShareToken();
57
+
58
+		return Controller::join_links(
59
+			Director::absoluteBaseURL(),
60
+			'preview',
61
+			$this->generateKey($shareToken->Token),
62
+			$shareToken->Token
63
+		);
64
+	}
65
+
66
+	/**
67
+	 * @return ShareToken
68
+	 */
69
+	protected function getNewShareToken()
70
+	{
71
+		if (!$this->owner->ShareTokenSalt) {
72
+			$this->owner->ShareTokenSalt = $this->getNewToken();
73
+			$this->owner->writeWithoutVersion();
74
+		}
75
+
76
+		$found = null;
77
+		$token = null;
78
+		$tries = 1;
79
+		$limit = 5;
80
+
81
+		while (!$found && ($tries++ < $limit)) {
82
+			$token = $this->getNewToken();
83
+
84
+			$found = ShareToken::get()->filter(array(
85
+				"Token" => $token,
86
+				"PageID" => $this->owner->ID,
87
+			))->first();
88
+		}
89
+
90
+		$config = Config::forClass(__CLASS__);
91
+
92
+		$validForDays = $config->get('valid_for_days');
93
+
94
+		$token = ShareToken::create(array(
95
+			"Token" => $token,
96
+			"ValidForDays" => $validForDays,
97
+			"PageID" => $this->owner->ID,
98
+		));
99
+
100
+		$token->write();
101
+
102
+		return $token;
103
+	}
104
+
105
+	/**
106
+	 * @return string
107
+	 */
108
+	protected function getNewToken()
109
+	{
110
+		$generator = new RandomGenerator();
111
+
112
+		return substr($generator->randomToken('sha256'), 0, 16);
113
+	}
114
+
115
+	/**
116
+	 * @param string $salt
117
+	 *
118
+	 * @return string
119
+	 */
120
+	public function generateKey($salt)
121
+	{
122
+		return hash_pbkdf2('sha256', $salt, $this->owner->ShareTokenSalt, 1000, 16);
123
+	}
124
+
125
+	/**
126
+	 * @return string
127
+	 */
128
+	public function getShareDraftLinkAction()
129
+	{
130
+		return $this->owner->Link('MakeShareDraftLink');
131
+	}
132 132
 }
Please login to merge, or discard this patch.