Ejemplo n.º 1
0
 public static function doJob($method, $uri, array $params)
 {
     if (XenForo_Application::isRegistered('_bdApi_disableBatch') && XenForo_Application::get('_bdApi_disableBatch')) {
         return array('_job_result' => 'error', '_job_error' => 'Batch running has been disabled.');
     }
     $fc = self::getFc();
     $request = new bdApi_Zend_Controller_Request_Http(bdApi_Data_Helper_Core::safeConvertApiUriToAbsoluteUri($uri, true));
     $request->setMethod($method);
     foreach ($params as $key => $value) {
         $request->setParam($key, $value);
     }
     $fc->setRequest($request);
     // routing
     $routeMatch = $fc->getDependencies()->route($request);
     if (!$routeMatch or !$routeMatch->getControllerName()) {
         list($controllerName, $action) = $fc->getDependencies()->getNotFoundErrorRoute();
         $routeMatch->setControllerName($controllerName);
         $routeMatch->setAction($action);
     }
     $response = $fc->dispatch($routeMatch);
     if ($response instanceof XenForo_ControllerResponse_Error) {
         return array('_job_result' => 'error', '_job_error' => $response->errorText);
     } elseif ($response instanceof XenForo_ControllerResponse_Exception) {
         return array('_job_result' => 'error', '_job_error' => $response->getMessage());
     } elseif ($response instanceof XenForo_ControllerResponse_Message) {
         return array('_job_result' => 'message', '_job_message' => $response->message);
     } elseif ($response instanceof XenForo_ControllerResponse_View) {
         return array('_job_result' => 'ok', '_job_response' => $response);
     }
     throw new XenForo_Exception('Unexpected $response occurred.');
 }
Ejemplo n.º 2
0
 public function actionGetParseLink()
 {
     $link = $this->_input->filterSingle('link', XenForo_Input::STRING);
     $link = XenForo_Link::convertUriToAbsoluteUri($link, true);
     $fc = XenForo_Application::get('_bdApi_fc');
     /* @var $dependencies bdApi_Dependencies */
     $dependencies = $fc->getDependencies();
     $request = new bdApi_Zend_Controller_Request_Http($link);
     $request->setBaseUrl(parse_url(XenForo_Application::getOptions()->get('boardUrl'), PHP_URL_PATH));
     $routeMatch = $dependencies->routePublic($request);
     if (!$routeMatch or !$routeMatch->getControllerName()) {
         // link cannot be route
         return $this->_actionGetParseLink_getControllerResponseNop($link, false);
     }
     $controllerResponse = $this->_actionGetParseLink_getControllerResponse($link, $request, $routeMatch);
     if (!empty($controllerResponse)) {
         return $controllerResponse;
     }
     // controller / action not recognized...
     return $this->_actionGetParseLink_getControllerResponseNop($link, true);
 }