r20160204
This commit is contained in:
parent
38ddeb2a52
commit
7bf64954ec
23 changed files with 537 additions and 728 deletions
|
@ -1,65 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Holds the forum pages controllers.
|
||||
*
|
||||
* @package Sakura
|
||||
*/
|
||||
|
||||
namespace Sakura\Controllers;
|
||||
|
||||
use Sakura\Config;
|
||||
use Sakura\Database;
|
||||
use Sakura\Forum as ForumData;
|
||||
use Sakura\Perms\Forum as ForumPerms;
|
||||
use Sakura\Template;
|
||||
use Sakura\User;
|
||||
use Sakura\Users;
|
||||
use Sakura\Utils;
|
||||
|
||||
/**
|
||||
* Forum page controllers.
|
||||
*
|
||||
* @package Sakura
|
||||
* @author Julian van de Groep <me@flash.moe>
|
||||
*/
|
||||
class Forum
|
||||
{
|
||||
/**
|
||||
* Serves the forum index.
|
||||
*
|
||||
* @return mixed HTML for the forum index.
|
||||
*/
|
||||
public static function index()
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Merge index specific stuff with the global render data
|
||||
$renderData = array_merge(
|
||||
$renderData,
|
||||
[
|
||||
'forum' => (new ForumData\Forum()),
|
||||
'stats' => [
|
||||
'userCount' => Database::count('users', ['password_algo' => ['nologin', '!='], 'rank_main' => ['1', '!=']])[0],
|
||||
'newestUser' => User::construct(Users::getNewestUserId()),
|
||||
'lastRegData' => date_diff(
|
||||
date_create(date('Y-m-d', User::construct(Users::getNewestUserId())->registered)),
|
||||
date_create(date('Y-m-d'))
|
||||
)->format('%a'),
|
||||
'topicCount' => Database::count('topics')[0],
|
||||
'postCount' => Database::count('posts')[0],
|
||||
'onlineUsers' => Users::checkAllOnline(),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Return the compiled page
|
||||
return $template->render('forum/index');
|
||||
}
|
||||
}
|
134
libraries/Controllers/Forums.php
Normal file
134
libraries/Controllers/Forums.php
Normal file
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
/**
|
||||
* Holds the forum pages controllers.
|
||||
*
|
||||
* @package Sakura
|
||||
*/
|
||||
|
||||
namespace Sakura\Controllers;
|
||||
|
||||
use Sakura\Config;
|
||||
use Sakura\Database;
|
||||
use Sakura\Forum;
|
||||
use Sakura\Perms\Forum as ForumPerms;
|
||||
use Sakura\Template;
|
||||
use Sakura\User;
|
||||
use Sakura\Users;
|
||||
use Sakura\Utils;
|
||||
|
||||
/**
|
||||
* Forum page controllers.
|
||||
*
|
||||
* @package Sakura
|
||||
* @author Julian van de Groep <me@flash.moe>
|
||||
*/
|
||||
class Forums
|
||||
{
|
||||
/**
|
||||
* Serves the forum index.
|
||||
*
|
||||
* @return mixed HTML for the forum index.
|
||||
*/
|
||||
public static function index()
|
||||
{
|
||||
// Merge index specific stuff with the global render data
|
||||
Template::vars([
|
||||
'forum' => (new Forum\Forum()),
|
||||
'stats' => [
|
||||
'userCount' => Database::count('users', ['password_algo' => ['nologin', '!='], 'rank_main' => ['1', '!=']])[0],
|
||||
'newestUser' => User::construct(Users::getNewestUserId()),
|
||||
'lastRegData' => date_diff(
|
||||
date_create(date('Y-m-d', User::construct(Users::getNewestUserId())->registered)),
|
||||
date_create(date('Y-m-d'))
|
||||
)->format('%a'),
|
||||
'topicCount' => Database::count('topics')[0],
|
||||
'postCount' => Database::count('posts')[0],
|
||||
'onlineUsers' => Users::checkAllOnline(),
|
||||
],
|
||||
]);
|
||||
|
||||
// Return the compiled page
|
||||
return Template::render('forum/index');
|
||||
}
|
||||
|
||||
public static function forum($id = 0)
|
||||
{
|
||||
global $currentUser;
|
||||
|
||||
// Get the forum
|
||||
$forum = new Forum\Forum($id);
|
||||
|
||||
// Redirect forum id 0 to the main page
|
||||
if ($forum->id === 0) {
|
||||
header('Location: ' . (new \Sakura\Urls)->format('FORUM_INDEX'));
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if the forum exists
|
||||
if ($forum->id < 0) {
|
||||
// Set render data
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => 'The forum you tried to access does not exist.',
|
||||
],
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
|
||||
// Check if the user has access to the forum
|
||||
if (!$forum->permission(ForumPerms::VIEW, $currentUser->id)) {
|
||||
// Set render data
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => 'You do not have access to this forum.',
|
||||
],
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
|
||||
// Check if the forum isn't a link
|
||||
if ($forum->type === 2) {
|
||||
// Set render data
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => 'The forum you tried to access is a link. You\'re being redirected.',
|
||||
'redirect' => $forum->link,
|
||||
]
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
|
||||
// Check if we're marking as read
|
||||
if (isset($_GET['read']) && $_GET['read'] && isset($_GET['session']) && $_GET['session'] == session_id()) {
|
||||
// Run the function
|
||||
$forum->trackUpdateAll($currentUser->id);
|
||||
|
||||
// Set render data
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => 'All threads have been marked as read.',
|
||||
'redirect' => (new \Sakura\Urls)->format('FORUM_SUB', [$forum->id]),
|
||||
]
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
|
||||
$renderData['forum'] = $forum;
|
||||
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'forum' => $forum,
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('forum/viewforum');
|
||||
}
|
||||
}
|
|
@ -30,16 +30,8 @@ class Meta
|
|||
*/
|
||||
public static function index()
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Merge index specific stuff with the global render data
|
||||
$renderData = array_merge(
|
||||
$renderData,
|
||||
[
|
||||
Template::vars([
|
||||
'news' => new News(Config::get('site_news_category')),
|
||||
'newsCount' => Config::get('front_page_news_posts'),
|
||||
'stats' => [
|
||||
|
@ -53,14 +45,10 @@ class Meta
|
|||
'postCount' => Database::count('posts')[0],
|
||||
'onlineUsers' => Users::checkAllOnline(),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
]);
|
||||
|
||||
// Return the compiled page
|
||||
return $template->render('main/index');
|
||||
return Template::render('main/index');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,9 +58,6 @@ class Meta
|
|||
*/
|
||||
public static function news()
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Get arguments
|
||||
$args = func_get_args();
|
||||
$category = isset($args[0]) && !is_numeric($args[0]) ? $args[0] : Config::get('site_news_category');
|
||||
|
@ -83,22 +68,16 @@ class Meta
|
|||
// Create news object
|
||||
$news = new News($category);
|
||||
|
||||
// Merge the data for this page with the global
|
||||
$renderData = array_merge($renderData, [
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'news' => $news,
|
||||
'postsPerPage' => Config::get('news_posts_per_page'),
|
||||
'viewPost' => $post != 0,
|
||||
'postExists' => $news->postExists($post),
|
||||
]);
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
return $template->render('main/news');
|
||||
return Template::render('main/news');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -108,23 +87,16 @@ class Meta
|
|||
*/
|
||||
public static function faq()
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Add page specific things
|
||||
$renderData['page'] = [
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'title' => 'Frequently Asked Questions',
|
||||
'questions' => Utils::getFaqData(),
|
||||
];
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
],
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return $template->render('main/faq');
|
||||
return Template::render('main/faq');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -136,12 +108,6 @@ class Meta
|
|||
*/
|
||||
public static function infoPage($id = null)
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Set default variables
|
||||
$renderData['page'] = [
|
||||
'content' => '<h1>Unable to load the requested info page.</h1><p>Check the URL and try again.</p>',
|
||||
|
@ -161,10 +127,10 @@ class Meta
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Return the compiled page
|
||||
return $template->render('main/infopage');
|
||||
return Template::render('main/infopage');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -174,21 +140,14 @@ class Meta
|
|||
*/
|
||||
public static function search()
|
||||
{
|
||||
// Get the global renderData
|
||||
global $renderData;
|
||||
|
||||
// Add page specific things
|
||||
$renderData['page'] = [
|
||||
'title' => 'Search',
|
||||
];
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'title' => 'Search',
|
||||
],
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return $template->render('main/search');
|
||||
return Template::render('main/search');
|
||||
}
|
||||
}
|
||||
|
|
110
libraries/Controllers/User.php
Normal file
110
libraries/Controllers/User.php
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
/**
|
||||
* Holds the user page controllers.
|
||||
*
|
||||
* @package Sakura
|
||||
*/
|
||||
|
||||
namespace Sakura\Controllers;
|
||||
|
||||
use Sakura\Config;
|
||||
use Sakura\Database;
|
||||
use Sakura\Template;
|
||||
use Sakura\User as UserContext;
|
||||
use Sakura\Utils;
|
||||
|
||||
/**
|
||||
* Everything that is just for serving user data.
|
||||
*
|
||||
* @package Sakura
|
||||
* @author Julian van de Groep <me@flash.moe>
|
||||
*/
|
||||
class User
|
||||
{
|
||||
/**
|
||||
* Display the profile of a user
|
||||
*
|
||||
* @param mixed $id The user ID.
|
||||
*
|
||||
* @return bool|string The profile page.
|
||||
*/
|
||||
public static function profile($id = 0)
|
||||
{
|
||||
global $currentUser;
|
||||
|
||||
// Get the user's context
|
||||
$profile = UserContext::construct($id);
|
||||
|
||||
// If the user id is zero check if there was a namechange
|
||||
if ($profile->id == 0) {
|
||||
// Fetch from username_history
|
||||
$check = Database::fetch('username_history', false, ['username_old_clean' => [Utils::cleanString(isset($_GET['u']) ? $_GET['u'] : 0, true, true), '=']]);
|
||||
|
||||
// Redirect if so
|
||||
if ($check) {
|
||||
Template::vars([
|
||||
'message' => 'The user this profile belongs to changed their username, you are being redirected.',
|
||||
'redirect' => (new \Sakura\Urls)->format('USER_PROFILE', [$check['user_id']]),
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we're trying to restrict
|
||||
if (isset($_GET['restrict']) && $_GET['restrict'] == session_id() && $currentUser->permission(\Sakura\Perms\Manage::CAN_RESTRICT_USERS, \Sakura\Perms::MANAGE)) {
|
||||
// Check restricted status
|
||||
$restricted = $profile->permission(\Sakura\Perms\Site::RESTRICTED);
|
||||
|
||||
if ($restricted) {
|
||||
$profile->removeRanks([Config::get('restricted_rank_id')]);
|
||||
$profile->addRanks([2]);
|
||||
} else {
|
||||
$profile->addRanks([Config::get('restricted_rank_id')]);
|
||||
$profile->removeRanks(array_keys($profile->ranks));
|
||||
}
|
||||
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => 'Toggled the restricted status of the user.',
|
||||
'redirect' => (new \Sakura\Urls)->format('USER_PROFILE', [$profile->id]),
|
||||
],
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('global/information');
|
||||
}
|
||||
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'profile' => $profile,
|
||||
]);
|
||||
|
||||
// Print page contents
|
||||
return Template::render('main/profile');
|
||||
}
|
||||
|
||||
public static function members($rank = 0)
|
||||
{
|
||||
global $currentUser;
|
||||
|
||||
// Check permission
|
||||
if (!$currentUser->permission(\Sakura\Perms\Site::VIEW_MEMBERLIST)) {
|
||||
return Template::render('global/restricted');
|
||||
}
|
||||
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'memberlist' => [
|
||||
'ranks' => ($_MEMBERLIST_RANKS = \Sakura\Users::getAllRanks()),
|
||||
'active' => ($_MEMBERLIST_ACTIVE = (array_key_exists($rank, $_MEMBERLIST_RANKS) ? $rank : 0)),
|
||||
'users' => ($_MEMBERLIST_ACTIVE ? \Sakura\Users::getUsersInRank($_MEMBERLIST_ACTIVE) : \Sakura\Users::getAllUsers(false)),
|
||||
'membersPerPage' => Config::get('members_per_page'),
|
||||
]
|
||||
]);
|
||||
|
||||
// Render the template
|
||||
return Template::render('main/memberlist');
|
||||
}
|
||||
}
|
|
@ -7,8 +7,10 @@
|
|||
|
||||
namespace Sakura;
|
||||
|
||||
use Phroute\Phroute\RouteCollector;
|
||||
use Phroute\Phroute\Dispatcher;
|
||||
use Phroute\Phroute\Exception\HttpRouteNotFoundException;
|
||||
use Phroute\Phroute\Exception\HttpMethodNotAllowedException;
|
||||
use Phroute\Phroute\RouteCollector;
|
||||
|
||||
/**
|
||||
* Sakura Wrapper for Phroute.
|
||||
|
@ -108,6 +110,19 @@ class Router
|
|||
return parse_url($url, PHP_URL_PATH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the URI of a route using names.
|
||||
*
|
||||
* @param string $name The identifier of the route.
|
||||
* @param string|array $args The route arguments.
|
||||
*
|
||||
* @return string The generated URI.
|
||||
*/
|
||||
public static function url($name, $args = null)
|
||||
{
|
||||
return self::$router->route($name, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle requests.
|
||||
*
|
||||
|
@ -127,6 +142,13 @@ class Router
|
|||
$url = self::parseUrl($url);
|
||||
|
||||
// Handle the request
|
||||
try {
|
||||
try {
|
||||
return self::$dispatcher->dispatch($method, $url);
|
||||
} catch (HttpMethodNotAllowedException $e) {}
|
||||
} catch (HttpRouteNotFoundException $e) {}
|
||||
|
||||
// Default to the not found page
|
||||
return Template::render('global/notfound');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,51 +24,40 @@ class Template
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
private $vars = [];
|
||||
private static $vars = [];
|
||||
|
||||
/**
|
||||
* The templating engine.
|
||||
*
|
||||
* @var Twig_Environment
|
||||
*/
|
||||
private $template;
|
||||
private static $template;
|
||||
|
||||
/**
|
||||
* The template name.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $templateName;
|
||||
private static $templateName;
|
||||
|
||||
/**
|
||||
* The template options.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $templateOptions;
|
||||
private static $templateOptions;
|
||||
|
||||
/**
|
||||
* The file extension used by template files
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $templateFileExtension = ".twig";
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Set template to default
|
||||
$this->setTemplate(Config::get('site_style'));
|
||||
}
|
||||
const FILE_EXT = '.twig';
|
||||
|
||||
/**
|
||||
* Set the template name.
|
||||
*
|
||||
* @param string $name The name of the template directory.
|
||||
*/
|
||||
public function setTemplate($name)
|
||||
public static function set($name)
|
||||
{
|
||||
// Assign config path to a variable so we don't have to type it out twice
|
||||
$confPath = ROOT . 'templates/' . $name . '/template.ini';
|
||||
|
@ -79,22 +68,22 @@ class Template
|
|||
}
|
||||
|
||||
// Parse and store the configuration
|
||||
$this->templateOptions = parse_ini_file($confPath, true);
|
||||
self::$templateOptions = parse_ini_file($confPath, true);
|
||||
|
||||
// Set variables
|
||||
$this->templateName = $name;
|
||||
self::$templateName = $name;
|
||||
|
||||
// Reinitialise
|
||||
$this->initTemplate();
|
||||
self::init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialise the templating engine.
|
||||
*/
|
||||
public function initTemplate()
|
||||
public static function init()
|
||||
{
|
||||
// Initialise Twig Filesystem Loader
|
||||
$twigLoader = new Twig_Loader_Filesystem(ROOT . 'templates/' . $this->templateName);
|
||||
$twigLoader = new Twig_Loader_Filesystem(ROOT . 'templates/' . self::$templateName);
|
||||
|
||||
// Environment variable
|
||||
$twigEnv = [];
|
||||
|
@ -105,10 +94,10 @@ class Template
|
|||
}
|
||||
|
||||
// And now actually initialise the templating engine
|
||||
$this->template = new Twig_Environment($twigLoader, $twigEnv);
|
||||
self::$template = new Twig_Environment($twigLoader, $twigEnv);
|
||||
|
||||
// Load String template loader
|
||||
$this->template->addExtension(new Twig_Extension_StringLoader());
|
||||
self::$template->addExtension(new Twig_Extension_StringLoader());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -116,9 +105,9 @@ class Template
|
|||
*
|
||||
* @param array $vars The new variables.
|
||||
*/
|
||||
public function setVariables($vars)
|
||||
public static function vars($vars)
|
||||
{
|
||||
$this->vars = array_merge($this->vars, $vars);
|
||||
self::$vars = array_merge(self::$vars, $vars);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -128,10 +117,10 @@ class Template
|
|||
*
|
||||
* @return bool|string An error or the HTML.
|
||||
*/
|
||||
public function render($file)
|
||||
public static function render($file)
|
||||
{
|
||||
try {
|
||||
return $this->template->render($file . $this->templateFileExtension, $this->vars);
|
||||
return self::$template->render($file . self::FILE_EXT, self::$vars);
|
||||
} catch (\Exception $e) {
|
||||
return trigger_error($e->getMessage(), E_USER_ERROR);
|
||||
}
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Flashii.net Main Index
|
||||
*/
|
||||
|
||||
// Declare Namespace
|
||||
namespace Sakura;
|
||||
|
||||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Set 404 header
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/notfound');
|
|
@ -9,12 +9,6 @@ namespace Sakura;
|
|||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Page actions
|
||||
if (isset($_REQUEST['mode'])) {
|
||||
// Continue
|
||||
|
@ -108,7 +102,6 @@ if (isset($_REQUEST['mode'])) {
|
|||
|
||||
// Add page specific things
|
||||
$renderData['page'] = [
|
||||
|
||||
'redirect' => (
|
||||
$passforget[0] ?
|
||||
$urls->format('SITE_LOGIN') :
|
||||
|
@ -116,7 +109,6 @@ if (isset($_REQUEST['mode'])) {
|
|||
),
|
||||
'message' => $messages[$passforget[1]],
|
||||
'success' => $passforget[0],
|
||||
|
||||
];
|
||||
break;
|
||||
|
||||
|
@ -289,8 +281,8 @@ if (isset($_REQUEST['mode'])) {
|
|||
$renderData['page']['success'] . '|' .
|
||||
$renderData['page']['redirect'];
|
||||
} else {
|
||||
$template->setVariables($renderData);
|
||||
echo $template->render('global/information');
|
||||
Template::vars($renderData);
|
||||
echo Template::render('global/information');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
@ -317,8 +309,8 @@ if (Users::checkLogin()) {
|
|||
|
||||
];
|
||||
|
||||
$template->setVariables($renderData);
|
||||
echo $template->render('global/information');
|
||||
Template::vars($renderData);
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -341,11 +333,11 @@ if (isset($_REQUEST['pw']) && $_REQUEST['pw']) {
|
|||
$renderData['auth']['forgotKey'] = $_REQUEST['key'];
|
||||
}
|
||||
|
||||
$template->setVariables($renderData);
|
||||
echo $template->render('main/forgotpassword');
|
||||
Template::vars($renderData);
|
||||
echo Template::render('main/forgotpassword');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Print page contents
|
||||
$template->setVariables($renderData);
|
||||
echo $template->render('main/authenticate');
|
||||
Template::vars($renderData);
|
||||
echo Template::render('main/authenticate');
|
||||
|
|
|
@ -15,19 +15,13 @@ define('SAKURA_MANAGE', true);
|
|||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Make sure user has the permissions to view this
|
||||
if (!$currentUser->permission(Manage::USE_MANAGE, Perms::MANAGE)) {
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/restricted');
|
||||
echo Template::render('global/restricted');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -268,10 +262,10 @@ if (!$category
|
|||
header('HTTP/1.0 404 Not Found');
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/notfound');
|
||||
echo Template::render('global/notfound');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -313,7 +307,7 @@ switch ($category . '.' . $mode) {
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/settings');
|
||||
echo Template::render('main/settings');
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Sakura Memberlist
|
||||
*/
|
||||
|
||||
// Declare Namespace
|
||||
namespace Sakura;
|
||||
|
||||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// CHeck if the user is logged in
|
||||
if (Users::checkLogin()) {
|
||||
// Add page specific things
|
||||
$renderData['memberlist'] = [
|
||||
'ranks' => ($_MEMBERLIST_RANKS = Users::getAllRanks()),
|
||||
'active' => ($_MEMBERLIST_ACTIVE = (
|
||||
isset($_GET['rank'])
|
||||
&& $_GET['rank']
|
||||
&& array_key_exists($_GET['rank'], $_MEMBERLIST_RANKS) ? $_GET['rank'] : 0
|
||||
)),
|
||||
'users' => ($_MEMBERLIST_ACTIVE ? Users::getUsersInRank($_MEMBERLIST_ACTIVE) : Users::getAllUsers(false)),
|
||||
'membersPerPage' => Config::get('members_per_page'),
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/memberlist');
|
||||
} else {
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/restricted');
|
||||
}
|
|
@ -12,12 +12,6 @@ use Sakura\Perms\Forum as ForumPerms;
|
|||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Set location
|
||||
$topicId = isset($_GET['t']) ?
|
||||
$_GET['t'] :
|
||||
|
@ -48,10 +42,10 @@ if (!$forum->permission(ForumPerms::VIEW, $currentUser->id) || !$forum->permissi
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -64,10 +58,10 @@ if (!isset($thread) && !$forum->permission(ForumPerms::CREATE_THREADS, $currentU
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -92,10 +86,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -108,10 +102,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -134,10 +128,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
// Checks
|
||||
|
@ -149,10 +143,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -176,10 +170,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -192,10 +186,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -225,10 +219,10 @@ if ($mode != 'f') {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
// Return to previous page
|
||||
} else {
|
||||
|
@ -246,10 +240,10 @@ if ($mode != 'f') {
|
|||
]);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/confirm');
|
||||
echo Template::render('global/confirm');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -296,10 +290,10 @@ if (isset($_POST['post'])) {
|
|||
$renderData['page']['redirect'];
|
||||
} else {
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
@ -310,7 +304,7 @@ $renderData = array_merge($renderData, [
|
|||
]);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('forum/posting');
|
||||
echo Template::render('forum/posting');
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Sakura User Profiles
|
||||
*/
|
||||
|
||||
// Declare Namespace
|
||||
namespace Sakura;
|
||||
|
||||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Get the user's context
|
||||
$profile = User::construct(isset($_GET['u']) ? $_GET['u'] : 0);
|
||||
|
||||
// Views array
|
||||
$views = [
|
||||
'index',
|
||||
'friends',
|
||||
//'threads',
|
||||
//'posts',
|
||||
'comments',
|
||||
//'groups',
|
||||
];
|
||||
|
||||
// Assign the object to a renderData variable
|
||||
$renderData['profile'] = $profile;
|
||||
$renderData['profileView'] = isset($_GET['view']) && in_array($_GET['view'], $views) ? $_GET['view'] : $views[0];
|
||||
|
||||
// If the user id is zero check if there was a namechange
|
||||
if ($profile->id == 0) {
|
||||
// Fetch from username_history
|
||||
$check = Database::fetch('username_history', false, ['username_old_clean' => [Utils::cleanString(isset($_GET['u']) ? $_GET['u'] : 0, true, true), '=']]);
|
||||
|
||||
// Redirect if so
|
||||
if ($check) {
|
||||
$renderData['page'] = [
|
||||
'message' => 'The user this profile belongs to changed their username, you are being redirected.',
|
||||
'redirect' => $urls->format('USER_PROFILE', [$check['user_id']]),
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// If the user id is zero check if there was a namechange
|
||||
if (isset($_GET['restrict']) && $_GET['restrict'] == session_id() && $currentUser->permission(Perms\Manage::CAN_RESTRICT_USERS, Perms::MANAGE)) {
|
||||
// Check restricted status
|
||||
$restricted = $profile->permission(Perms\Site::RESTRICTED);
|
||||
|
||||
if ($restricted) {
|
||||
$profile->removeRanks([Config::get('restricted_rank_id')]);
|
||||
$profile->addRanks([2]);
|
||||
} else {
|
||||
$profile->addRanks([Config::get('restricted_rank_id')]);
|
||||
$profile->removeRanks(array_keys($profile->ranks));
|
||||
}
|
||||
|
||||
$renderData['page'] = [
|
||||
'message' => 'Toggled the restricted status of the user.',
|
||||
'redirect' => $urls->format('USER_PROFILE', [$profile->id]),
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/profile');
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Sakura Reporting
|
||||
*/
|
||||
|
||||
// Declare Namespace
|
||||
namespace Sakura;
|
||||
|
||||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/report');
|
|
@ -16,14 +16,6 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
|
|||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
if (!defined('SAKURA_NO_TPL')) {
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
}
|
||||
|
||||
// Notifications
|
||||
if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications']) {
|
||||
// Create the notification container array
|
||||
|
@ -275,10 +267,10 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
|
|||
$renderData['page']['redirect'];
|
||||
} else {
|
||||
// If not allowed print the restricted page
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
}
|
||||
exit;
|
||||
} elseif (isset($_REQUEST['friend-action']) && $_REQUEST['friend-action'] && Users::checkLogin()) {
|
||||
|
@ -404,10 +396,10 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
|
|||
$renderData['page']['redirect'];
|
||||
} else {
|
||||
// If not allowed print the restricted page
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
}
|
||||
exit;
|
||||
} elseif (isset($_POST['submit']) && isset($_POST['submit'])) {
|
||||
|
@ -1158,10 +1150,10 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
|
|||
$renderData['page']['redirect'];
|
||||
} else {
|
||||
// If not allowed print the restricted page
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
@ -1429,10 +1421,10 @@ if (Users::checkLogin()) {
|
|||
header('HTTP/1.0 404 Not Found');
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/notfound');
|
||||
echo Template::render('global/notfound');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -1518,14 +1510,14 @@ if (Users::checkLogin()) {
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/settings');
|
||||
echo Template::render('main/settings');
|
||||
} else {
|
||||
// If not allowed print the restricted page
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/restricted');
|
||||
echo Template::render('global/restricted');
|
||||
}
|
||||
|
|
|
@ -11,12 +11,6 @@ use Sakura\Perms\Site;
|
|||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Switch between modes (we only allow this to be used by logged in user)
|
||||
if (isset($_REQUEST['mode'])
|
||||
&& Users::checkLogin()
|
||||
|
@ -126,10 +120,10 @@ if (isset($_REQUEST['mode'])
|
|||
], $renderData);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/premiumcomplete');
|
||||
echo Template::render('main/premiumcomplete');
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -147,10 +141,10 @@ if (isset($_GET['tracker'])) {
|
|||
$renderData['tracker'] = Utils::getPremiumTrackerData();
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/supporttracker');
|
||||
echo Template::render('main/supporttracker');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -165,7 +159,7 @@ $renderData['page'] = [
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/support');
|
||||
echo Template::render('main/support');
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Sakura Forum List Viewer
|
||||
*/
|
||||
|
||||
// Declare Namespace
|
||||
namespace Sakura;
|
||||
|
||||
use Sakura\Perms\Forum as ForumPerms;
|
||||
|
||||
// Include components
|
||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||
|
||||
// Get the forum's data
|
||||
$forum = new Forum\Forum(isset($_GET['f']) ? $_GET['f'] : -1);
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Check if the forum exists
|
||||
if ($forum->id < 0) {
|
||||
// Set render data
|
||||
$renderData['page'] = [
|
||||
'title' => 'Information',
|
||||
'message' => 'The forum you tried to access does not exist.',
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if the user has access to the forum
|
||||
if (!$forum->permission(ForumPerms::VIEW, $currentUser->id)) {
|
||||
// Set render data
|
||||
$renderData['page'] = [
|
||||
'title' => 'Information',
|
||||
'message' => 'You do not have access to this forum.',
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if the forum isn't a link
|
||||
if ($forum->type === 2) {
|
||||
// Set render data
|
||||
$renderData['page'] = [
|
||||
'title' => 'Information',
|
||||
'message' => 'The forum you tried to access is a link. You\'re being redirected.',
|
||||
'redirect' => $forum->link,
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if we're marking as read
|
||||
if (isset($_GET['read']) && $_GET['read'] && isset($_GET['session']) && $_GET['session'] == session_id()) {
|
||||
// Run the function
|
||||
$forum->trackUpdateAll($currentUser->id);
|
||||
|
||||
// Set render data
|
||||
$renderData['page'] = [
|
||||
'title' => 'Information',
|
||||
'message' => 'All threads have been marked as read.',
|
||||
'redirect' => $urls->format('FORUM_SUB', [$forum->id]),
|
||||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Redirect forum id 0 to the main page
|
||||
if ($forum->id === 0) {
|
||||
header('Location: ' . $urls->format('FORUM_INDEX'));
|
||||
exit;
|
||||
}
|
||||
|
||||
$renderData['forum'] = $forum;
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('forum/viewforum');
|
|
@ -21,12 +21,6 @@ $thread = new Forum\Thread(
|
|||
// And attempt to get the forum
|
||||
$forum = new Forum\Forum($thread->forum);
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Check if the forum exists
|
||||
if (!$thread) {
|
||||
// Set render data
|
||||
|
@ -36,10 +30,10 @@ if (!$thread) {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -52,10 +46,10 @@ if (!$forum->permission(ForumPerms::VIEW, $currentUser->id)) {
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -78,10 +72,10 @@ if (isset($_GET['sticky']) && $_GET['sticky'] == session_id() && $forum->permiss
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -103,10 +97,10 @@ if (isset($_GET['announce']) && $_GET['announce'] == session_id() && $forum->per
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -128,10 +122,10 @@ if (isset($_GET['lock']) && $_GET['lock'] == session_id() && $forum->permission(
|
|||
];
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -155,10 +149,10 @@ if (isset($_GET['trash']) && $_GET['trash'] == session_id() && $forum->permissio
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -183,10 +177,10 @@ if (isset($_GET['restore']) && $_GET['restore'] == session_id() && $forum->permi
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -210,10 +204,10 @@ if (isset($_GET['prune']) && $_GET['prune'] == session_id() && $forum->permissio
|
|||
}
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -230,7 +224,7 @@ $renderData = array_merge($renderData, [
|
|||
]);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
Template::vars($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('forum/viewtopic');
|
||||
echo Template::render('forum/viewtopic');
|
||||
|
|
55
routes.php
55
routes.php
|
@ -18,7 +18,15 @@ Router::get('/news/{category}', 'Sakura\Controllers\Meta@news', 'news.category')
|
|||
Router::get('/news/{category}/{id}', 'Sakura\Controllers\Meta@news', 'news.post');
|
||||
|
||||
// Forum
|
||||
Router::get('/forum', 'Sakura\Controllers\Forum@index', 'forum.index');
|
||||
Router::get('/forum', 'Sakura\Controllers\Forums@index', 'forums.index');
|
||||
Router::get('/forum/{id}', 'Sakura\Controllers\Forums@forum', 'forums.forum');
|
||||
|
||||
// Members
|
||||
Router::get('/members', 'Sakura\Controllers\User@members', 'members.all');
|
||||
Router::get('/members/{rank}', 'Sakura\Controllers\User@members', 'members.rank');
|
||||
|
||||
// User
|
||||
Router::get('/u/{id}', 'Sakura\Controllers\User@profile', 'user.profile');
|
||||
|
||||
// Redirections
|
||||
Router::any('/index.php', function () {
|
||||
|
@ -61,6 +69,51 @@ Router::any('/news.php', function () {
|
|||
header('Location: /news');
|
||||
});
|
||||
|
||||
Router::any('/profile.php', function () {
|
||||
// Redirect to the profile
|
||||
if (isset($_REQUEST['u'])) {
|
||||
header('Location: /u/' . $_REQUEST['u']);
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect to index
|
||||
header('Location: /');
|
||||
});
|
||||
|
||||
Router::any('/members.php', function () {
|
||||
// Append sort
|
||||
$append = isset($_REQUEST['sort']) ? '?sort=' . $_REQUEST['sort'] : '';
|
||||
|
||||
// Redirect to the profile
|
||||
if (isset($_REQUEST['rank'])) {
|
||||
header('Location: /members/' . $_REQUEST['rank'] . $append);
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect to index
|
||||
header('Location: /members/' . $append);
|
||||
});
|
||||
|
||||
Router::any('/viewforum.php', function () {
|
||||
// Redirect to the profile
|
||||
if (isset($_REQUEST['f'])) {
|
||||
$req = [];
|
||||
foreach ($_REQUEST as $k => $v) {
|
||||
if ($k == 'f') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$req[] = $k . '=' . $v;
|
||||
}
|
||||
|
||||
header('Location: /forum/' . $_REQUEST['f'] . ($req ? '?' . implode('&', $req) : ''));
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect to index
|
||||
header('Location: /forum/');
|
||||
});
|
||||
|
||||
Router::any('/faq.php', function () {
|
||||
header('Location: /faq');
|
||||
});
|
||||
|
|
39
sakura.php
39
sakura.php
|
@ -8,7 +8,7 @@
|
|||
namespace Sakura;
|
||||
|
||||
// Define Sakura version
|
||||
define('SAKURA_VERSION', '20160202');
|
||||
define('SAKURA_VERSION', '20160204');
|
||||
define('SAKURA_VLABEL', 'Amethyst');
|
||||
define('SAKURA_COLOUR', '#9966CC');
|
||||
|
||||
|
@ -59,8 +59,9 @@ require_once ROOT . 'libraries/Users.php';
|
|||
require_once ROOT . 'libraries/Utils.php';
|
||||
require_once ROOT . 'libraries/Whois.php';
|
||||
require_once ROOT . 'libraries/Console/Application.php';
|
||||
require_once ROOT . 'libraries/Controllers/Forum.php';
|
||||
require_once ROOT . 'libraries/Controllers/Forums.php';
|
||||
require_once ROOT . 'libraries/Controllers/Meta.php';
|
||||
require_once ROOT . 'libraries/Controllers/User.php';
|
||||
require_once ROOT . 'libraries/Forum/Forum.php';
|
||||
require_once ROOT . 'libraries/Forum/Post.php';
|
||||
require_once ROOT . 'libraries/Forum/Thread.php';
|
||||
|
@ -140,6 +141,9 @@ $templateName =
|
|||
'misaki' : Config::get('site_style');
|
||||
|
||||
if (!defined('SAKURA_NO_TPL')) {
|
||||
// Start templating engine
|
||||
Template::set($templateName);
|
||||
|
||||
// Set base page rendering data
|
||||
$renderData = [
|
||||
'sakura' => [
|
||||
|
@ -202,33 +206,27 @@ if (!defined('SAKURA_NO_TPL')) {
|
|||
'post' => $_POST,
|
||||
];
|
||||
|
||||
// Add the default render data
|
||||
Template::vars($renderData);
|
||||
|
||||
// Site closing
|
||||
if (Config::get('site_closed')) {
|
||||
// Additional render data
|
||||
$renderData = array_merge($renderData, [
|
||||
// Set parse variables
|
||||
Template::vars([
|
||||
'page' => [
|
||||
'message' => Config::get('site_closed_reason'),
|
||||
],
|
||||
]);
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('global/information');
|
||||
echo Template::render('global/information');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Ban checking
|
||||
if ($authCheck && !in_array($_SERVER['PHP_SELF'], [$urls->format('AUTH_ACTION', [], false)]) && $ban = Bans::checkBan($currentUser->id)) {
|
||||
// Additional render data
|
||||
$renderData = array_merge($renderData, [
|
||||
Template::vars([
|
||||
'ban' => [
|
||||
'reason' => $ban['reason'],
|
||||
'issued' => $ban['issued'],
|
||||
|
@ -237,17 +235,8 @@ if (!defined('SAKURA_NO_TPL')) {
|
|||
],
|
||||
]);
|
||||
|
||||
// Initialise templating engine
|
||||
$template = new Template();
|
||||
|
||||
// Change templating engine
|
||||
$template->setTemplate($templateName);
|
||||
|
||||
// Set parse variables
|
||||
$template->setVariables($renderData);
|
||||
|
||||
// Print page contents
|
||||
echo $template->render('main/banned');
|
||||
echo Template::render('main/banned');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,13 @@
|
|||
* mod_rewrite emulator for php's build in server
|
||||
*/
|
||||
|
||||
// Decode and parse the request uri
|
||||
$uri = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
|
||||
|
||||
// Check if the file exist in the public directory and if it does serve it.
|
||||
if ($uri !== '/' && file_exists(__DIR__ . '/public' . $uri)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Otherwise include the router
|
||||
require_once __DIR__ . '/public/index.php';
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% set forumMarkRead %}{{ urls.format('FORUM_MARK_READ', [forum.id, php.sessionid]) }}{% endset %}
|
||||
|
||||
{% block content %}
|
||||
<div class="content homepage forum">
|
||||
<div class="content-right content-column">
|
||||
|
@ -13,7 +11,6 @@
|
|||
</div>
|
||||
<div class="content-left content-column">
|
||||
{% include 'forum/forum.twig' %}
|
||||
{% include 'forum/forumBtns.twig' %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
|
|
@ -8,6 +8,55 @@
|
|||
|
||||
{% block title %}{% if profileHidden %}User not found!{% else %}Profile of {{ profile.username }}{% endif %}{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
window.addEventListener('load', function () {
|
||||
// Check if location.hash is set
|
||||
if (location.hash) {
|
||||
var open = location.hash.slice(2);
|
||||
|
||||
// Check if the element exists
|
||||
if (document.getElementById('profile-mode-' + open)) {
|
||||
profileMode(open);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var profileUserpage = document.getElementById('profile-mode-userpage');
|
||||
|
||||
// Check if the user page has contents
|
||||
if (profileUserpage.children[0].innerHTML.trim().length) {
|
||||
profileMode('userpage');
|
||||
} else {
|
||||
profileMode('comments');
|
||||
}
|
||||
});
|
||||
|
||||
// Switch to a different mode
|
||||
function profileMode(id) {
|
||||
// Get other active modes and fetch the new element
|
||||
var current = document.getElementsByClassName('profile-mode-current'),
|
||||
newMode = document.getElementById('profile-mode-' + id);
|
||||
|
||||
// Check if the new mode exists
|
||||
if (typeof newMode == 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if there's any active
|
||||
if (current) {
|
||||
// Hide them all
|
||||
for (i in current) {
|
||||
current[i].className = 'hidden';
|
||||
}
|
||||
}
|
||||
|
||||
// Set the new to active
|
||||
newMode.className = 'profile-mode-current';
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if profileHidden %}
|
||||
<div class="content standalone">
|
||||
|
@ -22,133 +71,6 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% elseif get.old %}
|
||||
<div class="content profile">
|
||||
<div class="content-right content-column">
|
||||
<div style="text-align: center;">
|
||||
<img src="{{ urls.format('IMAGE_AVATAR', [profile.id]) }}" alt="{{ profile.username }}'s Avatar" class="default-avatar-setting" style="box-shadow: 0 3px 7px #{% if profile.isOnline %}484{% else %}844{% endif %};" /><br />
|
||||
{% if profile.mainRankId > 1 and profile.checkBan|length < 1 %}
|
||||
<span style="font-size: .8em;">{{ profile.title }}</span>
|
||||
<h1 style="color: {{ profile.colour }}; text-shadow: 0 0 7px {% if profile.colour != 'inherit' %}{{ profile.colour }}{% else %}#222{% endif %}; padding: 0 0 2px;" {% if profile.getUsernameHistory %} title="Known as {{ profile.getUsernameHistory[0]['username_old'] }} before {{ profile.getUsernameHistory[0]['change_time']|date(sakura.dateFormat) }}." {% endif %}>{{ profile.username }}</h1>
|
||||
{% if profile.isPremium[0] %}<img src="{{ sakura.contentPath }}/images/tenshi.png" alt="Tenshi" style="vertical-align: middle;" /> {% endif %}<img src="{{ sakura.contentPath }}/images/flags/{{ profile.country|lower }}.png" alt="{{ profile.country }}" style="vertical-align: middle;" /> <span style="font-size: .8em; line-height: 11px;">{{ profile.country(true) }}</span>
|
||||
{% if session.checkLogin %}
|
||||
<div class="user-actions">
|
||||
{% if user.id == profile.id %}
|
||||
<a class="fa fa-pencil-square-o" title="Edit your profile" href="{{ urls.format('SETTING_MODE', ['general', 'profile']) }}"></a>
|
||||
{% else %}
|
||||
{% if user.isFriends(profile.id) != 0 %}<a class="fa fa-{% if user.isFriends(profile.id) == 2 %}heart{% else %}star{% endif %}" title="You are friends"></a>{% endif %}
|
||||
<a class="fa fa-user-{% if user.isFriends(profile.id) == 0 %}plus{% else %}times{% endif %}" title="{% if user.isFriends(profile.id) == 0 %}Add {{ profile.username }} as a friend{% else %}Remove friend{% endif %}" href="{% if user.isFriends(profile.id) == 0 %}{{ urls.format('FRIEND_ADD', [profile.id, php.sessionid, php.time, sakura.currentPage]) }}{% else %}{{ urls.format('FRIEND_REMOVE', [profile.id, php.sessionid, php.time, sakura.currentPage]) }}{% endif %}" id="profileFriendToggle"></a>
|
||||
<a class="fa fa-exclamation-circle" title="Report {{ profile.username }}" href="{{ urls.format('USER_REPORT', [profile.id]) }}"></a>
|
||||
{% endif %}
|
||||
{% if user.permission(constant('Sakura\\Perms\\Manage::CAN_RESTRICT_USERS'), constant('Sakura\\Perms::MANAGE')) %}
|
||||
<a class="fa fa-trash" title="Restrict {{ profile.username }}" href="?restrict={{ php.sessionid }}"></a>
|
||||
{% endif %}
|
||||
<hr class="default" />
|
||||
<a class="fa fa-file-text-o" title="View {{ profile.username }}'s user page" href="{{ urls.format('USER_PROFILE', [profile.id]) }}"></a>
|
||||
{#<a class="fa fa-list" title="View {{ profile.username }}'s threads" href="{{ urls.format('USER_THREADS', [profile.id]) }}"></a>
|
||||
<a class="fa fa-reply" title="View {{ profile.username }}'s posts" href="{{ urls.format('USER_POSTS', [profile.id]) }}"></a> shh #}
|
||||
<a class="fa fa-star" title="View {{ profile.username }}'s friends" href="{{ urls.format('USER_FRIENDS', [profile.id]) }}"></a>
|
||||
{#<a class="fa fa-users" title="View {{ profile.username }}'s groups" href="{{ urls.format('USER_GROUPS', [profile.id]) }}"></a>#}
|
||||
{% if not noUserpage %}
|
||||
<a class="fa fa-comments-o" title="View {{ profile.username }}'s profile comments" href="{{ urls.format('USER_COMMENTS', [profile.id]) }}"></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<hr class="default" />
|
||||
<b>Joined</b> <span title="{{ profile.registered|date(sakura.dateFormat) }}">{{ profile.elapsed.joined }}</span>
|
||||
<br />
|
||||
{% if profile.lastOnline < 1 %}
|
||||
<b>{{ profile.username }} hasn't logged in yet.</b>
|
||||
{% else %}
|
||||
<b>Last online</b> <span title="{{ profile.lastOnline|date(sakura.dateFormat) }}">{{ profile.elapsed.lastOnline }}</span>
|
||||
{% endif %}
|
||||
<br />
|
||||
<b>{{ profile.username }} has {% if not profile.forumStats.posts %}no{% else %}{{ profile.forumStats.posts }}{% endif %} forum post{% if profile.forumStats.posts != 1 %}s{% endif %}.</b>
|
||||
{% if profile.birthday != '0000-00-00' and profile.birthday|split('-')[0] > 0 %}
|
||||
<br /><b>Age</b> <span title="{{ profile.birthday }}">{{ profile.birthday(true) }} years old</span>
|
||||
{% endif %}
|
||||
{% if profile.profileFields or user.permission(constant('Sakura\\Perms\\Manage::USE_MANAGE'), constant('Sakura\\Perms::MANAGE')) %}
|
||||
<hr class="default" />
|
||||
{% if session.checkLogin %}
|
||||
<table style="width: 100%;">
|
||||
{% for name,field in profile.profileFields %}
|
||||
<tr>
|
||||
<td style="text-align: left; font-weight: bold;">
|
||||
{{ field.name }}
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
{% if name == 'youtube' %}
|
||||
<a href="https://youtube.com/{% if field.youtubetype == true %}channel{% else %}user{% endif %}/{{ field.value }}" class="default">{% if field.youtubetype == true %}{{ profile.username }}'s Channel{% else %}{{ field.value }}{% endif %}</a>
|
||||
{% else %}
|
||||
{% if field.islink %}
|
||||
<a href="{{ field.link }}" class="default">
|
||||
{% endif %}
|
||||
{{ field.value }}
|
||||
{% if field.islink %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% if user.permission(constant('Sakura\\Perms\\Manage::USE_MANAGE'), constant('Sakura\\Perms::MANAGE')) %}
|
||||
<tr>
|
||||
<td style="text-align: left; font-weight: bold;">E-mail address</td>
|
||||
<td style="text-align: right;"><a href="mailto:{{ profile.email }}" class="default">{{ profile.email }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left; font-weight: bold;">Register IP</td>
|
||||
<td style="text-align: right;">{{ profile.registerIp }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left; font-weight: bold;">Last IP</td>
|
||||
<td style="text-align: right;">{{ profile.lastIp }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
{% else %}
|
||||
<b>Log in to view the full profile!</b>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<h1 style="color: #222; text-shadow: 0 0 7px #888; padding: 0 0 2px;">{{ profile.username }}</h1>
|
||||
{% endif %}
|
||||
<hr class="default" />
|
||||
<b>Account Standing</b>
|
||||
{% if profile.permission(constant('Sakura\\Perms\\Site::DEACTIVATED')) %}
|
||||
<h2 style="color: #888; text-shadow: 0 0 7px #888; margin-top: 0;">Deactivated</h2>
|
||||
{% elseif profile.checkBan %}
|
||||
<h2 style="color: #222; text-shadow: 0 0 7px #222; margin-top: 0;">Banned</h2>
|
||||
{% elseif profile.permission(constant('Sakura\\Perms\\Site::RESTRICTED')) %}
|
||||
<h2 style="color: #800; text-shadow: 0 0 7px #800; margin-top: 0;">Restricted</h2>
|
||||
{% elseif profile.getWarnings %}
|
||||
<h2 style="color: #A00; text-shadow: 0 0 7px #A00; margin-top: 0;">Bad</h2>
|
||||
{% else %}
|
||||
<h2 style="color: #080; text-shadow: 0 0 7px #080; margin-top: 0;">Good</h2>
|
||||
{% endif %}
|
||||
{% if profile.getWarnings %}
|
||||
<table class="panelTable">
|
||||
<tr>
|
||||
<th>Action</th>
|
||||
<th>Duration</th>
|
||||
<th>Reason</th>
|
||||
</tr>
|
||||
{% for warning in profile.getWarnings %}
|
||||
<tr class="{{ warning.warning_action_text|lower }}">
|
||||
<td>{{ warning.warning_action_text }}</td>
|
||||
<td>{{ warning.warning_length }} minute{% if warning.warning_length != 1 %}s{% endif %}</td>
|
||||
<td>{{ warning.warning_reason }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-left content-column">
|
||||
{% include 'profile/' ~ profileView ~ '.twig' %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="content new-profile">
|
||||
<div class="new-profile-container">
|
||||
|
@ -175,14 +97,14 @@
|
|||
</div>
|
||||
<div class="new-profile-interactions">
|
||||
<div class="new-profile-navigation">
|
||||
<a class="fa fa-file-text-o" title="View {{ profile.username }}'s user page" href="{{ urls.format('USER_PROFILE', [profile.id]) }}"></a>
|
||||
{#<a class="fa fa-list" title="View {{ profile.username }}'s threads" href="{{ urls.format('USER_THREADS', [profile.id]) }}"></a>
|
||||
<a class="fa fa-reply" title="View {{ profile.username }}'s posts" href="{{ urls.format('USER_POSTS', [profile.id]) }}"></a>#}
|
||||
<a class="fa fa-star" title="View {{ profile.username }}'s friends" href="{{ urls.format('USER_FRIENDS', [profile.id]) }}"></a>
|
||||
{#<a class="fa fa-users" title="View {{ profile.username }}'s groups" href="{{ urls.format('USER_GROUPS', [profile.id]) }}"></a>#}
|
||||
{% if not noUserpage %}
|
||||
<a class="fa fa-comments-o" title="View {{ profile.username }}'s profile comments" href="{{ urls.format('USER_COMMENTS', [profile.id]) }}"></a>
|
||||
<a class="fa fa-file-text-o" title="View {{ profile.username }}'s user page" href="#_userpage" onclick="profileMode('userpage');"></a>
|
||||
{% endif %}
|
||||
{#<a class="fa fa-list" title="View {{ profile.username }}'s threads" href="#_threads" onclick="profileMode('threads');"></a>
|
||||
<a class="fa fa-reply" title="View {{ profile.username }}'s posts" href="#_posts" onclick="profileMode('posts');"></a>#}
|
||||
<a class="fa fa-star" title="View {{ profile.username }}'s friends" href="#_friends" onclick="profileMode('friends');"></a>
|
||||
{#<a class="fa fa-users" title="View {{ profile.username }}'s groups" href="#_groups" onclick="profileMode('groups');"></a>#}
|
||||
<a class="fa fa-comments-o" title="View {{ profile.username }}'s profile comments" href="#_comments" onclick="profileMode('comments');"></a>
|
||||
</div>
|
||||
{% if session.checkLogin %}
|
||||
<div class="new-profile-actions">
|
||||
|
@ -201,8 +123,24 @@
|
|||
</div>
|
||||
<div class="new-profile-content">
|
||||
<div class="new-profile-mode">
|
||||
<div>
|
||||
{% include 'profile/' ~ profileView ~ '.twig' %}
|
||||
<noscript><h1 class="stylised" style="text-align: center;">Please enable Javascript!</h1></noscript>
|
||||
<div id="profile-mode-userpage" class="hidden">
|
||||
{% include 'profile/userpage.twig' %}
|
||||
</div>
|
||||
<div id="profile-mode-friends" class="hidden">
|
||||
{% include 'profile/friends.twig' %}
|
||||
</div>
|
||||
<div id="profile-mode-groups" class="hidden">
|
||||
{% include 'profile/groups.twig' %}
|
||||
</div>
|
||||
<div id="profile-mode-threads" class="hidden">
|
||||
{% include 'profile/threads.twig' %}
|
||||
</div>
|
||||
<div id="profile-mode-posts" class="hidden">
|
||||
{% include 'profile/posts.twig' %}
|
||||
</div>
|
||||
<div id="profile-mode-comments" class="hidden">
|
||||
{% include 'profile/comments.twig' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="new-profile-data">
|
||||
|
|
Reference in a new issue