r20150907

Signed-off-by: Flashwave <me@flash.moe>
This commit is contained in:
flash 2015-09-07 22:53:47 +02:00
parent abb2f75669
commit 2c109cdef5
40 changed files with 552 additions and 433 deletions

View file

@ -59,7 +59,8 @@
"20150903", "20150903",
"20150904", "20150904",
"20150905", "20150905",
"20150906" "20150906",
"20150907"
] ]
@ -2548,6 +2549,46 @@
"user": "Flashwave" "user": "Flashwave"
} }
],
"20150907": [
{
"type": "FIX",
"change": "Fixed cookie notification reappearing after accepting.",
"user": "Flashwave"
},
{
"type": "FIX",
"change": "Fixed infopage templates not using the new blocks method.",
"user": "Flashwave"
},
{
"type": "UPD",
"change": "Removed the _developer_data folder, split the SQL structure and data up into two files respectively and moved the Sock Chat auth script to a new directory.",
"user": "Flashwave"
},
{
"type": "UPD",
"change": "Updated the CloudFlare IPs list.",
"user": "Flashwave"
},
{
"type": "FIX",
"change": "Fixed newline causing an error in CloudFlare check.",
"user": "Flashwave"
},
{
"type": "UPD",
"change": "Moved document title setting to templates instead of in the PHP file.",
"user": "Flashwave"
},
{
"type": "FIX",
"change": "Restyle explosive notifications and make them not explosive.",
"user": "Flashwave"
}
] ]
} }

View file

@ -522,6 +522,13 @@ $errorPage .= '</div>
// Check if IP is in a CloudFlare subnet // Check if IP is in a CloudFlare subnet
foreach($cfhosts as $subnet) { foreach($cfhosts as $subnet) {
// Check if the subnet isn't empty (git newline prevention)
if(strlen($subnet) < 1) {
continue;
}
// Return true if found // Return true if found
if(self::matchSubnet($ip, $subnet)) { if(self::matchSubnet($ip, $subnet)) {

View file

@ -1,14 +1,14 @@
199.27.128.0/21
173.245.48.0/20
103.21.244.0/22 103.21.244.0/22
103.22.200.0/22 103.22.200.0/22
103.31.4.0/22 103.31.4.0/22
141.101.64.0/18 104.16.0.0/12
108.162.192.0/18 108.162.192.0/18
190.93.240.0/20 141.101.64.0/18
162.158.0.0/15
172.64.0.0/13
173.245.48.0/20
188.114.96.0/20 188.114.96.0/20
190.93.240.0/20
197.234.240.0/22 197.234.240.0/22
198.41.128.0/17 198.41.128.0/17
162.158.0.0/15 199.27.128.0/21
104.16.0.0/12
172.64.0.0/13

View file

@ -1,5 +1,5 @@
2400:cb00::/32 2400:cb00::/32
2405:8100::/32
2405:b500::/32
2606:4700::/32 2606:4700::/32
2803:f800::/32 2803:f800::/32
2405:b500::/32
2405:8100::/32

View file

@ -8,7 +8,7 @@
namespace Sakura; namespace Sakura;
// Define Sakura version // Define Sakura version
define('SAKURA_VERSION', '20150906'); define('SAKURA_VERSION', '20150907');
define('SAKURA_VLABEL', 'Eminence'); define('SAKURA_VLABEL', 'Eminence');
define('SAKURA_COLOUR', '#6C3082'); define('SAKURA_COLOUR', '#6C3082');
define('SAKURA_STABLE', false); define('SAKURA_STABLE', false);
@ -173,15 +173,14 @@ if(!defined('SAKURA_NO_TPL')) {
// Additional render data // Additional render data
$renderData = array_merge($renderData, [ $renderData = array_merge($renderData, [
'ban' => [ 'ban' => [
'reason' => $ban['reason'], 'reason' => $ban['reason'],
'issued' => $ban['issued'], 'issued' => $ban['issued'],
'expires' => $ban['expires'], 'expires' => $ban['expires'],
'issuer' => Users::getUser($ban['issuer']) 'issuer' => Users::getUser($ban['issuer'])
],
'page' => [
'title' => 'You are banned!'
] ]
]); ]);
Users::logout(); Users::logout();

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Forum Listing{% endblock %}
{% block content %} {% block content %}
<div class="content homepage forum"> <div class="content homepage forum">
<div class="content-right content-column"> <div class="content-right content-column">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Posting{% endblock %}
{% block content %} {% block content %}
<div class="content"> <div class="content">
<div class="content-column forum posting"> <div class="content-column forum posting">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Forums / {{ board.forums[0].forum.forum_name }}{% endblock %}
{% block content %} {% block content %}
<div class="content homepage forum viewforum"> <div class="content homepage forum viewforum">
<div class="content-column"> <div class="content-column">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}{{ topic.topic_title }}{% endblock %}
{% block content %} {% block content %}
<div class="content homepage forum viewtopic"> <div class="content homepage forum viewtopic">
<div class="content-column"> <div class="content-column">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Information{% endblock %}
{% block content %} {% block content %}
<div class="content standalone"> <div class="content standalone">
<div> <div>

View file

@ -3,7 +3,7 @@
<head> <head>
<!-- META --> <!-- META -->
<meta charset="{{ sakura.charset }}" /> <meta charset="{{ sakura.charset }}" />
<title>{{ page.title }}</title> <title>{% block title %}{{ sakura.siteName }}{% endblock %}</title>
<meta name="description" content="{{ sakura.siteDesc }}" /> <meta name="description" content="{{ sakura.siteDesc }}" />
<meta name="keywords" content="{{ sakura.siteTags }}" /> <meta name="keywords" content="{{ sakura.siteTags }}" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
@ -11,7 +11,7 @@
<meta name="msapplication-TileImage" content="/content/images/icons/ms-icon-144x144.png" /> <meta name="msapplication-TileImage" content="/content/images/icons/ms-icon-144x144.png" />
<meta name="theme-color" content="#9475B2" /> <meta name="theme-color" content="#9475B2" />
{% if page.redirect %} {% if page.redirect %}
<meta http-equiv="refresh" content="3; URL={{ page.redirect }}" /> <meta http-equiv="refresh" content="{{ page.redirectTimeout ? page.redirectTimeout : '3' }}; URL={{ page.redirect }}" />
{% endif %} {% endif %}
<link rel="apple-touch-icon" sizes="57x57" href="/content/images/icons/apple-icon-57x57.png" /> <link rel="apple-touch-icon" sizes="57x57" href="/content/images/icons/apple-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="60x60" href="/content/images/icons/apple-icon-60x60.png" /> <link rel="apple-touch-icon" sizes="60x60" href="/content/images/icons/apple-icon-60x60.png" />
@ -157,7 +157,7 @@
"title": sakuraVars.siteName + " uses cookies!", "title": sakuraVars.siteName + " uses cookies!",
"text": "Click this if you're OK with that and want to hide this message.", "text": "Click this if you're OK with that and want to hide this message.",
"img": "FONT:fa-asterisk", "img": "FONT:fa-asterisk",
"link": "javascript:cookieData('set', '"+ sakuraVars.cookie.prefix +"accept_cookies', 'true');notifyClose(this.parentNode.id);" "link": "javascript:cookieData('set', '"+ sakuraVars.cookie.prefix +"accept_cookies', 'true; expires="+ (new Date(2147483647000)).toUTCString() +"');notifyClose(this.parentNode.id);"
}); });
} }

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Restricted{% endblock %}
{% block content %} {% block content %}
<div class="content standalone"> <div class="content standalone">
<div> <div>

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Authentication{% endblock %}
{% block content %} {% block content %}
{% if sakura.lockAuth %} {% if sakura.lockAuth %}
<h1 class="stylised" style="line-height: 1.8em; text-align: center;">Authentication is currently disallowed, try again later.</h1> <h1 class="stylised" style="line-height: 1.8em; text-align: center;">Authentication is currently disallowed, try again later.</h1>

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}You are banned!{% endblock %}
{% block content %} {% block content %}
<div class="content"> <div class="content">
<div class="content-column news banned"> <div class="content-column news banned">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Frequently Asked Questions{% endblock %}
{% block content %} {% block content %}
<div class="content settings"> <div class="content settings">
<div class="content-right content-column"> <div class="content-right content-column">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Forgot Password{% endblock %}
{% block content %} {% block content %}
<div class="content news settings"> <div class="content news settings">
<div class="head">Forgot Password</div> <div class="head">Forgot Password</div>

View file

@ -1,7 +1,11 @@
{% include 'global/header.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}{% if page.title %}{{ page.title }}{% else %}Not found!{% endif %}{% endblock %}
{% block content %}
<div class="content standalone markdown"> <div class="content standalone markdown">
<div> <div>
{{ page.content|raw }} {{ page.content|raw }}
</div> </div>
</div> </div>
{% include 'global/footer.tpl' %} {% endblock %}

View file

@ -1,10 +1,19 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% set rankTitle %}
{% if page.notfound %}Not found{% else %}{% if not page.active %}All members{% else %}{{ page.ranks[page.active].name }}{% if page.ranks[page.active].multi %}s{% endif %}{% endif %}{% endif %}
{% endset %}
{% set rankDescription %}
{% if page.notfound %}The requested rank could not be found!{% else %}{% if not page.active %}The entire user list.{% else %}{{ page.ranks[page.active].description }}{% endif %}{% endif %}
{% endset %}
{% block title %}{{ rankTitle }}{% endblock %}
{% block content %} {% block content %}
{% if session.checkLogin %} <div class="headerNotify" style="margin-bottom: 1px;">
<div class="headerNotify" style="padding: 10px 0; margin-bottom: 1px;"> <h1 style="text-shadow: 0px 0px 5px #555;{% if page.active %} color: {{ page.ranks[page.active].colour }};{% endif %}">{{ rankTitle }}</h1>
<h1 style="text-shadow: 0px 0px 5px #555;{% if page.active %} color: {{ page.ranks[page.active].colour }};{% endif %}">{% if not page.active %}All members{% else %}{{ page.ranks[page.active].name }}{% if page.ranks[page.active].multi %}s{% endif %}{% endif %}</h1> <h3>{{ rankDescription }}</h3>
<h3>{% if not page.active %}The entire user list.{% else %}{{ page.ranks[page.active].description }}{% endif %}</h3>
</div> </div>
<div class="membersPage" style="min-height: 500px;"> <div class="membersPage" style="min-height: 500px;">
<div class="dropDown" style="margin: 0px auto; font-size: 1.5em; line-height: 1.5em; height: 30px;"> <div class="dropDown" style="margin: 0px auto; font-size: 1.5em; line-height: 1.5em; height: 30px;">
@ -24,86 +33,83 @@
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
{% if page.notfound %} {% if not page.users|length %}
<h1 class="stylised" style="margin-top: 20px;">The requested rank was not found!</h1> <h1 class="stylised" style="margin: 2em 0;">This rank has no members!</h1>
{% else %} {% elseif not page.notfound %}
<div class="membersPageList {{ page.sort }}"> <div class="membersPageList {{ page.sort }}">
{% if page.sort == page.sorts[2] %} {% if page.sort == page.sorts[2] %}
<table> <table>
<thead> <thead>
<tr> <tr>
<th>No.</th> <th>No.</th>
<th>Username</th> <th>Username</th>
<th>Registered</th> <th>Registered</th>
<th>Last online</th> <th>Last online</th>
<th>User title</th> <th>User title</th>
<th>Country</th> <th>Country</th>
</tr> </tr>
</thead> </thead>
<tfoot> <tfoot>
<tr> <tr>
<th>No.</th> <th>No.</th>
<th>Username</th> <th>Username</th>
<th>Registered</th> <th>Registered</th>
<th>Last online</th> <th>Last online</th>
<th>User title</th> <th>User title</th>
<th>Country</th> <th>Country</th>
</tr> </tr>
</tfoot> </tfoot>
{% for count,user in page.users[page.page] %} {% for count,user in page.users[page.page] %}
<tbody> <tbody>
<tr> <tr>
<td> <td>
#{{ page.active ? count + 1 : count }} #{{ page.active ? count + 1 : count }}
</td> </td>
<td> <td>
<a href="{{ urls.format('USER_PROFILE', [user.id]) }}" class="default" style="font-weight: bold; color: {{ page.ranks[user.rank_main].colour }};">{{ user.username }}</a> <a href="{{ urls.format('USER_PROFILE', [user.id]) }}" class="default" style="font-weight: bold; color: {{ page.ranks[user.rank_main].colour }};">{{ user.username }}</a>
</td> </td>
<td> <td>
{{ user.regdate|date(sakura.dateFormat) }} {{ user.regdate|date(sakura.dateFormat) }}
</td> </td>
<td> <td>
{% if user.lastdate == 0 %}<i>Never logged in.</i>{% else %}{{ user.lastdate|date(sakura.dateFormat) }}{% endif %} {% if user.lastdate == 0 %}<i>Never logged in.</i>{% else %}{{ user.lastdate|date(sakura.dateFormat) }}{% endif %}
</td> </td>
<td> <td>
{% if not user.usertitle %}<i>{{ page.ranks[user.rank_main].title }}</i>{% else %}{{ user.usertitle }}{% endif %} {% if not user.usertitle %}<i>{{ page.ranks[user.rank_main].title }}</i>{% else %}{{ user.usertitle }}{% endif %}
</td> </td>
<td> <td>
<img src="{{ sakura.contentPath }}/images/flags/{{ user.country|lower }}.png" alt="{% if user.country|lower == 'eu' %}?{% else %}{{ user.country }}{% endif %}" /> <img src="{{ sakura.contentPath }}/images/flags/{{ user.country|lower }}.png" alt="{% if user.country|lower == 'eu' %}?{% else %}{{ user.country }}{% endif %}" />
</td> </td>
</tr> </tr>
</tbody> </tbody>
{% endfor %} {% endfor %}
</table> </table>
{% else %} {% else %}
{% for user in page.users[page.page] %} {% for user in page.users[page.page] %}
<a href="{{ urls.format('USER_PROFILE', [user.id]) }}">{# These comment tags are here to prevent the link extending too far <a href="{{ urls.format('USER_PROFILE', [user.id]) }}">{# These comment tags are here to prevent the link extending too far
#}<div class="userBox" id="u{{ user.id }}">{# #}<div class="userBox" id="u{{ user.id }}">{#
#}<img src="{{ sakura.contentPath }}/pixel.png" alt="{{ user.username }}" style="background: url('{{ urls.format('IMAGE_AVATAR', [user.id]) }}') no-repeat center / contain;" />{# #}<img src="{{ sakura.contentPath }}/pixel.png" alt="{{ user.username }}" style="background: url('{{ urls.format('IMAGE_AVATAR', [user.id]) }}') no-repeat center / contain;" />{#
#}<span class="userBoxUserName"{% if page.sort == page.sorts[1] %} style="color: {{ page.ranks[user.rank_main].colour }};"{% endif %}>{# #}<span class="userBoxUserName"{% if page.sort == page.sorts[1] %} style="color: {{ page.ranks[user.rank_main].colour }};"{% endif %}>{#
#}{{ user.username }}{# #}{{ user.username }}{#
#}</span>{# #}</span>{#
#}</div>{# #}</div>{#
#}</a> #}</a>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% if page.users|length > 1 %} {% if page.users|length > 1 %}
<div class="pagination"> <div class="pagination">
{% if page.page > 0 %} {% if page.page > 0 %}
<a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, page.page]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, page.page]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, page.page]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [page.page]) }}{% endif %}"><span class="fa fa-step-backward"></span></a> <a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, page.page]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, page.page]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, page.page]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [page.page]) }}{% endif %}"><span class="fa fa-step-backward"></span></a>
{% endif %} {% endif %}
{% for count,navpage in page.users %} {% for count,navpage in page.users %}
<a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, (count + 1)]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, (count + 1)]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, (count + 1)]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [(count + 1)]) }}{% endif %}"{% if count == page.page %} class="current"{% endif %}>{{ count + 1 }}</a> <a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, (count + 1)]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, (count + 1)]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, (count + 1)]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [(count + 1)]) }}{% endif %}"{% if count == page.page %} class="current"{% endif %}>{{ count + 1 }}</a>
{% endfor %} {% endfor %}
{% if page.page + 1 < page.users|length %} {% if page.page + 1 < page.users|length %}
<a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, (page.page + 2)]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, (page.page + 2)]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, (page.page + 2)]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [(page.page + 2)]) }}{% endif %}"><span class="fa fa-step-forward"></span></a> <a href="{% if page.sort and page.active %}{{ urls.format('MEMBERLIST_ALL', [page.sort, page.active, (page.page + 2)]) }}{% elseif page.sort %}{{ urls.format('MEMBERLIST_SORT_PAGE', [page.sort, (page.page + 2)]) }}{% elseif page.active %}{{ urls.format('MEMBERLIST_RANK_PAGE', [page.active, (page.page + 2)]) }}{% else %}{{ urls.format('MEMBERLIST_PAGE', [(page.page + 2)]) }}{% endif %}"><span class="fa fa-step-forward"></span></a>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
</div> </div>
{% else %}
{% include 'elements/restricted.tpl' %}
{% endif %}
{% endblock %} {% endblock %}

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}{% if page.view_post %}{{ newsPosts[0].title }}{% elseif newsPosts|length < 1 %}Post does not exist!{% else %}News{% endif %}{% endblock %}
{% block content %} {% block content %}
<div class="content"> <div class="content">
<div class="content-column news"> <div class="content-column news">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Purchase complete!{% endblock %}
{% block content %} {% block content %}
<div class="content standalone" style="text-align: center;"> <div class="content standalone" style="text-align: center;">
<h1 class="stylised" style="margin: 1em auto;">Thank you for your contribution!</h1> <h1 class="stylised" style="margin: 1em auto;">Thank you for your contribution!</h1>

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Search{% endblock %}
{% block content %} {% block content %}
<div class="content" style="background: #FFF;"> <div class="content" style="background: #FFF;">
<div class="content-column news"> <div class="content-column news">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}{{ page.category }} / {{ page.mode }}{% endblock %}
{% block content %} {% block content %}
<div class="content settings messages"> <div class="content settings messages">
<div class="content-right content-column"> <div class="content-right content-column">
@ -7,7 +9,7 @@
</div> </div>
<div class="content-left content-column"> <div class="content-left content-column">
<div class="head"> <div class="head">
{{ page.title }} {{ page.category }} / {{ page.mode }}
</div> </div>
<div class="settings-explanation"> <div class="settings-explanation">
{% for descline in page.description %} {% for descline in page.description %}

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Support {{ sakura.siteName }}{% endblock %}
{% block content %} {% block content %}
{% if page.fail %} {% if page.fail %}
<div class="headerNotify"> <div class="headerNotify">

View file

@ -1,5 +1,7 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% block title %}Donation Tracker{% endblock %}
{% block content %} {% block content %}
<div class="content support"> <div class="content support">
<div class="head">Donation Tracker</div> <div class="head">Donation Tracker</div>

View file

@ -1,7 +1,11 @@
{% extends 'global/master.tpl' %} {% extends 'global/master.tpl' %}
{% set profileHidden = profile.checkPermission('SITE', 'DEACTIVATED') or profile.data.password_algo == 'nologin' or (profile.checkPermission('SITE', 'RESTRICTED') and (user.data.id != profile.data.id and not user.checkPermission('MANAGE', 'USE_MANAGE'))) %}
{% block title %}{% if profileHidden %}User not found!{% else %}Profile of {{ profile.data.username }}{% endif %}{% endblock %}
{% block content %} {% block content %}
{% if profile.checkPermission('SITE', 'DEACTIVATED') or profile.data.password_algo == 'nologin' or (profile.checkPermission('SITE', 'RESTRICTED') and (user.data.id != profile.data.id and not user.checkPermission('MANAGE', 'USE_MANAGE'))) %} {% if profileHidden %}
<div class="content standalone" style="padding: 20px;"> <div class="content standalone" style="padding: 20px;">
<h1>The requested user does not exist!</h1> <h1>The requested user does not exist!</h1>
There are a few possible reasons for this: There are a few possible reasons for this:

182
database/data.sql Normal file
View file

@ -0,0 +1,182 @@
-- Adminer 4.2.2 MySQL dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
USE `sakura-development`;
TRUNCATE `sakura_bbcodes`;
INSERT INTO `sakura_bbcodes` (`id`, `regex`, `replace`, `title`, `description`, `on_posting`) VALUES
(1, '/\\[b\\](.*?)\\[\\/b\\]/is', '<b>$1</b>', 'Bold', 'Make text bold. Usage: [b]text[/b].', 1),
(2, '/\\[i\\](.*?)\\[\\/i\\]/is', '<i>$1</i>', 'Italics', 'Make text italic. Usage: [i]text[/i].', 1),
(3, '/\\[u\\](.*?)\\[\\/u\\]/is', '<u>$1</u>', 'Underline', 'Make text underlined. Usage: [u]text[/u].', 1),
(4, '/\\[s\\](.*?)\\[\\/s\\]/is', '<del>$1</del>', 'Strikethrough', 'Put a line through text. Usage: [s]text[/s].', 1),
(5, '/\\[img\\]([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\[\\/img\\]/is', '<img src=\"$1\" alt=\"Image\" />', 'Image', 'Embed an image. Usage: [img]url[/img]', 1),
(6, '/\\[url=([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\](.*?)\\[\\/url\\]/is', '<a href=\"$1\" target=\"_blank\">$2</a>', 'Link', 'Embed a URL. Usage: [url=http://google.com]Link to google![/url]', 0),
(7, '/\\[url\\]([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\[\\/url\\]/is', '<a href=\"$1\" target=\"_blank\">$1</a>', 'Link', 'Make a link clickable (if the automatic algorithm doesn\'t do it already). Usage: [url]http://google.com[/url]', 1),
(8, '/\\[quote\\=\\\"(.+)\\\"\\](.+)\\[\\/quote]/is', '<div class=\"quote\"><div class=\"quotee\">$1 wrote:</div><div class=\"text\">$2</div></div>', 'Quote', 'Quote a user\'s post. Usage: [quote=Flashwave]nookls is pretty[/quote]', 0),
(9, '/\\[quote\\](.+)\\[\\/quote]/is', '<div class=\"quote\"><div class=\"quotee\">Quote:</div><div class=\"text\">$1</div></div>', 'Quote', 'Quote a user\'s post. Usage: [quote]nookls is pretty[/quote]', 1);
TRUNCATE `sakura_config`;
INSERT INTO `sakura_config` (`config_name`, `config_value`) VALUES
('recaptcha_public', ''),
('recaptcha_private', ''),
('charset', 'utf-8'),
('cookie_prefix', 'sakura_'),
('cookie_domain', 'sakura.dev'),
('cookie_path', '/'),
('site_style', 'yuuno'),
('manage_style', 'broomcloset'),
('smtp_server', ''),
('smtp_auth', ''),
('smtp_secure', ''),
('smtp_port', ''),
('smtp_username', ''),
('smtp_password', ''),
('smtp_replyto_mail', ''),
('smtp_replyto_name', ''),
('smtp_from_email', ''),
('smtp_from_name', ''),
('sitename', 'Sakura'),
('recaptcha', '0'),
('require_activation', '0'),
('require_registration_code', '0'),
('disable_registration', '0'),
('max_reg_keys', '5'),
('mail_signature', ''),
('lock_authentication', '0'),
('min_entropy', '1'),
('sitedesc', ''),
('sitetags', '[]'),
('username_min_length', '3'),
('username_max_length', '16'),
('lock_site', '0'),
('lock_site_reason', ''),
('use_gzip', '0'),
('enable_tpl_cache', '0'),
('paypal_client_id', ''),
('paypal_secret', ''),
('premium_price_per_month', '1.49'),
('premium_rank_id', '8'),
('premium_amount_max', '24'),
('alumni_rank_id', '9'),
('url_main', 'flashii.test'),
('front_page_news_posts', '3'),
('date_format', 'D Y-m-d H:i:s T'),
('news_posts_per_page', '3'),
('avatar_min_width', '20'),
('avatar_min_height', '20'),
('avatar_max_height', '512'),
('avatar_max_width', '512'),
('avatar_max_fsize', '2097152'),
('url_api', 'api.sakura.dev'),
('content_path', '/content'),
('user_uploads', 'uploads'),
('no_background_img', 'main/content/pixel.png'),
('no_header_img', 'main/content/images/triangles.png'),
('pixel_img', 'main/content/pixel.png'),
('background_max_fsize', '5242880'),
('background_max_width', '2560'),
('background_max_height', '1440'),
('background_min_height', '16'),
('background_min_width', '16'),
('max_online_time', '500'),
('no_avatar_img', 'main/content/data/{{ TPL }}/images/no-av.png'),
('deactivated_avatar_img', 'main/content/data/{{ TPL }}/images/deactivated-av.png'),
('banned_avatar_img', 'main/content/data/{{ TPL }}/images/banned-av.png'),
('session_check', '2'),
('url_rewrite', '1'),
('members_per_page', '30'),
('admin_email', '');
TRUNCATE `sakura_emoticons`;
INSERT INTO `sakura_emoticons` (`emote_string`, `emote_path`) VALUES
(':amu:', '/content/images/emoticons/amu.png'),
(':angrier:', '/content/images/emoticons/angrier.png'),
(':angriest:', '/content/images/emoticons/angriest.png'),
(':angry:', '/content/images/emoticons/angry.gif'),
(':blank:', '/content/images/emoticons/blank.png'),
(':childish:', '/content/images/emoticons/childish.png'),
(':congrats:', '/content/images/emoticons/congrats.png'),
(':crying:', '/content/images/emoticons/crying.gif'),
(':dizzy:', '/content/images/emoticons/dizzy.gif'),
(':eat:', '/content/images/emoticons/eat.gif'),
(':evil:', '/content/images/emoticons/evil.png'),
(':extreme:', '/content/images/emoticons/extreme.png'),
(':glare:', '/content/images/emoticons/glare.gif'),
(':happy:', '/content/images/emoticons/happy.gif'),
(':horror:', '/content/images/emoticons/horror.gif'),
(':huh:', '/content/images/emoticons/huh.png'),
(':idea:', '/content/images/emoticons/idea.png'),
(':jew:', '/content/images/emoticons/jew.png'),
(':kiss:', '/content/images/emoticons/kiss.gif'),
(':lmao:', '/content/images/emoticons/lmao.gif'),
(':lol:', '/content/images/emoticons/lol.gif'),
(':love:', '/content/images/emoticons/love.png'),
(':meow:', '/content/images/emoticons/meow.png'),
(':omg:', '/content/images/emoticons/omg.gif'),
(':ouch:', '/content/images/emoticons/ouch.gif'),
(':puke:', '/content/images/emoticons/puke.gif'),
(':ruse:', '/content/images/emoticons/ruse.png'),
(':sad:', '/content/images/emoticons/sad.png'),
(':sigh:', '/content/images/emoticons/sigh.gif'),
(':suspicious:', '/content/images/emoticons/suspicious.gif'),
(':sweat:', '/content/images/emoticons/sweat.gif'),
(':tired:', '/content/images/emoticons/tired.gif'),
(':yay:', '/content/images/emoticons/vhappy.gif'),
(':winxp:', '/content/images/emoticons/winxp.png'),
(':wtf:', '/content/images/emoticons/wtf.gif'),
(':sleep:', '/content/images/emoticons/zzz.gif'),
(':what:', '/content/images/emoticons/what.png'),
(':smug:', '/content/images/emoticons/smug.png');
TRUNCATE `sakura_optionfields`;
INSERT INTO `sakura_optionfields` (`id`, `name`, `description`, `formtype`, `require_perm`) VALUES
('disableProfileParallax', 'Disable Parallaxing', 'This will stop your background from responding to your mouse movement, this will only affect your background.', 'checkbox', 'CHANGE_BACKGROUND'),
('profileBackgroundSiteWide', 'Display profile background site wide', 'This will make the profile background you set on your profile appear on the entire site (except on other profiles).', 'checkbox', 'CREATE_BACKGROUND'),
('useMisaki', 'Use the testing style', 'This will make the site use the new Misaki style instead of Yuuno.', 'checkbox', 'ALTER_PROFILE');
TRUNCATE `sakura_permissions`;
INSERT INTO `sakura_permissions` (`rid`, `uid`, `siteperms`, `manageperms`, `forumperms`, `rankinherit`) VALUES
(1, 0, '0000000000000000000000000001', '00', '0', '000'),
(2, 0, '0000111111111100111101101100', '00', '1', '000'),
(3, 0, '0001111111111111111111111100', '11', '1', '000'),
(4, 0, '1111111111111111111111111100', '11', '1', '000'),
(5, 0, '0001111111111111111111111100', '11', '1', '000'),
(6, 0, '0000111111111100111101101100', '00', '0', '000'),
(7, 0, '0001111111111111111111111100', '01', '1', '000'),
(8, 0, '0001111111111111111111111100', '00', '1', '000'),
(9, 0, '0001111111111111111111111100', '00', '1', '000'),
(10, 0, '0000000011010100101000100010', '00', '0', '000');
TRUNCATE `sakura_profilefields`;
INSERT INTO `sakura_profilefields` (`id`, `name`, `formtype`, `islink`, `linkformat`, `description`, `additional`) VALUES
(1, 'Website', 'url', 1, '{{ VAL }}', 'URL to your website', ''),
(2, 'Twitter', 'text', 1, 'https://twitter.com/{{ VAL }}', 'Your @twitter Username', ''),
(3, 'BitBucket', 'text', 1, 'https://bitbucket.org/{{ VAL }}', 'Your BitBucket Username', ''),
(4, 'Skype', 'text', 1, 'skype:{{ VAL }}?userinfo', 'Your Skype Username', ''),
(5, 'YouTube', 'text', 0, '', 'ID or Username excluding http://youtube.com/*/', '{\"youtubetype\": [\"checkbox\", \"I <b>do not</b> have a Channel Username (url looks like https://www.youtube.com/channel/UCXZcw5hw5C7Neto-T_nRXBQ).\"]}'),
(6, 'SoundCloud', 'text', 1, 'https://soundcloud.com/{{ VAL }}', 'Your SoundCloud username', ''),
(7, 'Steam', 'text', 1, 'https://steamcommunity.com/id/{{ VAL }}', 'Your Steam Community Username (may differ from login username)', ''),
(8, 'osu!', 'text', 1, 'https://osu.ppy.sh/u/{{ VAL }}', 'Your osu! Username', ''),
(9, 'Origin', 'text', 0, '', 'Your Origin User ID', ''),
(10, 'Xbox Live', 'text', 1, 'https://account.xbox.com/en-GB/Profile?Gamertag={{ VAL }}', 'Your Xbox User ID', ''),
(11, 'PSN', 'text', 1, 'http://psnprofiles.com/{{ VAL }}', 'Your PSN User ID', ''),
(12, 'Last.fm', 'text', 1, 'http://last.fm/user/{{ VAL }}', 'Your Last.fm username', '');
TRUNCATE `sakura_ranks`;
INSERT INTO `sakura_ranks` (`id`, `name`, `multi`, `hidden`, `colour`, `description`, `title`) VALUES
(1, 'Deactivated', 0, 1, '#555', 'Users that are yet to be activated or that deactivated their own account.', 'Deactivated'),
(2, 'Regular user', 1, 0, 'inherit', 'Regular users with regular permissions.', 'Regular user'),
(3, 'Site moderator', 1, 0, '#0A0', 'Users with special permissions like being able to ban and modify users if needed.', 'Staff'),
(4, 'Administrator', 1, 0, '#C00', 'Users that manage the server and everything around that.', 'Administrator'),
(5, 'Developer', 1, 0, '#824CA0', 'Users that either create or test new features of the site.', 'Staff'),
(6, 'Bot', 1, 1, '#9E8DA7', 'Reserved user accounts for services.', 'Bot'),
(7, 'Chat moderator', 1, 0, '#09F', 'Moderators of the chat room.', 'Staff'),
(8, 'Tenshi', 0, 0, '#EE9400', 'Users that bought premium to help us keep the site and its services alive!', 'Tenshi'),
(9, 'Alumnii', 0, 0, '#FF69B4', 'People who have contributed to the community but have moved on or resigned.', 'Alumnii'),
(10, 'Restricted', 0, 1, '#333', 'Users that are restricted.', 'Restricted');
-- 2015-09-06 14:19:12

View file

@ -1,10 +1,10 @@
-- Adminer 4.2.1 MySQL dump -- Adminer 4.2.2 MySQL dump
SET NAMES utf8; SET NAMES utf8;
SET time_zone = '+00:00'; SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP DATABASE IF EXISTS `sakura-development`;
CREATE DATABASE `sakura-development` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `sakura-development`; USE `sakura-development`;
DROP TABLE IF EXISTS `sakura_actioncodes`; DROP TABLE IF EXISTS `sakura_actioncodes`;
@ -15,7 +15,7 @@ CREATE TABLE `sakura_actioncodes` (
`actkey` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The URL key for using this code.', `actkey` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The URL key for using this code.',
`instruction` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Things the backend should do upon using this code', `instruction` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Things the backend should do upon using this code',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_apikeys`; DROP TABLE IF EXISTS `sakura_apikeys`;
@ -52,18 +52,8 @@ CREATE TABLE `sakura_bbcodes` (
`description` varchar(512) COLLATE utf8_bin NOT NULL COMMENT 'Description of what this does.', `description` varchar(512) COLLATE utf8_bin NOT NULL COMMENT 'Description of what this does.',
`on_posting` tinyint(1) unsigned NOT NULL COMMENT 'Set if this bbcode is displayed on the posting page.', `on_posting` tinyint(1) unsigned NOT NULL COMMENT 'Set if this bbcode is displayed on the posting page.',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_bbcodes` (`id`, `regex`, `replace`, `title`, `description`, `on_posting`) VALUES
(1, '/\\[b\\](.*?)\\[\\/b\\]/is', '<b>$1</b>', 'Bold', 'Make text bold. Usage: [b]text[/b].', 1),
(2, '/\\[i\\](.*?)\\[\\/i\\]/is', '<i>$1</i>', 'Italics', 'Make text italic. Usage: [i]text[/i].', 1),
(3, '/\\[u\\](.*?)\\[\\/u\\]/is', '<u>$1</u>', 'Underline', 'Make text underlined. Usage: [u]text[/u].', 1),
(4, '/\\[s\\](.*?)\\[\\/s\\]/is', '<del>$1</del>', 'Strikethrough', 'Put a line through text. Usage: [s]text[/s].', 1),
(5, '/\\[img\\]([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\[\\/img\\]/is', '<img src=\"$1\" alt=\"Image\" />', 'Image', 'Embed an image. Usage: [img]url[/img]', 1),
(6, '/\\[url=([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\](.*?)\\[\\/url\\]/is', '<a href=\"$1\" target=\"_blank\">$2</a>', 'Link', 'Embed a URL. Usage: [url=http://google.com]Link to google![/url]', 0),
(7, '/\\[url\\]([a-zA-Z0-9\\.\\$\\-\\_\\.\\+\\*\\!\\\'\\(\\)\\/\\:\\#]+)\\[\\/url\\]/is', '<a href=\"$1\" target=\"_blank\">$1</a>', 'Link', 'Make a link clickable (if the automatic algorithm doesn\'t do it already). Usage: [url]http://google.com[/url]', 1),
(8, '/\\[quote\\=\\\"(.+)\\\"\\](.+)\\[\\/quote]/is', '<div class=\"quote\"><div class=\"quotee\">$1 wrote:</div><div class=\"text\">$2</div></div>', 'Quote', 'Quote a user\'s post. Usage: [quote=Flashwave]nookls is pretty[/quote]', 0),
(9, '/\\[quote\\](.+)\\[\\/quote]/is', '<div class=\"quote\"><div class=\"quotee\">Quote:</div><div class=\"text\">$1</div></div>', 'Quote', 'Quote a user\'s post. Usage: [quote]nookls is pretty[/quote]', 1);
DROP TABLE IF EXISTS `sakura_config`; DROP TABLE IF EXISTS `sakura_config`;
CREATE TABLE `sakura_config` ( CREATE TABLE `sakura_config` (
@ -71,75 +61,6 @@ CREATE TABLE `sakura_config` (
`config_value` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The value, obviously.' `config_value` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The value, obviously.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_config` (`config_name`, `config_value`) VALUES
('recaptcha_public', ''),
('recaptcha_private', ''),
('charset', 'utf-8'),
('cookie_prefix', 'fii_'),
('cookie_domain', 'flashii.test'),
('cookie_path', '/'),
('site_style', 'yuuno'),
('manage_style', 'broomcloset'),
('smtp_server', ''),
('smtp_auth', ''),
('smtp_secure', ''),
('smtp_port', ''),
('smtp_username', ''),
('smtp_password', ''),
('smtp_replyto_mail', 'admin@flashii.net'),
('smtp_replyto_name', 'Flashwave'),
('smtp_from_email', ''),
('smtp_from_name', 'Flashii Noreply'),
('sitename', 'Cutting Edgii'),
('recaptcha', '0'),
('require_activation', '0'),
('require_registration_code', '0'),
('disable_registration', '0'),
('max_reg_keys', '5'),
('mail_signature', 'Team Flashii'),
('lock_authentication', '0'),
('min_entropy', '1'),
('sitedesc', 'Live development environment for the script that powers Flashii.net called Sakura.'),
('sitetags', '[\"Flashii\",\"Media\",\"Flashwave\",\"Circle\",\"Zeniea\",\"MalwareUp\",\"Cybernetics\",\"Saibateku\",\"Community\",\"osu!\",\"osu\"]'),
('username_min_length', '3'),
('username_max_length', '16'),
('lock_site', '1'),
('lock_site_reason', 'meow'),
('use_gzip', '0'),
('enable_tpl_cache', '0'),
('paypal_client_id', ''),
('paypal_secret', ''),
('premium_price_per_month', '1.49'),
('premium_rank_id', '8'),
('premium_amount_max', '24'),
('alumni_rank_id', '9'),
('url_main', 'flashii.test'),
('front_page_news_posts', '3'),
('date_format', 'D Y-m-d H:i:s T'),
('news_posts_per_page', '3'),
('avatar_min_width', '20'),
('avatar_min_height', '20'),
('avatar_max_height', '512'),
('avatar_max_width', '512'),
('avatar_max_fsize', '2097152'),
('url_api', 'api.flashii.test'),
('content_path', '/content'),
('user_uploads', 'uploads'),
('no_background_img', 'main/content/pixel.png'),
('no_header_img', 'main/content/images/triangles.png'),
('pixel_img', 'main/content/pixel.png'),
('background_max_fsize', '5242880'),
('background_max_width', '2560'),
('background_max_height', '1440'),
('background_min_height', '16'),
('background_min_width', '16'),
('max_online_time', '500'),
('no_avatar_img', 'main/content/data/{{ TPL }}/images/no-av.png'),
('deactivated_avatar_img', 'main/content/data/{{ TPL }}/images/deactivated-av.png'),
('banned_avatar_img', 'main/content/data/{{ TPL }}/images/banned-av.png'),
('session_check', '2'),
('url_rewrite', '1'),
('members_per_page', '30');
DROP TABLE IF EXISTS `sakura_emoticons`; DROP TABLE IF EXISTS `sakura_emoticons`;
CREATE TABLE `sakura_emoticons` ( CREATE TABLE `sakura_emoticons` (
@ -147,56 +68,16 @@ CREATE TABLE `sakura_emoticons` (
`emote_path` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Path to the image file relative to the content domain.' `emote_path` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Path to the image file relative to the content domain.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_emoticons` (`emote_string`, `emote_path`) VALUES
(':amu:', '/content/images/emoticons/amu.png'),
(':angrier:', '/content/images/emoticons/angrier.png'),
(':angriest:', '/content/images/emoticons/angriest.png'),
(':angry:', '/content/images/emoticons/angry.gif'),
(':blank:', '/content/images/emoticons/blank.png'),
(':childish:', '/content/images/emoticons/childish.png'),
(':congrats:', '/content/images/emoticons/congrats.png'),
(':crying:', '/content/images/emoticons/crying.gif'),
(':dizzy:', '/content/images/emoticons/dizzy.gif'),
(':eat:', '/content/images/emoticons/eat.gif'),
(':evil:', '/content/images/emoticons/evil.png'),
(':extreme:', '/content/images/emoticons/extreme.png'),
(':glare:', '/content/images/emoticons/glare.gif'),
(':happy:', '/content/images/emoticons/happy.gif'),
(':horror:', '/content/images/emoticons/horror.gif'),
(':huh:', '/content/images/emoticons/huh.png'),
(':idea:', '/content/images/emoticons/idea.png'),
(':jew:', '/content/images/emoticons/jew.png'),
(':kiss:', '/content/images/emoticons/kiss.gif'),
(':lmao:', '/content/images/emoticons/lmao.gif'),
(':lol:', '/content/images/emoticons/lol.gif'),
(':love:', '/content/images/emoticons/love.png'),
(':meow:', '/content/images/emoticons/meow.png'),
(':omg:', '/content/images/emoticons/omg.gif'),
(':ouch:', '/content/images/emoticons/ouch.gif'),
(':puke:', '/content/images/emoticons/puke.gif'),
(':ruse:', '/content/images/emoticons/ruse.png'),
(':sad:', '/content/images/emoticons/sad.png'),
(':sigh:', '/content/images/emoticons/sigh.gif'),
(':suspicious:', '/content/images/emoticons/suspicious.gif'),
(':sweat:', '/content/images/emoticons/sweat.gif'),
(':tired:', '/content/images/emoticons/tired.gif'),
(':yay:', '/content/images/emoticons/vhappy.gif'),
(':winxp:', '/content/images/emoticons/winxp.png'),
(':wtf:', '/content/images/emoticons/wtf.gif'),
(':sleep:', '/content/images/emoticons/zzz.gif'),
(':what:', '/content/images/emoticons/what.png'),
(':smug:', '/content/images/emoticons/smug.png');
DROP TABLE IF EXISTS `sakura_error_log`; DROP TABLE IF EXISTS `sakura_error_log`;
CREATE TABLE `sakura_error_log` ( CREATE TABLE `sakura_error_log` (
`id` varchar(32) COLLATE utf8_bin NOT NULL, `id` varchar(32) COLLATE utf8_bin NOT NULL COMMENT 'An ID that is created when an error occurs.',
`timestamp` varchar(128) COLLATE utf8_bin NOT NULL, `timestamp` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'A datestring from when the error occurred.',
`error_type` int(16) unsigned NOT NULL, `error_type` int(16) unsigned NOT NULL COMMENT 'The PHP error type of this error.',
`error_line` int(32) unsigned NOT NULL, `error_line` int(32) unsigned NOT NULL COMMENT 'The line that caused this error.',
`error_string` varchar(512) COLLATE utf8_bin NOT NULL, `error_string` varchar(512) COLLATE utf8_bin NOT NULL COMMENT 'PHP''s description of this error.',
`error_file` varchar(512) COLLATE utf8_bin NOT NULL, `error_file` varchar(512) COLLATE utf8_bin NOT NULL COMMENT 'The file in which this error occurred.',
`backtrace` text COLLATE utf8_bin NOT NULL `backtrace` text COLLATE utf8_bin NOT NULL COMMENT 'A full base64 and json encoded backtrace containing all environment data.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
@ -207,7 +88,7 @@ CREATE TABLE `sakura_faq` (
`question` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The question.', `question` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'The question.',
`answer` text COLLATE utf8_bin NOT NULL COMMENT 'The answer.', `answer` text COLLATE utf8_bin NOT NULL COMMENT 'The answer.',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_forums`; DROP TABLE IF EXISTS `sakura_forums`;
@ -220,7 +101,7 @@ CREATE TABLE `sakura_forums` (
`forum_type` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'Forum type, 0 for regular board, 1 for category and 2 for link.', `forum_type` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'Forum type, 0 for regular board, 1 for category and 2 for link.',
`forum_icon` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Display icon for the forum.', `forum_icon` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Display icon for the forum.',
PRIMARY KEY (`forum_id`) PRIMARY KEY (`forum_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_friends`; DROP TABLE IF EXISTS `sakura_friends`;
@ -273,7 +154,7 @@ CREATE TABLE `sakura_messages` (
`subject` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Title of the message', `subject` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Title of the message',
`content` text COLLATE utf8_bin NOT NULL COMMENT 'Contents of the message.', `content` text COLLATE utf8_bin NOT NULL COMMENT 'Contents of the message.',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_news`; DROP TABLE IF EXISTS `sakura_news`;
@ -285,7 +166,7 @@ CREATE TABLE `sakura_news` (
`title` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Title of the post.', `title` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Title of the post.',
`content` text COLLATE utf8_bin NOT NULL COMMENT 'Contents of the post', `content` text COLLATE utf8_bin NOT NULL COMMENT 'Contents of the post',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_notifications`; DROP TABLE IF EXISTS `sakura_notifications`;
@ -303,7 +184,7 @@ CREATE TABLE `sakura_notifications` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `uid` (`uid`), KEY `uid` (`uid`),
CONSTRAINT `sakura_notifications_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `sakura_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `sakura_notifications_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `sakura_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_optionfields`; DROP TABLE IF EXISTS `sakura_optionfields`;
@ -316,10 +197,6 @@ CREATE TABLE `sakura_optionfields` (
UNIQUE KEY `id` (`id`) UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_optionfields` (`id`, `name`, `description`, `formtype`, `require_perm`) VALUES
('disableProfileParallax', 'Disable Parallaxing', 'This will stop your background from responding to your mouse movement, this will only affect your background.', 'checkbox', 'CHANGE_BACKGROUND'),
('profileBackgroundSiteWide', 'Display profile background site wide', 'This will make the profile background you set on your profile appear on the entire site (except on other profiles).', 'checkbox', 'CREATE_BACKGROUND'),
('useMisaki', 'Use the testing style', 'This will make the site use the new Misaki style instead of Yuuno.', 'checkbox', 'ALTER_PROFILE');
DROP TABLE IF EXISTS `sakura_permissions`; DROP TABLE IF EXISTS `sakura_permissions`;
CREATE TABLE `sakura_permissions` ( CREATE TABLE `sakura_permissions` (
@ -331,17 +208,6 @@ CREATE TABLE `sakura_permissions` (
`rankinherit` varchar(4) COLLATE utf8_bin NOT NULL DEFAULT '000' COMMENT 'Rank inheritance, only used when user specific.' `rankinherit` varchar(4) COLLATE utf8_bin NOT NULL DEFAULT '000' COMMENT 'Rank inheritance, only used when user specific.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_permissions` (`rid`, `uid`, `siteperms`, `manageperms`, `forumperms`, `rankinherit`) VALUES
(1, 0, '0000000000000000000000000001', '00', '0', '000'),
(2, 0, '0000111111111100111101101100', '00', '1', '000'),
(3, 0, '0001111111111111111111111100', '11', '1', '000'),
(4, 0, '1111111111111111111111111100', '11', '1', '000'),
(5, 0, '0001111111111111111111111100', '11', '1', '000'),
(6, 0, '0000111111111100111101101100', '00', '0', '000'),
(7, 0, '0001111111111111111111111100', '01', '1', '000'),
(8, 0, '0001111111111111111111111100', '00', '1', '000'),
(9, 0, '0001111111111111111111111100', '00', '1', '000'),
(10, 0, '0000000011010100101000100010', '00', '0', '000');
DROP TABLE IF EXISTS `sakura_posts`; DROP TABLE IF EXISTS `sakura_posts`;
CREATE TABLE `sakura_posts` ( CREATE TABLE `sakura_posts` (
@ -365,7 +231,7 @@ CREATE TABLE `sakura_posts` (
KEY `poster_id` (`poster_id`), KEY `poster_id` (`poster_id`),
CONSTRAINT `sakura_posts_ibfk_1` FOREIGN KEY (`topic_id`) REFERENCES `sakura_topics` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sakura_posts_ibfk_1` FOREIGN KEY (`topic_id`) REFERENCES `sakura_topics` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `sakura_posts_ibfk_2` FOREIGN KEY (`forum_id`) REFERENCES `sakura_forums` (`forum_id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `sakura_posts_ibfk_2` FOREIGN KEY (`forum_id`) REFERENCES `sakura_forums` (`forum_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_premium`; DROP TABLE IF EXISTS `sakura_premium`;
@ -386,7 +252,7 @@ CREATE TABLE `sakura_premium_log` (
`date` int(11) unsigned NOT NULL COMMENT 'Date when the purchase was made.', `date` int(11) unsigned NOT NULL COMMENT 'Date when the purchase was made.',
`comment` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'A short description of the action taken.', `comment` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'A short description of the action taken.',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=143 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_profilefields`; DROP TABLE IF EXISTS `sakura_profilefields`;
@ -399,21 +265,8 @@ CREATE TABLE `sakura_profilefields` (
`description` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Description of the field displayed in the control panel.', `description` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Description of the field displayed in the control panel.',
`additional` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Undocumented JSON array containing special options if needed (probably only going to be used for the YouTube field).', `additional` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Undocumented JSON array containing special options if needed (probably only going to be used for the YouTube field).',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_profilefields` (`id`, `name`, `formtype`, `islink`, `linkformat`, `description`, `additional`) VALUES
(1, 'Website', 'url', 1, '{{ VAL }}', 'URL to your website', ''),
(2, 'Twitter', 'text', 1, 'https://twitter.com/{{ VAL }}', 'Your @twitter Username', ''),
(3, 'BitBucket', 'text', 1, 'https://bitbucket.org/{{ VAL }}', 'Your BitBucket Username', ''),
(4, 'Skype', 'text', 1, 'skype:{{ VAL }}?userinfo', 'Your Skype Username', ''),
(5, 'YouTube', 'text', 0, '', 'ID or Username excluding http://youtube.com/*/', '{\"youtubetype\": [\"checkbox\", \"I <b>do not</b> have a Channel Username (url looks like https://www.youtube.com/channel/UCXZcw5hw5C7Neto-T_nRXBQ).\"]}'),
(6, 'SoundCloud', 'text', 1, 'https://soundcloud.com/{{ VAL }}', 'Your SoundCloud username', ''),
(7, 'Steam', 'text', 1, 'https://steamcommunity.com/id/{{ VAL }}', 'Your Steam Community Username (may differ from login username)', ''),
(8, 'osu!', 'text', 1, 'https://osu.ppy.sh/u/{{ VAL }}', 'Your osu! Username', ''),
(9, 'Origin', 'text', 0, '', 'Your Origin User ID', ''),
(10, 'Xbox Live', 'text', 1, 'https://account.xbox.com/en-GB/Profile?Gamertag={{ VAL }}', 'Your Xbox User ID', ''),
(11, 'PSN', 'text', 1, 'http://psnprofiles.com/{{ VAL }}', 'Your PSN User ID', ''),
(12, 'Last.fm', 'text', 1, 'http://last.fm/user/{{ VAL }}', 'Your Last.fm username', '');
DROP TABLE IF EXISTS `sakura_ranks`; DROP TABLE IF EXISTS `sakura_ranks`;
CREATE TABLE `sakura_ranks` ( CREATE TABLE `sakura_ranks` (
@ -425,19 +278,8 @@ CREATE TABLE `sakura_ranks` (
`description` text COLLATE utf8_bin NOT NULL COMMENT 'A description of what a user of this rank can do/is supposed to do.', `description` text COLLATE utf8_bin NOT NULL COMMENT 'A description of what a user of this rank can do/is supposed to do.',
`title` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Default user title if user has none set.', `title` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Default user title if user has none set.',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `sakura_ranks` (`id`, `name`, `multi`, `hidden`, `colour`, `description`, `title`) VALUES
(1, 'Deactivated', 0, 1, '#555', 'Users that are yet to be activated or that deactivated their own account.', 'Deactivated'),
(2, 'Regular user', 1, 0, 'inherit', 'Regular users with regular permissions.', 'Regular user'),
(3, 'Site moderator', 1, 0, '#0A0', 'Users with special permissions like being able to ban and modify users if needed.', 'Staff'),
(4, 'Administrator', 1, 0, '#C00', 'Users that manage the server and everything around that.', 'Administrator'),
(5, 'Developer', 1, 0, '#824CA0', 'Users that either create or test new features of the site.', 'Staff'),
(6, 'Bot', 1, 1, '#9E8DA7', 'Reserved user accounts for services.', 'Bot'),
(7, 'Chat moderator', 1, 0, '#09F', 'Moderators of the chat room.', 'Staff'),
(8, 'Tenshi', 0, 0, '#EE9400', 'Users that bought premium to help us keep the site and its services alive!', 'Tenshi'),
(9, 'Alumnii', 0, 0, '#FF69B4', 'People who have contributed to the community but have moved on or resigned.', 'Alumnii'),
(10, 'Restricted', 0, 1, '#333', 'Users that are restricted.', 'Restricted');
DROP TABLE IF EXISTS `sakura_regcodes`; DROP TABLE IF EXISTS `sakura_regcodes`;
CREATE TABLE `sakura_regcodes` ( CREATE TABLE `sakura_regcodes` (
@ -478,7 +320,7 @@ CREATE TABLE `sakura_sessions` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `userid` (`userid`), KEY `userid` (`userid`),
CONSTRAINT `sakura_sessions_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `sakura_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `sakura_sessions_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `sakura_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=165 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_topics`; DROP TABLE IF EXISTS `sakura_topics`;
@ -497,7 +339,7 @@ CREATE TABLE `sakura_topics` (
PRIMARY KEY (`topic_id`), PRIMARY KEY (`topic_id`),
KEY `forum_id` (`forum_id`), KEY `forum_id` (`forum_id`),
CONSTRAINT `sakura_topics_ibfk_1` FOREIGN KEY (`forum_id`) REFERENCES `sakura_forums` (`forum_id`) ON DELETE CASCADE ON UPDATE CASCADE CONSTRAINT `sakura_topics_ibfk_1` FOREIGN KEY (`forum_id`) REFERENCES `sakura_forums` (`forum_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_users`; DROP TABLE IF EXISTS `sakura_users`;
@ -515,8 +357,8 @@ CREATE TABLE `sakura_users` (
`rank_main` mediumint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'Main rank of the user.', `rank_main` mediumint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'Main rank of the user.',
`ranks` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '[0]' COMMENT 'Array containing the ranks the user is part of.', `ranks` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '[0]' COMMENT 'Array containing the ranks the user is part of.',
`name_colour` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Additional name colour, when empty colour defaults to group colour.', `name_colour` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Additional name colour, when empty colour defaults to group colour.',
`register_ip` varchar(16) COLLATE utf8_bin NOT NULL COMMENT 'IP used for the creation of this account.', `register_ip` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'IP used for the creation of this account.',
`last_ip` varchar(16) COLLATE utf8_bin NOT NULL COMMENT 'Last IP that was used to log into this account.', `last_ip` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Last IP that was used to log into this account.',
`usertitle` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'Custom user title of the user, when empty reverts to their derault group name.', `usertitle` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'Custom user title of the user, when empty reverts to their derault group name.',
`regdate` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Timestamp of account creation.', `regdate` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Timestamp of account creation.',
`lastdate` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Last time anything was done on this account.', `lastdate` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Last time anything was done on this account.',
@ -526,7 +368,7 @@ CREATE TABLE `sakura_users` (
`userData` text COLLATE utf8_bin COMMENT 'All additional profile data.', `userData` text COLLATE utf8_bin COMMENT 'All additional profile data.',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `username_clean` (`username_clean`) UNIQUE KEY `username_clean` (`username_clean`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `sakura_warnings`; DROP TABLE IF EXISTS `sakura_warnings`;
@ -545,4 +387,4 @@ CREATE TABLE `sakura_warnings` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- 2015-09-05 16:08:34 -- 2015-09-06 14:14:33

View file

@ -7,6 +7,9 @@
// Filesystem path to the _sakura folder WITHOUT an ending / // Filesystem path to the _sakura folder WITHOUT an ending /
// This can also be set before an include of this file in case // This can also be set before an include of this file in case
// you're using git to keep in sync and don't want conflicts // you're using git to keep in sync and don't want conflicts
// You can also create a PHP file including this SockChat.php
// file so it's always up-to-date! Don't forget to include the
// variable below in the file __BEFORE__ the include!
if(!isset($sockSakuraPath)) { if(!isset($sockSakuraPath)) {
$sockSakuraPath = ''; $sockSakuraPath = '';

View file

@ -22,10 +22,11 @@ if(isset($_REQUEST['mode'])) {
if(!isset($_REQUEST['time']) || $_REQUEST['time'] < time() - 1000) { if(!isset($_REQUEST['time']) || $_REQUEST['time'] < time() - 1000) {
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $urls->format('AUTH_ACTION'), 'redirect' => $urls->format('AUTH_ACTION'),
'message' => 'Timestamps differ too much, refresh the page and try again.', 'message' => 'Timestamps differ too much, refresh the page and try again.',
'success' => 0 'success' => 0
]; ];
// Prevent // Prevent
@ -37,10 +38,11 @@ if(isset($_REQUEST['mode'])) {
if(!isset($_REQUEST['session']) || $_REQUEST['session'] != session_id()) { if(!isset($_REQUEST['session']) || $_REQUEST['session'] != session_id()) {
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $urls->format('AUTH_ACTION'), 'redirect' => $urls->format('AUTH_ACTION'),
'message' => 'Invalid session, please try again.', 'message' => 'Invalid session, please try again.',
'success' => 0 'success' => 0
]; ];
// Prevent // Prevent
@ -58,10 +60,11 @@ if(isset($_REQUEST['mode'])) {
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Authentication',
'redirect' => $urls->format('SITE_HOME'), 'redirect' => $urls->format('SITE_HOME'),
'message' => 'You are already authenticated. Redirecting...', 'message' => 'You are already authenticated. Redirecting...',
'success' => 1 'success' => 1
]; ];
} }
@ -78,10 +81,11 @@ if(isset($_REQUEST['mode'])) {
// Add page specific data // Add page specific data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Logout',
'redirect' => ($logout ? $_REQUEST['redirect'] : $urls->format('SITE_LOGIN')), 'redirect' => ($logout ? $_REQUEST['redirect'] : $urls->format('SITE_LOGIN')),
'message' => $logout ? 'You are now logged out.' : 'An unknown error occurred.', 'message' => $logout ? 'You are now logged out.' : 'An unknown error occurred.',
'success' => $logout ? 1 : 0 'success' => $logout ? 1 : 0
]; ];
break; break;
@ -93,6 +97,7 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'INVALID_VERK' => 'The verification key supplied was invalid!', 'INVALID_VERK' => 'The verification key supplied was invalid!',
'INVALID_CODE' => 'Invalid verification key, if you think this is an error contact the administrator.', 'INVALID_CODE' => 'Invalid verification key, if you think this is an error contact the administrator.',
'INVALID_USER' => 'The used verification key is not designated for this user.', 'INVALID_USER' => 'The used verification key is not designated for this user.',
@ -100,14 +105,16 @@ if(isset($_REQUEST['mode'])) {
'PASS_TOO_SHIT' => 'Your password is too weak, try adding some special characters.', 'PASS_TOO_SHIT' => 'Your password is too weak, try adding some special characters.',
'PASS_NOT_MATCH' => 'Passwords do not match.', 'PASS_NOT_MATCH' => 'Passwords do not match.',
'SUCCESS' => 'Successfully changed your password, you may now log in.' 'SUCCESS' => 'Successfully changed your password, you may now log in.'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Forgot Password',
'redirect' => ($passforget[0] ? $urls->format('SITE_LOGIN') : $_SERVER['PHP_SELF'] .'?pw=true&uid='. $_REQUEST['uid'] .'&verk='. $_REQUEST['verk']), 'redirect' => ($passforget[0] ? $urls->format('SITE_LOGIN') : $_SERVER['PHP_SELF'] .'?pw=true&uid='. $_REQUEST['uid'] .'&verk='. $_REQUEST['verk']),
'message' => $messages[$passforget[1]], 'message' => $messages[$passforget[1]],
'success' => $passforget[0] 'success' => $passforget[0]
]; ];
break; break;
@ -120,19 +127,22 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'USER_NOT_EXIST' => 'The user you tried to activate does not exist.', 'USER_NOT_EXIST' => 'The user you tried to activate does not exist.',
'USER_ALREADY_ACTIVE' => 'The user you tried to activate is already active.', 'USER_ALREADY_ACTIVE' => 'The user you tried to activate is already active.',
'INVALID_CODE' => 'Invalid activation code, if you think this is an error contact the administrator.', 'INVALID_CODE' => 'Invalid activation code, if you think this is an error contact the administrator.',
'INVALID_USER' => 'The used activation code is not designated for this user.', 'INVALID_USER' => 'The used activation code is not designated for this user.',
'SUCCESS' => 'Successfully activated your account, you may now log in.' 'SUCCESS' => 'Successfully activated your account, you may now log in.'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Activate account',
'redirect' => $urls->format('SITE_LOGIN'), 'redirect' => $urls->format('SITE_LOGIN'),
'message' => $messages[$activate[1]], 'message' => $messages[$activate[1]],
'success' => $activate[0] 'success' => $activate[0]
]; ];
break; break;
@ -145,18 +155,21 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.', 'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.',
'USER_NOT_EXIST' => 'The user you tried to activate does not exist (confirm the username/email combination).', 'USER_NOT_EXIST' => 'The user you tried to activate does not exist (confirm the username/email combination).',
'USER_ALREADY_ACTIVE' => 'The user you tried to activate is already active.', 'USER_ALREADY_ACTIVE' => 'The user you tried to activate is already active.',
'SUCCESS' => 'The activation e-mail has been sent to the address associated with your account.' 'SUCCESS' => 'The activation e-mail has been sent to the address associated with your account.'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Resend Activation',
'redirect' => $urls->format('SITE_HOME'), 'redirect' => $urls->format('SITE_HOME'),
'message' => $messages[$resend[1]], 'message' => $messages[$resend[1]],
'success' => $resend[0] 'success' => $resend[0]
]; ];
break; break;
@ -169,20 +182,23 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.', 'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.',
'USER_NOT_EXIST' => 'The user you tried to log into does not exist.', 'USER_NOT_EXIST' => 'The user you tried to log into does not exist.',
'INCORRECT_PASSWORD' => 'The password you entered was invalid.', 'INCORRECT_PASSWORD' => 'The password you entered was invalid.',
'NOT_ALLOWED' => 'Your account does not have the required permissions to log in.', 'NOT_ALLOWED' => 'Your account does not have the required permissions to log in.',
'NO_LOGIN' => 'Logging into this account is disabled.', 'NO_LOGIN' => 'Logging into this account is disabled.',
'LOGIN_SUCESS' => 'Login successful!' 'LOGIN_SUCESS' => 'Login successful!'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Login',
'redirect' => $login[0] ? $_REQUEST['redirect'] : $urls->format('SITE_LOGIN'), 'redirect' => $login[0] ? $_REQUEST['redirect'] : $urls->format('SITE_LOGIN'),
'message' => $messages[$login[1]], 'message' => $messages[$login[1]],
'success' => $login[0] 'success' => $login[0]
]; ];
break; break;
@ -211,6 +227,7 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.', 'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.',
'DISABLED' => 'Registration is currently disabled.', 'DISABLED' => 'Registration is currently disabled.',
'INVALID_REG_KEY' => 'The given registration code was invalid.', 'INVALID_REG_KEY' => 'The given registration code was invalid.',
@ -225,14 +242,16 @@ if(isset($_REQUEST['mode'])) {
'INVALID_MX' => 'No valid MX-Record found on the e-mail address you supplied.', 'INVALID_MX' => 'No valid MX-Record found on the e-mail address you supplied.',
'EMAILSENT' => 'Your registration went through! An activation e-mail has been sent.', 'EMAILSENT' => 'Your registration went through! An activation e-mail has been sent.',
'SUCCESS' => 'Your registration went through! Welcome to '. Configuration::getConfig('sitename') .'!' 'SUCCESS' => 'Your registration went through! Welcome to '. Configuration::getConfig('sitename') .'!'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Register',
'redirect' => ($register[0] ? $urls->format('SITE_LOGIN') : $urls->format('SITE_REGISTER')), 'redirect' => ($register[0] ? $urls->format('SITE_LOGIN') : $urls->format('SITE_REGISTER')),
'message' => $messages[$register[1]], 'message' => $messages[$register[1]],
'success' => $register[0] 'success' => $register[0]
]; ];
break; break;
@ -245,18 +264,21 @@ if(isset($_REQUEST['mode'])) {
// Array containing "human understandable" messages // Array containing "human understandable" messages
$messages = [ $messages = [
'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.', 'AUTH_LOCKED' => 'Authentication is currently not allowed, try again later.',
'USER_NOT_EXIST' => 'The requested user does not exist (confirm the username/email combination).', 'USER_NOT_EXIST' => 'The requested user does not exist (confirm the username/email combination).',
'NOT_ALLOWED' => 'Your account does not have the required permissions to change your password.', 'NOT_ALLOWED' => 'Your account does not have the required permissions to change your password.',
'SUCCESS' => 'The password reset e-mail has been sent to the address associated with your account.' 'SUCCESS' => 'The password reset e-mail has been sent to the address associated with your account.'
]; ];
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Lost Password',
'redirect' => $urls->format('SITE_FORGOT_PASSWORD'), 'redirect' => $urls->format('SITE_FORGOT_PASSWORD'),
'message' => $messages[$passforgot[1]], 'message' => $messages[$passforgot[1]],
'success' => $passforgot[0] 'success' => $passforgot[0]
]; ];
break; break;
@ -268,13 +290,9 @@ if(isset($_REQUEST['mode'])) {
// Print page contents or if the AJAX request is set only display the render data // Print page contents or if the AJAX request is set only display the render data
print isset($_REQUEST['ajax']) ? print isset($_REQUEST['ajax']) ?
( (
$renderData['page']['title'] $renderData['page']['message'] .'|'.
. '|' $renderData['page']['success'] .'|'.
. $renderData['page']['message'] $renderData['page']['redirect']
. '|'
. $renderData['page']['success']
. '|'
. $renderData['page']['redirect']
) : ) :
Templates::render('global/information.tpl', $renderData); Templates::render('global/information.tpl', $renderData);
exit; exit;
@ -282,9 +300,6 @@ if(isset($_REQUEST['mode'])) {
} }
// Add page specific things // Add page specific things
$renderData['page'] = [
'title' => 'Authentication'
];
$renderData['auth'] = [ $renderData['auth'] = [
'redirect' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $urls->format('SITE_HOME'), 'redirect' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $urls->format('SITE_HOME'),
@ -301,9 +316,10 @@ if(Users::checkLogin()) {
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Authentication',
'redirect' => $urls->format('SITE_HOME'), 'redirect' => $urls->format('SITE_HOME'),
'message' => 'You are already logged in, log out to access this page.' 'message' => 'You are already logged in, log out to access this page.'
]; ];
print Templates::render('global/information.tpl', $renderData); print Templates::render('global/information.tpl', $renderData);
@ -315,8 +331,10 @@ if(Users::checkLogin()) {
if(count($regUserIP = Users::getUsersByIP(Main::getRemoteIP()))) { if(count($regUserIP = Users::getUsersByIP(Main::getRemoteIP()))) {
$renderData['auth']['blockRegister'] = [ $renderData['auth']['blockRegister'] = [
'do' => true, 'do' => true,
'username' => $regUserIP[array_rand($regUserIP)]['username'] 'username' => $regUserIP[array_rand($regUserIP)]['username']
]; ];
} }
@ -324,7 +342,6 @@ if(count($regUserIP = Users::getUsersByIP(Main::getRemoteIP()))) {
// If password forgot things are set display password forget thing // If password forgot things are set display password forget thing
if(isset($_REQUEST['pw']) && $_REQUEST['pw']) { if(isset($_REQUEST['pw']) && $_REQUEST['pw']) {
$renderData['page']['title'] = 'Resetting Password';
$renderData['auth']['changingPass'] = true; $renderData['auth']['changingPass'] = true;
$renderData['auth']['userId'] = $_REQUEST['uid']; $renderData['auth']['userId'] = $_REQUEST['uid'];

View file

@ -937,8 +937,9 @@ a#gotop.exit {
#notifications > div { #notifications > div {
cursor: pointer; cursor: pointer;
text-align: left; text-align: left;
display: inline-block; display: flex;
height: 80px; align-items: stretch;
min-height: 80px;
background: rgba(113, 74, 150, .9); background: rgba(113, 74, 150, .9);
border: 1px solid #507; border: 1px solid #507;
border-right-width: 5px; border-right-width: 5px;
@ -959,12 +960,17 @@ a#gotop.exit {
} }
#notifications > div > .notification-icon { #notifications > div > .notification-icon {
float: left;
width: 80px;
height: 80px; height: 80px;
text-align: center; width: 80px;
vertical-align: middle;
background: rgba(0, 0, 0, .5); background: rgba(0, 0, 0, .5);
display: block; flex-shrink: 0;
display: flex;
align-items: center;
}
#notifications > div > .notification-icon > * {
margin: 0 auto;
} }
#notifications > div > .notification-icon > img { #notifications > div > .notification-icon > img {
@ -972,49 +978,58 @@ a#gotop.exit {
max-width: 80px; max-width: 80px;
} }
#notifications > div > .notification-icon > .font-icon {
margin: .34em 0;
}
#notifications > div > .notification-content { #notifications > div > .notification-content {
float: left;
min-width: 350px; min-width: 350px;
max-width: 450px; max-width: 450px;
padding-right: 6px; padding-right: 6px;
border-left: 1px solid rgb(85, 0, 119); border-left: 1px solid #507;
height: 80px;
margin-left: 2px; margin-left: 2px;
padding-left: 8px; flex-grow: 2;
display: flex;
align-content: center;
justify-content: center;
flex-direction: column;
} }
#notifications > div > .notification-content > .notification-title { #notifications > div > .notification-content > .notification-title {
font-weight: 300; font-weight: 300;
font-size: 1.7em; font-size: 1.7em;
margin-top: 1em; line-height: 1.5em;
padding-left: 4px;
border-bottom: 1px solid #507;
} }
#notifications > div > .notification-close:before { #notifications > div > .notification-content > .notification-text {
font-family: FontAwesome; padding-left: 4px;
content: "\f00d";
} }
#notifications > div > .notification-close { #notifications > div > .notification-close {
font-size: 2em; font-size: 2em;
float: right;
height: 80px;
width: 20px; width: 20px;
line-height: 100%;
background: #507; background: #507;
margin-top: -3px; margin-top: -3px;
padding-bottom: 6px; margin-bottom: -3px;
padding-left: 2px; padding-left: 2px;
padding-bottom: 3px;
border-left: 3px solid #507; border-left: 3px solid #507;
line-height: 3.4em;
text-align: center; text-align: center;
display: none; visibility: hidden;
display: flex;
align-items: center;
}
#notifications > div > .notification-close > div {
margin: 0 auto;
} }
#notifications > div:hover > .notification-close { #notifications > div:hover > .notification-close {
display: block; visibility: visible;
}
#notifications > div > .notification-close > div:before {
font-family: FontAwesome;
content: "\f00d";
} }
@media (max-width: 600px) { @media (max-width: 600px) {
@ -1030,19 +1045,17 @@ a#gotop.exit {
} }
#notifications > div { #notifications > div {
height: 40px; min-height: 40px;
width: 100%; width: 100%;
background: rgba(113, 74, 150, 1); background: rgba(113, 74, 150, 1);
border: 0; border: 0;
margin: 0 !important; margin: 0 !important;
box-shadow: 0 0 0;
float: left;
} }
#notifications > div > .notification-icon { #notifications > div > .notification-icon {
width: 40px; width: 40px;
height: 40px; height: 40px;
text-align: center; flex-shrink: 0;
} }
#notifications > div > .notification-icon > img { #notifications > div > .notification-icon > img {
@ -1051,7 +1064,6 @@ a#gotop.exit {
} }
#notifications > div > .notification-icon > .font-icon { #notifications > div > .notification-icon > .font-icon {
margin: .34em 0;
font-size: 2em; font-size: 2em;
} }
@ -1060,16 +1072,21 @@ a#gotop.exit {
min-width: 0; min-width: 0;
width: auto; width: auto;
border-left: 0; border-left: 0;
height: 40px;
margin: 0; margin: 0;
padding-left: 4px; padding-left: 4px;
display: inline-block; flex-grow: 2;
} }
#notifications > div > .notification-content > .notification-title { #notifications > div > .notification-content > .notification-title {
font-weight: 700; font-weight: 700;
font-size: 1em; font-size: 1em;
margin: 0; margin: 0;
padding: 0;
}
#notifications > div > .notification-content > .notification-text {
margin: 0;
padding: 0;
} }
#notifications > div > .notification-close { #notifications > div > .notification-close {
@ -1078,15 +1095,13 @@ a#gotop.exit {
margin: 0; margin: 0;
padding: 0; padding: 0;
border: 0; border: 0;
line-height: 1.5em;
text-align: center;
margin-right: 4px; margin-right: 4px;
display: block; visibility: visible;
flex-shrink: 0;
} }
#notifications > div > .notification-close:after { #notifications > div > .notification-close > div {
clear: both !important; margin-top: -1px;
float: none;
} }
} }

View file

@ -11,7 +11,7 @@ function cookieData(action, name, data) {
return (result = new RegExp('(^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie)) ? result[2] : ''; return (result = new RegExp('(^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie)) ? result[2] : '';
case 'set': case 'set':
document.cookie = name + '=' + data; document.cookie = name + '=' + data + '; path=/';
return null; return null;
default: default:
@ -42,6 +42,7 @@ function notifyUI(content) {
var notifTitle = document.createElement('div'); var notifTitle = document.createElement('div');
var notifText = document.createElement('div'); var notifText = document.createElement('div');
var notifClose = document.createElement('div'); var notifClose = document.createElement('div');
var notifCloseIcon = document.createElement('div');
var notifClear = document.createElement('div'); var notifClear = document.createElement('div');
var iconCont; var iconCont;
@ -87,6 +88,7 @@ function notifyUI(content) {
// Add close button // Add close button
notifClose .className = 'notification-close'; notifClose .className = 'notification-close';
notifClose .setAttribute('onclick', 'notifyClose(this.parentNode.id);'); notifClose .setAttribute('onclick', 'notifyClose(this.parentNode.id);');
notifClose .appendChild(notifCloseIcon);
notif .appendChild(notifClose); notif .appendChild(notifClose);
// Add .clear // Add .clear
@ -543,29 +545,31 @@ function submitPost(action, requestParts, busyView, msg, resetCaptchaOnFailure)
// If using the busy view thing update the text displayed to the return of the request // If using the busy view thing update the text displayed to the return of the request
if(busyView) { if(busyView) {
ajaxBusyView(true, request[1], (request[2] == '1' ? 'ok' : 'fail')); ajaxBusyView(true, request[0], (request[1] == '1' ? 'ok' : 'fail'));
} }
// If request reset the recaptcha on failure // If request reset the recaptcha on failure
if(resetCaptchaOnFailure && request[2] != '1' && sakuraVars.recpatchaEnabled) { if(resetCaptchaOnFailure && request[1] != '1' && sakuraVars.recpatchaEnabled) {
grecaptcha.reset(); grecaptcha.reset();
} }
setTimeout(function(){ setTimeout(function(){
if(busyView) { if(busyView) {
ajaxBusyView(false); ajaxBusyView(false);
} }
if(request[2] == '1') { if(request[1] == '1') {
window.location = request[3]; window.location = request[2];
} }
}, 2000); }, 2000);
return; return;

View file

@ -14,8 +14,9 @@ if(isset($_GET['p'])) {
// Set default variables // Set default variables
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Info pages',
'content' => Main::mdParse("# Unable to load the requested info page.\r\n\r\nCheck the URL and try again.") 'content' => Main::mdParse("# Unable to load the requested info page.\r\n\r\nCheck the URL and try again.")
]; ];
// Set page id // Set page id
@ -48,8 +49,7 @@ $forumMode = isset($_GET['forum']) ? ($_GET['forum'] == true) : false;
$renderData['newsPosts'] = ($forumMode ? null : Main::getNewsPosts(Configuration::getConfig('front_page_news_posts'))); $renderData['newsPosts'] = ($forumMode ? null : Main::getNewsPosts(Configuration::getConfig('front_page_news_posts')));
$renderData['page'] = [ $renderData['page'] = [
'title' => ($forumMode ? 'Forum Listing' : Configuration::getConfig('sitename')), 'friend_req' => Users::getPendingFriends()
'friend_req' => Users::getPendingFriends()
]; ];
$renderData['board'] = [ $renderData['board'] = [

View file

@ -9,19 +9,28 @@ namespace Sakura;
// Include components // Include components
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) .'_sakura/sakura.php'; require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) .'_sakura/sakura.php';
// Add page specific things // CHeck if the user is logged in
$renderData['page'] = [ if(Users::checkLogin()) {
'ranks' => ($_MEMBERLIST_RANKS = Users::getAllRanks()), // Add page specific things
'active' => ($_MEMBERLIST_ACTIVE = (isset($_GET['rank']) && $_GET['rank'] && array_key_exists($_GET['rank'], $_MEMBERLIST_RANKS) ? $_GET['rank'] : 0)), $renderData['page'] = [
'notfound' => ($_MEMBERLIST_NFOUND = (isset($_GET['rank']) && !array_key_exists($_GET['rank'], $_MEMBERLIST_RANKS) && $_GET['rank'] != 0)),
'sorts' => ($_MEMBERLIST_SORTS = ['boxes', 'rectangles', 'list']),
'sort' => isset($_GET['sort']) && $_GET['sort'] && in_array($_GET['sort'], $_MEMBERLIST_SORTS) ? $_GET['sort'] : $_MEMBERLIST_SORTS[0],
'title' => isset($_GET['rank']) && $_GET['rank'] && !$_MEMBERLIST_NFOUND ? 'Viewing '. $_MEMBERLIST_RANKS[$_GET['rank']]['name'] . ($_MEMBERLIST_RANKS[$_GET['rank']]['multi'] ? 's' : '') : 'Member List',
'page' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0,
'users' => array_chunk($_MEMBERLIST_ACTIVE && !$_MEMBERLIST_NFOUND ? Users::getUsersInRank($_MEMBERLIST_ACTIVE, null, true, true) : Users::getAllUsers(), Configuration::getConfig('members_per_page'), true)
]; 'ranks' => ($_MEMBERLIST_RANKS = Users::getAllRanks()),
'active' => ($_MEMBERLIST_ACTIVE = (isset($_GET['rank']) && $_GET['rank'] && array_key_exists($_GET['rank'], $_MEMBERLIST_RANKS) ? $_GET['rank'] : 0)),
'notfound' => ($_MEMBERLIST_NFOUND = (isset($_GET['rank']) && !array_key_exists($_GET['rank'], $_MEMBERLIST_RANKS) && $_GET['rank'] != 0)),
'sorts' => ($_MEMBERLIST_SORTS = ['boxes', 'rectangles', 'list']),
'sort' => isset($_GET['sort']) && $_GET['sort'] && in_array($_GET['sort'], $_MEMBERLIST_SORTS) ? $_GET['sort'] : $_MEMBERLIST_SORTS[0],
'page' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0,
'users' => array_chunk($_MEMBERLIST_ACTIVE && !$_MEMBERLIST_NFOUND ? Users::getUsersInRank($_MEMBERLIST_ACTIVE, null, true, true) : Users::getAllUsers(), Configuration::getConfig('members_per_page'), true)
// Print page contents ];
print Templates::render('main/memberlist.tpl', $renderData);
// Print page contents
print Templates::render('main/memberlist.tpl', $renderData);
} else {
// Else return the restricted page
print Templates::render('global/restricted.tpl', $renderData);
}

View file

@ -17,7 +17,6 @@ $renderData['newsPosts'] = Main::getNewsPosts((isset($_GET['id']) && !isset($_GE
$renderData['page'] = [ $renderData['page'] = [
'title' => (isset($_GET['id']) ? (count($renderData['newsPosts']) ? $renderData['newsPosts'][0]['title'] : 'Post does not exist!') : 'News'),
'view_post' => isset($_GET['id']) && count($renderData['newsPosts']), 'view_post' => isset($_GET['id']) && count($renderData['newsPosts']),
'currentPage' => 0 'currentPage' => 0
@ -28,23 +27,27 @@ if(isset($_GET['xml'])) {
// Meta data attributes // Meta data attributes
$metaData = [ $metaData = [
'title' => ($_FEED_TITLE = Configuration::getConfig('sitename')) .' News', 'title' => ($_FEED_TITLE = Configuration::getConfig('sitename')) .' News',
'link' => ($_FEED_URL = 'http://'. Configuration::getConfig('url_main')), 'link' => ($_FEED_URL = 'http://'. Configuration::getConfig('url_main')),
'description' => 'News about '. $_FEED_TITLE, 'description' => 'News about '. $_FEED_TITLE,
'language' => 'en-gb', 'language' => 'en-gb',
'webMaster' => (new User(1))->data['email'] .' ('. $_FEED_TITLE .' Webmaster)', 'webMaster' => (new User(1))->data['email'] .' ('. $_FEED_TITLE .' Webmaster)',
'pubDate' => ($_FEED_DATE = date('r', $renderData['newsPosts'][0]['date'])), 'pubDate' => ($_FEED_DATE = date('r', $renderData['newsPosts'][0]['date'])),
'lastBuildDate' => $_FEED_DATE, 'lastBuildDate' => $_FEED_DATE
]; ];
// Item attributes // Item attributes
$itemData = [ $itemData = [
'title' => ['text' => '{EVAL}', 'eval' => '$newsPost["title"]'], 'title' => ['text' => '{EVAL}', 'eval' => '$newsPost["title"]'],
'link' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'], 'link' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'],
'guid' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'], 'guid' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'],
'pubDate' => ['text' => '{EVAL}', 'eval' => 'date("D, d M Y G:i:s O", $newsPost["date"])'], 'pubDate' => ['text' => '{EVAL}', 'eval' => 'date("D, d M Y G:i:s O", $newsPost["date"])'],
'dc:publisher' => ['text' => '{EVAL}', 'eval' => '$newsPost["udata"]["username"]'], 'dc:publisher' => ['text' => '{EVAL}', 'eval' => '$newsPost["udata"]["username"]'],
'description' => ['cdata' => '{EVAL}', 'eval' => '$newsPost["parsed"]'], 'description' => ['cdata' => '{EVAL}', 'eval' => '$newsPost["parsed"]']
]; ];
// Create a new DOM document // Create a new DOM document

View file

@ -16,14 +16,5 @@ $profile = new User(isset($_GET['u']) ? $_GET['u'] : 0);
// Assign the object to a renderData variable // Assign the object to a renderData variable
$renderData['profile'] = $profile; $renderData['profile'] = $profile;
// Set proper page title
$renderData['page']['title'] = (
$profile->checkPermission('SITE', 'DEACTIVATED') || $profile->data['password_algo'] == 'nologin' || ($profile->checkPermission('SITE', 'RESTRICTED') && ($profile->data['id'] != $currentUser->data['id'] && !$currentUser->checkPermission('MANAGE', 'USE_MANAGE')))
? 'User not found!'
: 'Profile of '. $profile->data['username']
);
// Print page contents // Print page contents
print Templates::render('profile/index.tpl', $renderData); print Templates::render('profile/index.tpl', $renderData);

View file

@ -76,7 +76,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'One of the required operators isn\'t set.', 'message' => 'One of the required operators isn\'t set.',
'success' => 0 'success' => 0
@ -93,7 +92,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'You can\'t be friends with yourself, stop trying to bend reality.', 'message' => 'You can\'t be friends with yourself, stop trying to bend reality.',
'success' => 0 'success' => 0
@ -110,7 +108,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Timestamps differ too much, refresh the page and try again.', 'message' => 'Timestamps differ too much, refresh the page and try again.',
'success' => 0 'success' => 0
@ -127,7 +124,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Action failed',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Invalid session, please try again.', 'message' => 'Invalid session, please try again.',
'success' => 0 'success' => 0
@ -169,7 +165,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Add page specific things // Add page specific things
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Managing Friends',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => $messages[$action[1]], 'message' => $messages[$action[1]],
'success' => $action[0] 'success' => $action[0]
@ -199,13 +194,9 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Print page contents or if the AJAX request is set only display the render data // Print page contents or if the AJAX request is set only display the render data
print isset($_REQUEST['ajax']) ? print isset($_REQUEST['ajax']) ?
( (
$renderData['page']['title'] $renderData['page']['message'] .'|'.
. '|' $renderData['page']['success'] .'|'.
. $renderData['page']['message'] $renderData['page']['redirect']
. '|'
. $renderData['page']['success']
. '|'
. $renderData['page']['redirect']
) : ) :
Templates::render('global/information.tpl', $renderData); Templates::render('global/information.tpl', $renderData);
exit; exit;
@ -222,7 +213,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Settings',
'redirect' => '/authenticate', 'redirect' => '/authenticate',
'message' => 'You must be logged in to edit your settings.', 'message' => 'You must be logged in to edit your settings.',
'success' => 0 'success' => 0
@ -238,7 +228,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Session expired',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Your session has expired, please refresh the page and try again.', 'message' => 'Your session has expired, please refresh the page and try again.',
'success' => 0 'success' => 0
@ -285,7 +274,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'You are not allowed to alter your '. strtolower($msgTitle) .'.', 'message' => 'You are not allowed to alter your '. strtolower($msgTitle) .'.',
'success' => 0 'success' => 0
@ -307,7 +295,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'No file was uploaded.', 'message' => 'No file was uploaded.',
'success' => 0 'success' => 0
@ -348,7 +335,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => $msg, 'message' => $msg,
'success' => 0 'success' => 0
@ -371,7 +357,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Uploaded file is not an image.', 'message' => 'Uploaded file is not an image.',
'success' => 0 'success' => 0
@ -388,7 +373,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'This filetype is not allowed.', 'message' => 'This filetype is not allowed.',
'success' => 0 'success' => 0
@ -405,7 +389,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'The resolution of this picture is too big.', 'message' => 'The resolution of this picture is too big.',
'success' => 0 'success' => 0
@ -422,7 +405,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'The resolution of this picture is too small.', 'message' => 'The resolution of this picture is too small.',
'success' => 0 'success' => 0
@ -439,7 +421,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'The filesize of this file is too large.', 'message' => 'The filesize of this file is too large.',
'success' => 0 'success' => 0
@ -469,7 +450,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Something went wrong, please try again.', 'message' => 'Something went wrong, please try again.',
'success' => 0 'success' => 0
@ -494,7 +474,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => $msgTitle,
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Updated your '. strtolower($msgTitle) .'!', 'message' => 'Updated your '. strtolower($msgTitle) .'!',
'success' => 1 'success' => 1
@ -551,7 +530,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Profile update',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Your profile has been updated!', 'message' => 'Your profile has been updated!',
'success' => 1 'success' => 1
@ -588,7 +566,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Options change',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Changed your options!', 'message' => 'Changed your options!',
'success' => 1 'success' => 1
@ -609,7 +586,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Userpage',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'Your userpage has been updated!', 'message' => 'Your userpage has been updated!',
'success' => 1 'success' => 1
@ -624,7 +600,6 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Unknown action',
'redirect' => $redirect, 'redirect' => $redirect,
'message' => 'The requested method does not exist.', 'message' => 'The requested method does not exist.',
'success' => 0 'success' => 0
@ -640,13 +615,9 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
// Print page contents or if the AJAX request is set only display the render data // Print page contents or if the AJAX request is set only display the render data
print isset($_REQUEST['ajax']) ? print isset($_REQUEST['ajax']) ?
( (
$renderData['page']['title'] $renderData['page']['message'] .'|'.
. '|' $renderData['page']['success'] .'|'.
. $renderData['page']['message'] $renderData['page']['redirect']
. '|'
. $renderData['page']['success']
. '|'
. $renderData['page']['redirect']
) : ) :
Templates::render('global/information.tpl', $renderData); Templates::render('global/information.tpl', $renderData);
exit; exit;
@ -1031,7 +1002,8 @@ if(Users::checkLogin()) {
// Page data // Page data
$renderData['page'] = [ $renderData['page'] = [
'title' => $pages[$category]['title'] .' / '. $pages[$category]['modes'][$mode]['title'], 'category' => $pages[$category]['title'],
'mode' => $pages[$category]['modes'][$mode]['title'],
'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0, 'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0,
'description' => $pages[$category]['modes'][$mode]['description'] 'description' => $pages[$category]['modes'][$mode]['description']
@ -1115,8 +1087,7 @@ if(Users::checkLogin()) {
} else { } else {
$renderData['page']['title'] = 'Restricted!'; // If not allowed print the restricted page
print Templates::render('global/restricted.tpl', $renderData); print Templates::render('global/restricted.tpl', $renderData);
} }

View file

@ -105,10 +105,13 @@ if(isset($_REQUEST['mode']) && Users::checkLogin() && Permissions::check('SITE',
case 'complete': case 'complete':
print Templates::render('main/premiumcomplete.tpl', array_merge([ print Templates::render('main/premiumcomplete.tpl', array_merge([
'page' => [ 'page' => [
'title' => 'Premium purchase complete!',
'expiration' => ($prem = Users::checkUserPremium(Session::$userId)[2]) !== null ? $prem : 0 'expiration' => ($prem = Users::checkUserPremium(Session::$userId)[2]) !== null ? $prem : 0
] ]
], $renderData)); ], $renderData));
break; break;
@ -129,7 +132,6 @@ if(isset($_GET['tracker'])) {
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Donation Tracker',
'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0, 'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0,
'premiumData' => ($_PREMIUM = Main::getPremiumTrackerData()), 'premiumData' => ($_PREMIUM = Main::getPremiumTrackerData()),
'premiumTable' => array_chunk($_PREMIUM['table'], 20, true) 'premiumTable' => array_chunk($_PREMIUM['table'], 20, true)
@ -144,7 +146,6 @@ if(isset($_GET['tracker'])) {
// Set default variables // Set default variables
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Support '. Configuration::getConfig('sitename'),
'fail' => isset($_GET['fail']), 'fail' => isset($_GET['fail']),
'price' => Configuration::getConfig('premium_price_per_month'), 'price' => Configuration::getConfig('premium_price_per_month'),
'current' => $currentUser->checkPremium(), 'current' => $currentUser->checkPremium(),

View file

@ -47,12 +47,6 @@ if($forum['forum']['forum_type'] === 2) {
} }
$renderData['page'] = [
'title' => 'Forums / '. $forum['forum']['forum_name']
];
$renderData['board'] = [ $renderData['board'] = [
'forums' => [ 'forums' => [

View file

@ -18,7 +18,6 @@ if(!$topic) {
// Set render data // Set render data
$renderData['page'] = [ $renderData['page'] = [
'title' => 'Information',
'message' => 'The topic you tried to access does not exist.' 'message' => 'The topic you tried to access does not exist.'
]; ];
@ -37,11 +36,6 @@ $renderData = array_merge($renderData, $topic, [
'viewforum' => false, 'viewforum' => false,
'viewtopic' => true, 'viewtopic' => true,
],
'page' => [
'title' => $topic['topic']['topic_title']
] ]
]); ]);