Completed
Push — master ( 7c844d...3d6a54 )
by Daniel
10s
created
code/controllers/ShareDraftController.php 2 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -107,9 +107,9 @@
 block discarded – undo
107 107
     }
108 108
 
109 109
     /**
110
-     * @param mixed $page
110
+     * @param DataObject|null $page
111 111
      *
112
-     * @return mixed
112
+     * @return ContentController
113 113
      */
114 114
     protected function getControllerFor($page)
115 115
     {
Please login to merge, or discard this patch.
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -2,117 +2,117 @@
 block discarded – undo
2 2
 
3 3
 class ShareDraftController extends Controller
4 4
 {
5
-    /**
6
-     * Controller for rendering draft pages.
7
-     *
8
-     * @config
9
-     *
10
-     * @var string
11
-     */
12
-    private static $controller = 'Page_Controller';
13
-
14
-    /**
15
-     * @var array
16
-     */
17
-    private static $allowed_actions = array(
18
-        'preview'
19
-    );
20
-
21
-    /**
22
-     * @var array
23
-     */
24
-    private static $url_handlers = array(
25
-        '$Key/$Token' => 'preview'
26
-    );
27
-
28
-    /**
29
-     * @param SS_HTTPRequest $request
30
-     *
31
-     * @return string|HTMLText
32
-     */
33
-    public function preview(SS_HTTPRequest $request)
34
-    {
35
-        $key = $request->param('Key');
36
-        $token = $request->param('Token');
37
-
38
-        /**
39
-         * @var ShareToken $shareToken
40
-         */
41
-        $shareToken = ShareToken::get()->filter('Token', $token)->first();
42
-
43
-        if (!$shareToken) {
44
-            return $this->errorPage();
45
-        }
46
-
47
-        $page = Versioned::get_one_by_stage(
48
-            'SiteTree',
49
-            'Stage',
50
-            sprintf('"SiteTree"."ID" = \'%d\'', $shareToken->PageID)
51
-        );
52
-
53
-        $latest = Versioned::get_latest_version('SiteTree', $shareToken->PageID);
54
-
55
-        $controller = $this->getControllerFor($page);
56
-
57
-        if (!$shareToken->isExpired() && $page->generateKey($shareToken->Token) === $key) {
58
-            Requirements::css(SHAREDRAFTCONTENT_DIR . '/css/top-bar.css');
59
-
60
-            // Temporarily un-secure the draft site and switch to draft
61
-            $oldSecured = Session::get('unsecuredDraftSite');
62
-            $oldMode = Versioned::get_reading_mode();
63
-            $restore = function () use ($oldSecured, $oldMode) {
64
-                Session::set('unsecuredDraftSite', $oldSecured);
65
-                Versioned::set_reading_mode($oldMode);
66
-            };
67
-
68
-            // Process page inside an unsecured draft container
69
-            try {
70
-                Session::set('unsecuredDraftSite', true);
71
-                Versioned::reading_stage('Stage');
72
-
73
-                // Hack to get around ContentController::init() redirecting on home page
74
-                $_FILES = array(array());
75
-
76
-                // Create mock request; Simplify request to single top level request
77
-                $pageRequest = new SS_HTTPRequest('GET', $page->URLSegment);
78
-                $pageRequest->match('$URLSegment//$Action/$ID/$OtherID', true);
79
-                $rendered = $controller->handleRequest($pageRequest, $this->model);
80
-
81
-                // Render draft heading
82
-                $data = new ArrayData(array(
83
-                    'Page' => $page,
84
-                    'Latest' => $latest,
85
-                ));
86
-                $include = (string) $data->renderWith('Includes/TopBar');
87
-            } catch (Exception $ex) {
88
-                $restore();
89
-                throw $ex;
90
-            }
91
-            $restore();
92
-
93
-            return str_replace('</body>', $include . '</body>', (string) $rendered->getBody());
94
-        } else {
95
-            return $this->errorPage();
96
-        }
97
-    }
98
-
99
-    /**
100
-     * @return HTMLText
101
-     */
102
-    protected function errorPage()
103
-    {
104
-        Requirements::css(SHAREDRAFTCONTENT_DIR . '/css/error-page.css');
105
-
106
-        return $this->renderWith('ShareDraftContentError');
107
-    }
108
-
109
-    /**
110
-     * @param mixed $page
111
-     *
112
-     * @return mixed
113
-     */
114
-    protected function getControllerFor($page)
115
-    {
116
-        return ModelAsController::controller_for($page);
117
-    }
5
+	/**
6
+	 * Controller for rendering draft pages.
7
+	 *
8
+	 * @config
9
+	 *
10
+	 * @var string
11
+	 */
12
+	private static $controller = 'Page_Controller';
13
+
14
+	/**
15
+	 * @var array
16
+	 */
17
+	private static $allowed_actions = array(
18
+		'preview'
19
+	);
20
+
21
+	/**
22
+	 * @var array
23
+	 */
24
+	private static $url_handlers = array(
25
+		'$Key/$Token' => 'preview'
26
+	);
27
+
28
+	/**
29
+	 * @param SS_HTTPRequest $request
30
+	 *
31
+	 * @return string|HTMLText
32
+	 */
33
+	public function preview(SS_HTTPRequest $request)
34
+	{
35
+		$key = $request->param('Key');
36
+		$token = $request->param('Token');
37
+
38
+		/**
39
+		 * @var ShareToken $shareToken
40
+		 */
41
+		$shareToken = ShareToken::get()->filter('Token', $token)->first();
42
+
43
+		if (!$shareToken) {
44
+			return $this->errorPage();
45
+		}
46
+
47
+		$page = Versioned::get_one_by_stage(
48
+			'SiteTree',
49
+			'Stage',
50
+			sprintf('"SiteTree"."ID" = \'%d\'', $shareToken->PageID)
51
+		);
52
+
53
+		$latest = Versioned::get_latest_version('SiteTree', $shareToken->PageID);
54
+
55
+		$controller = $this->getControllerFor($page);
56
+
57
+		if (!$shareToken->isExpired() && $page->generateKey($shareToken->Token) === $key) {
58
+			Requirements::css(SHAREDRAFTCONTENT_DIR . '/css/top-bar.css');
59
+
60
+			// Temporarily un-secure the draft site and switch to draft
61
+			$oldSecured = Session::get('unsecuredDraftSite');
62
+			$oldMode = Versioned::get_reading_mode();
63
+			$restore = function () use ($oldSecured, $oldMode) {
64
+				Session::set('unsecuredDraftSite', $oldSecured);
65
+				Versioned::set_reading_mode($oldMode);
66
+			};
67
+
68
+			// Process page inside an unsecured draft container
69
+			try {
70
+				Session::set('unsecuredDraftSite', true);
71
+				Versioned::reading_stage('Stage');
72
+
73
+				// Hack to get around ContentController::init() redirecting on home page
74
+				$_FILES = array(array());
75
+
76
+				// Create mock request; Simplify request to single top level request
77
+				$pageRequest = new SS_HTTPRequest('GET', $page->URLSegment);
78
+				$pageRequest->match('$URLSegment//$Action/$ID/$OtherID', true);
79
+				$rendered = $controller->handleRequest($pageRequest, $this->model);
80
+
81
+				// Render draft heading
82
+				$data = new ArrayData(array(
83
+					'Page' => $page,
84
+					'Latest' => $latest,
85
+				));
86
+				$include = (string) $data->renderWith('Includes/TopBar');
87
+			} catch (Exception $ex) {
88
+				$restore();
89
+				throw $ex;
90
+			}
91
+			$restore();
92
+
93
+			return str_replace('</body>', $include . '</body>', (string) $rendered->getBody());
94
+		} else {
95
+			return $this->errorPage();
96
+		}
97
+	}
98
+
99
+	/**
100
+	 * @return HTMLText
101
+	 */
102
+	protected function errorPage()
103
+	{
104
+		Requirements::css(SHAREDRAFTCONTENT_DIR . '/css/error-page.css');
105
+
106
+		return $this->renderWith('ShareDraftContentError');
107
+	}
108
+
109
+	/**
110
+	 * @param mixed $page
111
+	 *
112
+	 * @return mixed
113
+	 */
114
+	protected function getControllerFor($page)
115
+	{
116
+		return ModelAsController::controller_for($page);
117
+	}
118 118
 }
Please login to merge, or discard this patch.