/** * @return ContentController */ public function getNestedController() { $request = $this->request; if (!($URLSegment = $request->param('URLSegment'))) { throw new Exception('ModelAsController->getNestedController(): was not passed a URLSegment value.'); } // Find page by link, regardless of current locale settings Translatable::disable_locale_filter(); $sitetree = DataObject::get_one('SiteTree', sprintf('"URLSegment" = \'%s\' %s', Convert::raw2sql($URLSegment), SiteTree::nested_urls() ? 'AND "ParentID" = 0' : null)); Translatable::enable_locale_filter(); if (!$sitetree) { // If a root page has been renamed, redirect to the new location. // See ContentController->handleRequest() for similiar logic. $redirect = self::find_old_page($URLSegment); if ($redirect = self::find_old_page($URLSegment)) { $params = $request->getVars(); if (isset($params['url'])) { unset($params['url']); } $this->response = new SS_HTTPResponse(); $this->response->redirect(Controller::join_links($redirect->Link(Controller::join_links($request->param('Action'), $request->param('ID'), $request->param('OtherID'))), $params ? '?' . http_build_query($params) : null), 301); return $this->response; } $ctrl = new Paste_Controller(); $ctrl->request = $request; $paste = $ctrl->getCurrentPaste(); if ($paste) { if (is_string($paste) || is_object($paste) && is_a($paste, 'SS_HTTPResponse')) { return $paste; } $ctrl->init($paste); $response = $ctrl->handleRequest($request); return $response; } if ($response = ErrorPage::response_for(404)) { return $response; } else { $this->httpError(404, 'The requested page could not be found.'); } } // Enforce current locale setting to the loaded SiteTree object if ($sitetree->Locale) { Translatable::set_current_locale($sitetree->Locale); } if (isset($_REQUEST['debug'])) { Debug::message("Using record #{$sitetree->ID} of type {$sitetree->class} with link {$sitetree->Link()}"); } return self::controller_for($sitetree, $this->request->param('Action')); }
public function getCurrentPaste() { if (empty(self::$current_paste)) { $id = trim($this->request->getVar('url'), '/'); if (strpos($id, '/') !== FALSE) { list($id, $func) = explode('/', $id); if ($id != 'Paste_Controller') { $paste = DataObject::get_one('Paste', '"Filename" = \'' . Convert::raw2sql($id) . '\''); if (!$paste) { return FALSE; } } } if ($id && $id != 'Paste_Controller') { $paste = DataObject::get_one('Paste', '"Filename" = \'' . Convert::raw2sql($id) . '\''); } if (empty($paste)) { $paste = new Paste(); $paste->PHPVersionID = DataObject::get_one('PHPVersion', 'IsDefault=1')->ID; } else { $paste->Hits++; $paste->write(); } self::$current_paste = $paste; } return self::$current_paste; }