/** * Main entry point for the controller. * * @return string - The final page output */ public function getResponse() { $error = vB_Router::getSegment('error'); // Resolve rerouted error $error = in_array($error, array('403', '404', '500')) ? $error : '404'; // Setup the templater for xhtml vB_View::registerTemplater(vB_View::OT_XHTML, new vB_Templater_vB()); $view = new vB_View_AJAXHTML('http_error'); if ('403' == $error) { $view->addError(new vB_Phrase('error', 'nopermission_loggedin_ajax')); } else if ('500' == $error) { $view->addError(new vB_Phrase('error', 'error_500')); } else { $view->addError(new vB_Phrase('error', 'error_400')); } return $view->render(true); }
/** * Main entry point for the controller. * * @return string - The final page output */ public function getResponse() { // Register the templater to be used for XHTML vB_View::registerTemplater(vB_View::OT_XHTML, new vB_Templater_vB()); $error = vB_Router::getSegment('error'); // Resolve rerouted error $error = in_array($error, array('403', '404', '409', '500')) ? $error : '404'; $current_page = $_SERVER['SCRIPT_NAME'] . ($_SERVER['SCRIPT_NAME'] == '' ? '' : '?' . $_SERVER['QUERY_STRING']); if ('403' == $error) { define('WOLPATH', '403|cpglobal|403_error|' . new vB_Phrase('wol', 'viewing_no_permission_message')); vB::$vbulletin->session->set('location', $current_page); print_no_permission(); } else if ('409' == $error) { $message = ($message = vB_Router::getRerouteMessage()) ? $message : new vB_Phrase('error', 'error_409_description', vB_Router::getInitialURL(), vB_Router::getBaseURL(), vB::$vbulletin->options['contactuslink']); define('WOLPATH', '409|wol|' . new vB_Phrase('cpglobal', 'error') . "|$message"); vB::$vbulletin->session->set('location', $current_page); standard_error($message); } else if ('500' == $error) { $message = new vB_Phrase('error', 'error_500_description', vB_Router::getInitialURL(), vB_Router::getBaseURL(), vB::$vbulletin->options['contactuslink']); define('WOLPATH', '500|wol|' . new vB_Phrase('cpglobal', 'error') . "|$message"); vB::$vbulletin->session->set('location', $current_page); standard_error($message); } else { $message = new vB_Phrase('error', 'error_404_description', vB_Router::getBaseURL(), vB::$vbulletin->options['contactuslink']); define('WOLPATH', '404|wol|' . new vB_Phrase('cpglobal', 'error') . "|$message"); vB::$vbulletin->session->set('location', $current_page); } // Create the page view $page_view = new vB_View_Page('page'); $title = new vB_Phrase('error', 'error_404'); $page_view->setPageTitle($title); // Create the body view $error_view = new vB_View('error_message'); $subtitle = ($title != ($subtitle = vB_Router::getRerouteMessage())) ? $subtitle : false; $error_view->title = $title; $error_view->subtitle = $subtitle; $error_view->message = new vB_Phrase('error', 'error_404_description', vB_Router::getBaseURL(), vB::$vbulletin->options['contactuslink']); $page_view->setBodyView($error_view); // Add general page info $page_view->setPageTitle($title); return $page_view->render(); }
/** * Constructor. * The constructor grabs the requested node segment and parameters. * * @param array mixed $parameters - User requested parameters. * @param string $action - User requested action */ public function __construct($parameters, $action = false) { parent::__construct($parameters, $action); // Evaluate the node that we're working with $this->node_segment = vB_Router::getSegment('node'); if (!$this->node_segment) { throw (new vB_Exception_404()); } if ($this->auto_initialize) { $this->initialize(); } }
/** * Constructor. * The constructor grabs the requested node segment and parameters. * * @param array mixed $parameters - User requested parameters. */ public function __construct($parameters, $action = false) { parent::__construct($parameters, $action); // Evaluate the node that we're working with if (!($this->action = vB_Router::getSegment('action'))) { // TODO: shouldn't throw 404's on construction, only in getResponse() throw (new vB_Exception_404()); } if (!($this->widget = vB_Router::getSegment('widget')) OR !intval($this->widget)) { throw (new vB_Exception_404()); } $this->node = intval(vB_Router::getSegment('node')); $this->initialize(); }
/** * Fetches the standard page view for a widget. * * @param bool $skip_errors - If using a collection, omit widgets that throw errors * @return vBCms_View_Widget - The resolved view, or array of views */ public function getPageView() { $this->assertWidget(); $config = $this->widget->getConfig(); if (!isset($config['template_name']) OR ($config['template_name'] == '') ) { $config['template_name'] = 'vbcms_widget_categorynavcurrent_page'; } // Create view $view = new vBCms_View_Widget($config['template_name']); $this->sectionid = $this->content->getContentTypeId() == vb_Types::instance()->getContentTypeID("vBCms_Section") ? $this->content->getNodeId() : $this->content->getParentId(); try { $categoryid = max(1, intval(vB_Router::getSegment('value'))); } catch (vB_Exception_Router $e) { $categoryid = 0; } if (!$nodes = vB_Cache::instance()->read($cache_key = $this->getHash($this->widget->getId(), $this->sectionid), true, true )) { //First we'll generate the category list //compose the sql $rst = vB::$vbulletin->db->query_read($sql = "SELECT parent.category AS parentcat, cat.categoryid, cat.category, cat.catleft, cat.catright, info.title AS node, node.nodeid, count(nodecat.nodeid) as qty FROM " . TABLE_PREFIX . "cms_node AS node INNER JOIN " . TABLE_PREFIX . "cms_nodeinfo AS info ON info.nodeid = node.nodeid INNER JOIN " . TABLE_PREFIX . "cms_category AS parent on parent.parentnode = node.nodeid INNER JOIN " . TABLE_PREFIX . "cms_category AS cat ON (cat.catleft >= parent.catleft AND cat.catleft <= parent.catright) LEFT JOIN " . TABLE_PREFIX . "cms_nodecategory AS nodecat ON nodecat.categoryid = cat.categoryid WHERE node.nodeid = " . $this->sectionid . " AND " . vBCMS_Permissions::getPermissionString() . " GROUP BY parent.category, cat.categoryid, cat.category, cat.catleft, cat.catright, info.title ORDER BY catleft;"); $parents = array(); $level = 0; $nodes = array(); if ($record = vB::$vbulletin->db->fetch_array($rst)) { $record['level'] = $level; $record['route_info'] = $record['categoryid'] . ($record['category'] != '' ? '-' . str_replace(' ', '-', $record['category']) : ''); $nodes[strtolower($record['category'])] = $parents[0] = $record; $last_category = -1; while($record = vB::$vbulletin->db->fetch_array($rst)) { $record['route_info'] = $record['categoryid'] . ($record['category'] != '' ? '-' . str_replace(' ', '-', $record['category']) : ''); if ($record['categoryid'] == $last_category ) { continue; } //note that since we're already sorted by by catleft we don't need to check that. while((intval($record['catright']) > intval($parents['level']['catright'])) AND $level > 0) { $level--; } $level++; $record['level'] = $level; $nodes[strtolower($record['category'])] = $parents[$level] = $record; $last_category = $record['categoryid']; } } ksort($nodes); $key = array_keys($nodes); $size = sizeOf($key); for ($i = 0; $i < $size; $i++) { if ($categoryid == $nodes[$key[$i]]['categoryid']) { $nodes[$key[$i]]['myself'] = true; } else { $nodes[$key[$i]]['myself'] = false; } } vB_Cache::instance()->write($cache_key, $nodes, $this->cache_ttl, 'categories_updated'); } foreach ($nodes as $nodeid => $record) { $route = vB_Route::create('vBCms_Route_List', "category/" . $record['route_info'] . "/1")->getCurrentURL(); $nodes[$nodeid]['view_url'] = $route; } // Modify $nodes to add myself var (currently selected category) $view->widget_title = $this->widget->getTitle(); $view->nodes = $nodes; return $view; }
/** * Fetches the standard page view for a widget. * * @param bool $skip_errors - If using a collection, omit widgets that throw errors * @return vBCms_View_Widget - The resolved view, or array of views */ public function getPageView() { $this->assertWidget(); $config = $this->widget->getConfig(); if (!isset($config['template_name']) OR ($config['template_name'] == '') ) { $config['template_name'] = 'vbcms_widget_categorynav_page'; } // Create view $view = new vBCms_View_Widget($config['template_name']); $this->sectionid = $this->content->getContentTypeId() == vb_Types::instance()->getContentTypeID("vBCms_Section") ? $this->content->getNodeId() : $this->content->getParentId(); try { $categoryid = max(1, intval(vB_Router::getSegment('value'))); } catch (vB_Exception_Router $e) { $categoryid = 0; } $nodes = vBCms_ContentManager::getAllCategories(); ksort($nodes); foreach ($nodes as $nodeid => $record) { $route = vB_Route::create('vBCms_Route_List', "category/" . $record['route_info'] . "/1")->getCurrentURL(); $nodes[$nodeid]['view_url'] = $route; } // Modify $nodes to add myself var (currently selected category) $view->widget_title = $this->widget->getTitle(); $view->nodes = $nodes; return $view; }