css changes
This commit is contained in:
parent
3cb57d458e
commit
d635224dff
14 changed files with 474 additions and 459 deletions
|
@ -94,7 +94,8 @@ INSERT INTO `fii_profilefields` (`id`, `name`, `formtype`, `description`, `addit
|
|||
(8, 'osu!', 'text', 'Your osu! Username', ''),
|
||||
(9, 'Origin', 'text', 'Your Origin User ID', ''),
|
||||
(10, 'Xbox Live', 'text', 'Your Xbox User ID', ''),
|
||||
(11, 'PSN', 'text', 'Your PSN User ID', '');
|
||||
(11, 'PSN', 'text', 'Your PSN User ID', '')
|
||||
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `name` = VALUES(`name`), `formtype` = VALUES(`formtype`), `description` = VALUES(`description`), `additional` = VALUES(`additional`);
|
||||
|
||||
DROP TABLE IF EXISTS `fii_ranks`;
|
||||
CREATE TABLE `fii_ranks` (
|
||||
|
@ -108,15 +109,16 @@ CREATE TABLE `fii_ranks` (
|
|||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
INSERT INTO `fii_ranks` (`id`, `name`, `multi`, `colour`, `description`, `title`) VALUES
|
||||
(1, 'Deactivated', 0, '555', 'Users that are yet to be activated or that deactivated their own account.', 'Deactivated'),
|
||||
(2, 'Regular user', 1, '', 'Regular users with regular permissions.', 'Regular user'),
|
||||
(3, 'Site moderator', 1, '0A0', 'Users with special permissions like being able to ban and modify users if needed.', 'Staff'),
|
||||
(4, 'Administrator', 1, 'C00', 'Users that manage the server and everything around that.', 'Administrator'),
|
||||
(5, 'Developer', 1, '824CA0', 'Users that either create or test new features of the site.', 'Staff'),
|
||||
(6, 'Bot', 1, '9E8DA7', 'Reserved user accounts for services.', 'Bot'),
|
||||
(7, 'Chat moderator', 1, '09F', 'Moderators of the chat room.', 'Staff'),
|
||||
(8, 'Tenshi', 0, 'EE9400', 'Users that donated $5.00 or more in order to keep the site and it\'s services alive!', 'Tenshi'),
|
||||
(9, 'Alumnii', 0, 'FF69B4', 'People who have contributed to the community but have moved on or resigned.', 'Alumnii');
|
||||
(1, 'Deactivated', 0, '#555', 'Users that are yet to be activated or that deactivated their own account.', 'Deactivated'),
|
||||
(2, 'Regular user', 1, 'inherit', 'Regular users with regular permissions.', 'Regular user'),
|
||||
(3, 'Site moderator', 1, '#0A0', 'Users with special permissions like being able to ban and modify users if needed.', 'Staff'),
|
||||
(4, 'Administrator', 1, '#C00', 'Users that manage the server and everything around that.', 'Administrator'),
|
||||
(5, 'Developer', 1, '#824CA0', 'Users that either create or test new features of the site.', 'Staff'),
|
||||
(6, 'Bot', 1, '#9E8DA7', 'Reserved user accounts for services.', 'Bot'),
|
||||
(7, 'Chat moderator', 1, '#09F', 'Moderators of the chat room.', 'Staff'),
|
||||
(8, 'Tenshi', 0, '#EE9400', 'Users that donated $5.00 or more in order to keep the site and it\'s services alive!', 'Tenshi'),
|
||||
(9, 'Alumnii', 0, '#FF69B4', 'People who have contributed to the community but have moved on or resigned.', 'Alumnii')
|
||||
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `name` = VALUES(`name`), `multi` = VALUES(`multi`), `colour` = VALUES(`colour`), `description` = VALUES(`description`), `title` = VALUES(`title`);
|
||||
|
||||
DROP TABLE IF EXISTS `fii_regcodes`;
|
||||
CREATE TABLE `fii_regcodes` (
|
||||
|
@ -138,8 +140,9 @@ CREATE TABLE `fii_sessions` (
|
|||
`skey` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'Session key, allow direct access to the user''s account. ',
|
||||
`started` int(64) unsigned NOT NULL COMMENT 'The timestamp for when the session was started. ',
|
||||
`expire` int(64) unsigned NOT NULL COMMENT 'The timestamp for when this session should end, -1 for permanent. ',
|
||||
`remember` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'If set to 1 session will be extended each time a page is loaded.',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `fii_tenshi`;
|
||||
|
@ -177,6 +180,7 @@ CREATE TABLE `fii_users` (
|
|||
`lastdate` int(16) unsigned NOT NULL COMMENT 'Last time anything was done on this account.',
|
||||
`lastunamechange` int(16) unsigned NOT NULL COMMENT 'Last username change.',
|
||||
`birthday` varchar(16) COLLATE utf8_bin DEFAULT NULL COMMENT 'Birthdate of the user.',
|
||||
`country` varchar(4) COLLATE utf8_bin NOT NULL COMMENT 'Contains ISO 3166 country code of user''s registration location.',
|
||||
`profile_data` text COLLATE utf8_bin NOT NULL COMMENT 'Modular array containing profile data.',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username_clean` (`username_clean`)
|
||||
|
@ -195,4 +199,4 @@ CREATE TABLE `fii_warnings` (
|
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
|
||||
-- 2015-04-12 01:50:57
|
||||
-- 2015-04-13 10:06:13
|
||||
|
|
|
@ -96,6 +96,14 @@ class Users {
|
|||
|
||||
}
|
||||
|
||||
// Logout and kill the session
|
||||
public static function logout() {
|
||||
|
||||
// Remove the active session from the database
|
||||
// Session::deleteSession($id, $key);
|
||||
|
||||
}
|
||||
|
||||
// Check if a user exists
|
||||
public static function userExists($user, $id = true) {
|
||||
|
||||
|
|
|
@ -1,270 +1,274 @@
|
|||
<?php
|
||||
/*
|
||||
* Sakura MySQL Database Engine
|
||||
*/
|
||||
|
||||
namespace Sakura;
|
||||
|
||||
use PDO;
|
||||
use PDOException;
|
||||
use PDOStatement;
|
||||
|
||||
class Database {
|
||||
|
||||
// Variable that will contain the SQL connection
|
||||
// Please refrain from referring to this, unless it's for your personal branch/purpose, despite it being public
|
||||
// it sort of defeats the "dynamic database system" I want to go for.
|
||||
public static $sql;
|
||||
|
||||
// Constructor
|
||||
public static function init() {
|
||||
|
||||
if(!extension_loaded('PDO')) {
|
||||
// Return error and die
|
||||
trigger_error('<b>SQL Driver</b>: PDO extension not loaded.', E_USER_ERROR);
|
||||
}
|
||||
|
||||
// Initialise connection
|
||||
self::initConnect(
|
||||
(
|
||||
Configuration::getLocalConfig('db', 'unixsocket') ?
|
||||
self::prepareSock(
|
||||
Configuration::getLocalConfig('db', 'host'),
|
||||
Configuration::getLocalConfig('db', 'database')
|
||||
) :
|
||||
self::prepareHost(
|
||||
Configuration::getLocalConfig('db', 'host'),
|
||||
Configuration::getLocalConfig('db', 'database'),
|
||||
(
|
||||
Configuration::getLocalConfig('db', 'port') !== null ?
|
||||
Configuration::getLocalConfig('db', 'port') :
|
||||
3306
|
||||
)
|
||||
)
|
||||
),
|
||||
Configuration::getLocalConfig('db', 'username'),
|
||||
Configuration::getLocalConfig('db', 'password')
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// Regular IP/Hostname connection method prepare function
|
||||
private static function prepareHost($dbHost, $dbName, $dbPort = 3306) {
|
||||
|
||||
$DSN = 'mysql:host=' . $dbHost . ';port=' . $dbPort . ';dbname=' . $dbName;
|
||||
|
||||
return $DSN;
|
||||
|
||||
}
|
||||
|
||||
// Unix Socket connection method prepare function
|
||||
private static function prepareSock($dbHost, $dbName) {
|
||||
|
||||
$DSN = 'mysql:unix_socket=' . $dbHost . ';dbname=' . $dbName;
|
||||
|
||||
return $DSN;
|
||||
|
||||
}
|
||||
|
||||
// Initialise connection using default PDO stuff
|
||||
private static function initConnect($DSN, $dbUname, $dbPword) {
|
||||
|
||||
try {
|
||||
// Connect to SQL server using PDO
|
||||
self::$sql = new PDO($DSN, $dbUname, $dbPword);
|
||||
} catch(PDOException $e) {
|
||||
// Catch connection errors
|
||||
trigger_error('SQL Driver: '. $e->getMessage(), E_USER_ERROR);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Fetch array from database
|
||||
public static function fetch($table, $fetchAll = true, $data = null, $order = null, $limit = null, $group = null, $distinct = false, $column = '*') {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'SELECT '. ($distinct ? 'DISTINCT ' : '') . ($column == '*' ? '' : '`') . $column . ($column == '*' ? '' : '`') .' FROM `' . Configuration::getLocalConfig('db', 'prefix') . $table . '`';
|
||||
|
||||
// If $data is set and is an array continue
|
||||
if(is_array($data)) {
|
||||
|
||||
$prepare .= ' WHERE';
|
||||
|
||||
foreach($data as $key => $value) {
|
||||
$prepare .= ' `'. $key .'` '. $value[1] .' :'. $key . ($key == key(array_slice($data, -1, 1, true)) ? '' : ' AND');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If $order is set and is an array continue
|
||||
if(is_array($order)) {
|
||||
|
||||
$prepare .= ' ORDER BY `'. $order[0] .'`'. (!empty($order[1]) && $order[1] ? ' DESC' : '');
|
||||
|
||||
}
|
||||
|
||||
// If $group is set and is an array continue
|
||||
if(is_array($group)) {
|
||||
|
||||
$prepare .= ' GROUP BY';
|
||||
|
||||
foreach($group as $key => $value) {
|
||||
$prepare .= ' `'. $value .'`'. ($key == key(array_slice($group, -1, 1, true)) ? '' : ',');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If $limit is set and is an array continue
|
||||
if(is_array($limit)) {
|
||||
|
||||
$prepare .= ' LIMIT';
|
||||
|
||||
foreach($limit as $key => $value) {
|
||||
$prepare .= ' '. $value . ($key == key(array_slice($limit, -1, 1, true)) ? '' : ',');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Add the finishing semicolon
|
||||
$prepare .= ';';
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Bind those parameters if $data is an array that is
|
||||
if(is_array($data)) {
|
||||
foreach($data as $key => $value) {
|
||||
$query->bindParam(':'. $key, $value[0]);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$query->execute();
|
||||
|
||||
// Do fetch or fetchAll
|
||||
if($fetchAll)
|
||||
$result = $query->fetchAll(PDO::FETCH_BOTH);
|
||||
else
|
||||
$result = $query->fetch(PDO::FETCH_BOTH);
|
||||
|
||||
|
||||
// And return the output
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
// Insert data to database
|
||||
public static function insert($table, $data) {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'INSERT INTO `' . Configuration::getLocalConfig('db', 'prefix') . $table . '` ';
|
||||
|
||||
// Run the foreach statement twice for (`stuff`) VALUES (:stuff)
|
||||
for($i = 0; $i < 2; $i++) {
|
||||
|
||||
$prepare .= '(';
|
||||
|
||||
// Do more shit, don't feel like describing this so yeah
|
||||
foreach($data as $key => $value) {
|
||||
if(strlen($value))
|
||||
$prepare .= ($i ? ':' : '`') . $key . ($i ? '' : '`') . ($key == key(array_slice($data, -1, 1, true)) ? '' : ', ');
|
||||
}
|
||||
|
||||
$prepare .= ')' . ($i ? ';' : ' VALUES ');
|
||||
|
||||
}
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Bind those parameters
|
||||
foreach($data as $key => $value) {
|
||||
if(strlen($value))
|
||||
$query->bindParam(':'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$result = $query->execute();
|
||||
|
||||
// Return whatever can be returned
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
// Update data in the database
|
||||
public static function update($table, $data) {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'UPDATE `' . Configuration::getLocalConfig('db', 'prefix') . $table . '`';
|
||||
|
||||
// Run a foreach on $data and complete the statement
|
||||
foreach($data as $key => $values) {
|
||||
|
||||
// Append WHERE or SET depending on where we are
|
||||
$prepare .= ' '. ($key ? 'WHERE' : 'SET');
|
||||
|
||||
// Do this complicated shit, I barely know what's going on anymore but it works
|
||||
foreach($values as $column => $column_data) {
|
||||
$prepare .= ' `'. $column .'` '. ($key ? $column_data[1] : '=') .' :'. ($key ? 'w' : 's') .'_'. $column . ($column == key(array_slice($values, -1, 1, true)) ? ($key ? ';' : '') : ($key ? ' AND' : ','));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Seperate the foreaches for the SET and WHERE clauses because it's fucking it up for some odd reason
|
||||
// Bind Set Clauses
|
||||
foreach($data[0] as $key => $value) {
|
||||
// Do the binding
|
||||
$query->bindParam(':s_'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
// Bind Where Clauses
|
||||
foreach($data[1] as $key => $values) {
|
||||
// Assign the array entry to a variable because fuck strict standards
|
||||
$value = $values[0];
|
||||
|
||||
// Binding two electrifying memes
|
||||
$query->bindParam(':w_'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
unset($values);
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$result = $query->execute();
|
||||
|
||||
// Return whatever can be returned
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
<?php
|
||||
/*
|
||||
* Sakura MySQL Database Engine
|
||||
*/
|
||||
|
||||
namespace Sakura;
|
||||
|
||||
use PDO;
|
||||
use PDOException;
|
||||
use PDOStatement;
|
||||
|
||||
class Database {
|
||||
|
||||
// Variable that will contain the SQL connection
|
||||
// Please refrain from referring to this, unless it's for your personal branch/purpose, despite it being public
|
||||
// it sort of defeats the "dynamic database system" I want to go for.
|
||||
public static $sql;
|
||||
|
||||
// Constructor
|
||||
public static function init() {
|
||||
|
||||
if(!extension_loaded('PDO')) {
|
||||
// Return error and die
|
||||
trigger_error('<b>SQL Driver</b>: PDO extension not loaded.', E_USER_ERROR);
|
||||
}
|
||||
|
||||
// Initialise connection
|
||||
self::initConnect(
|
||||
(
|
||||
Configuration::getLocalConfig('db', 'unixsocket') ?
|
||||
self::prepareSock(
|
||||
Configuration::getLocalConfig('db', 'host'),
|
||||
Configuration::getLocalConfig('db', 'database')
|
||||
) :
|
||||
self::prepareHost(
|
||||
Configuration::getLocalConfig('db', 'host'),
|
||||
Configuration::getLocalConfig('db', 'database'),
|
||||
(
|
||||
Configuration::getLocalConfig('db', 'port') !== null ?
|
||||
Configuration::getLocalConfig('db', 'port') :
|
||||
3306
|
||||
)
|
||||
)
|
||||
),
|
||||
Configuration::getLocalConfig('db', 'username'),
|
||||
Configuration::getLocalConfig('db', 'password')
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// Regular IP/Hostname connection method prepare function
|
||||
private static function prepareHost($dbHost, $dbName, $dbPort = 3306) {
|
||||
|
||||
$DSN = 'mysql:host=' . $dbHost . ';port=' . $dbPort . ';dbname=' . $dbName;
|
||||
|
||||
return $DSN;
|
||||
|
||||
}
|
||||
|
||||
// Unix Socket connection method prepare function
|
||||
private static function prepareSock($dbHost, $dbName) {
|
||||
|
||||
$DSN = 'mysql:unix_socket=' . $dbHost . ';dbname=' . $dbName;
|
||||
|
||||
return $DSN;
|
||||
|
||||
}
|
||||
|
||||
// Initialise connection using default PDO stuff
|
||||
private static function initConnect($DSN, $dbUname, $dbPword) {
|
||||
|
||||
try {
|
||||
// Connect to SQL server using PDO
|
||||
self::$sql = new PDO($DSN, $dbUname, $dbPword);
|
||||
} catch(PDOException $e) {
|
||||
// Catch connection errors
|
||||
trigger_error('SQL Driver: '. $e->getMessage(), E_USER_ERROR);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// Fetch array from database
|
||||
public static function fetch($table, $fetchAll = true, $data = null, $order = null, $limit = null, $group = null, $distinct = false, $column = '*') {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'SELECT '. ($distinct ? 'DISTINCT ' : '') . ($column == '*' ? '' : '`') . $column . ($column == '*' ? '' : '`') .' FROM `' . Configuration::getLocalConfig('db', 'prefix') . $table . '`';
|
||||
|
||||
// If $data is set and is an array continue
|
||||
if(is_array($data)) {
|
||||
|
||||
$prepare .= ' WHERE';
|
||||
|
||||
foreach($data as $key => $value) {
|
||||
$prepare .= ' `'. $key .'` '. $value[1] .' :'. $key . ($key == key(array_slice($data, -1, 1, true)) ? '' : ' AND');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If $order is set and is an array continue
|
||||
if(is_array($order)) {
|
||||
|
||||
$prepare .= ' ORDER BY `'. $order[0] .'`'. (!empty($order[1]) && $order[1] ? ' DESC' : '');
|
||||
|
||||
}
|
||||
|
||||
// If $group is set and is an array continue
|
||||
if(is_array($group)) {
|
||||
|
||||
$prepare .= ' GROUP BY';
|
||||
|
||||
foreach($group as $key => $value) {
|
||||
$prepare .= ' `'. $value .'`'. ($key == key(array_slice($group, -1, 1, true)) ? '' : ',');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If $limit is set and is an array continue
|
||||
if(is_array($limit)) {
|
||||
|
||||
$prepare .= ' LIMIT';
|
||||
|
||||
foreach($limit as $key => $value) {
|
||||
$prepare .= ' '. $value . ($key == key(array_slice($limit, -1, 1, true)) ? '' : ',');
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Add the finishing semicolon
|
||||
$prepare .= ';';
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Bind those parameters if $data is an array that is
|
||||
if(is_array($data)) {
|
||||
foreach($data as $key => $value) {
|
||||
$query->bindParam(':'. $key, $value[0]);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$query->execute();
|
||||
|
||||
// Do fetch or fetchAll
|
||||
if($fetchAll)
|
||||
$result = $query->fetchAll(PDO::FETCH_BOTH);
|
||||
else
|
||||
$result = $query->fetch(PDO::FETCH_BOTH);
|
||||
|
||||
|
||||
// And return the output
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
// Insert data to database
|
||||
public static function insert($table, $data) {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'INSERT INTO `' . Configuration::getLocalConfig('db', 'prefix') . $table . '` ';
|
||||
|
||||
// Run the foreach statement twice for (`stuff`) VALUES (:stuff)
|
||||
for($i = 0; $i < 2; $i++) {
|
||||
|
||||
$prepare .= '(';
|
||||
|
||||
// Do more shit, don't feel like describing this so yeah
|
||||
foreach($data as $key => $value) {
|
||||
if(strlen($value))
|
||||
$prepare .= ($i ? ':' : '`') . $key . ($i ? '' : '`') . ($key == key(array_slice($data, -1, 1, true)) ? '' : ', ');
|
||||
}
|
||||
|
||||
$prepare .= ')' . ($i ? ';' : ' VALUES ');
|
||||
|
||||
}
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Bind those parameters
|
||||
foreach($data as $key => $value) {
|
||||
if(strlen($value))
|
||||
$query->bindParam(':'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$result = $query->execute();
|
||||
|
||||
// Return whatever can be returned
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
// Update data in the database
|
||||
public static function update($table, $data) {
|
||||
|
||||
// Begin preparation of the statement
|
||||
$prepare = 'UPDATE `' . Configuration::getLocalConfig('db', 'prefix') . $table . '`';
|
||||
|
||||
// Run a foreach on $data and complete the statement
|
||||
foreach($data as $key => $values) {
|
||||
|
||||
// Append WHERE or SET depending on where we are
|
||||
$prepare .= ' '. ($key ? 'WHERE' : 'SET');
|
||||
|
||||
// Do this complicated shit, I barely know what's going on anymore but it works
|
||||
foreach($values as $column => $column_data)
|
||||
$prepare .= ' `'. $column .'` '. ($key ? $column_data[1] : '=') .' :'. ($key ? 'w' : 's') .'_'. $column . ($column == key(array_slice($values, -1, 1, true)) ? ($key ? ';' : '') : ($key ? ' AND' : ','));
|
||||
|
||||
}
|
||||
|
||||
// Actually prepare the preration
|
||||
$query = self::$sql->prepare($prepare);
|
||||
|
||||
// Seperate the foreaches for the SET and WHERE clauses because it's fucking it up for some odd reason
|
||||
// Bind Set Clauses
|
||||
foreach($data[0] as $key => $value) {
|
||||
|
||||
// Do the binding
|
||||
$query->bindParam(':s_'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
|
||||
}
|
||||
|
||||
// Bind Where Clauses
|
||||
foreach($data[1] as $key => $values) {
|
||||
|
||||
// Assign the array entry to a variable because fuck strict standards
|
||||
$value = $values[0];
|
||||
|
||||
// Binding two electrifying memes
|
||||
$query->bindParam(':w_'. $key, $value);
|
||||
|
||||
// Unset variables to be safe
|
||||
unset($key);
|
||||
unset($value);
|
||||
unset($values);
|
||||
|
||||
}
|
||||
|
||||
// Execute the prepared statements with parameters bound
|
||||
$result = $query->execute();
|
||||
|
||||
// Return whatever can be returned
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -55,7 +55,8 @@ $renderData = array(
|
|||
'urls' => Configuration::getLocalConfig('urls'),
|
||||
'charset' => Configuration::getConfig('charset'),
|
||||
'currentpage' => $_SERVER['PHP_SELF'],
|
||||
'recaptcha_public' => Configuration::getConfig('recaptcha_public')
|
||||
'recaptcha_public' => Configuration::getConfig('recaptcha_public'),
|
||||
'resources' => '//'. Configuration::getLocalConfig('urls')['content'] .'/data/'. strtolower(Templates::$_TPL)
|
||||
],
|
||||
'php' => [
|
||||
'sessionid' => \session_id(),
|
||||
|
|
|
@ -1,51 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Cannot find page</title>
|
||||
<link rel="stylesheet" type="text/css" href="//{{ sakura.urls.content }}/css/yuuno/error.css" />
|
||||
</head>
|
||||
<body>
|
||||
<audio autoplay="">
|
||||
<source src="//{{ sakura.urls.content }}/snd/notfound.ogg" type="audio/ogg" />
|
||||
<source src="//{{ sakura.urls.content }}/snd/notfound.mp3" type="audio/mp3" />
|
||||
</audio>
|
||||
<div id="wrap">
|
||||
<h1>
|
||||
<img src="//{{ sakura.urls.content }}/img/404-info.gif" />
|
||||
The page cannot be found
|
||||
</h1>
|
||||
<p>
|
||||
The page you are looking for might have been removed, had its
|
||||
name changed, or is temporarily unavailable.
|
||||
</p>
|
||||
<hr />
|
||||
<h2>
|
||||
Please try the following:
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
If you typed the page address in the Address bar, make
|
||||
sure that it is spelled correctly.
|
||||
</li>
|
||||
<li>
|
||||
Open the <a href="/">flashii.net</a>
|
||||
home page, and then look for links to the information you want.
|
||||
</li>
|
||||
<li>
|
||||
Click the <img src="//{{ sakura.urls.content }}/img/404-back.gif" /><a href="javascript:;" onclick="history.go(-1);">Back</a>
|
||||
button to try another link.
|
||||
</li>
|
||||
<li>
|
||||
Click <img src="//{{ sakura.urls.content }}/img/404-search.gif" /><a href="http://www.bing.com/search?q=flashii">Search</a>
|
||||
to look for information on the Internet.
|
||||
</li>
|
||||
</ul>
|
||||
<h3>
|
||||
HTTP 404 - File not found
|
||||
<br />
|
||||
Internet Explorer
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Cannot find page</title>
|
||||
<link rel="stylesheet" type="text/css" href="{{ sakura.resources }}/css/error.css" />
|
||||
</head>
|
||||
<body>
|
||||
<audio autoplay="">
|
||||
<source src="//{{ sakura.urls.content }}/sounds/notfound.ogg" type="audio/ogg" />
|
||||
<source src="//{{ sakura.urls.content }}/sounds/notfound.mp3" type="audio/mp3" />
|
||||
</audio>
|
||||
<div id="wrap">
|
||||
<h1>
|
||||
<img src="{{ sakura.resources }}/images/404-info.gif" />
|
||||
The page cannot be found
|
||||
</h1>
|
||||
<p>
|
||||
The page you are looking for might have been removed, had its
|
||||
name changed, or is temporarily unavailable.
|
||||
</p>
|
||||
<hr />
|
||||
<h2>
|
||||
Please try the following:
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
If you typed the page address in the Address bar, make
|
||||
sure that it is spelled correctly.
|
||||
</li>
|
||||
<li>
|
||||
Open the <a href="/">flashii.net</a>
|
||||
home page, and then look for links to the information you want.
|
||||
</li>
|
||||
<li>
|
||||
Click the <img src="{{ sakura.resources }}/images/404-back.gif" /><a href="javascript:;" onclick="history.go(-1);">Back</a>
|
||||
button to try another link.
|
||||
</li>
|
||||
<li>
|
||||
Click <img src="{{ sakura.resources }}/images/404-search.gif" /><a href="http://www.bing.com/search?q=flashii">Search</a>
|
||||
to look for information on the Internet.
|
||||
</li>
|
||||
</ul>
|
||||
<h3>
|
||||
HTTP 404 - File not found
|
||||
<br />
|
||||
Internet Explorer
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
{% endif %}
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" type="text/css" href="//{{ sakura.urls.content }}/global.css" />
|
||||
<link rel="stylesheet" type="text/css" href="//{{ sakura.urls.content }}/css/yuuno/yuuno.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ sakura.resources }}/css/yuuno.css" />
|
||||
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
|
||||
<!-- JS -->
|
||||
<script type="text/javascript" src="//{{ sakura.urls.content }}/js/yuuno.js"></script>
|
||||
<script type="text/javascript" src="{{ sakura.resources }}/js/yuuno.js"></script>
|
||||
<script type="text/javascript">
|
||||
{% if user.loggedin != true %}
|
||||
// Setting the shit so clicking the login link doesn't redirect to /login
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
@font-face {
|
||||
font-family: 'Aller';
|
||||
src: url('//cdn.flashii.net/fonts/aller.eot');
|
||||
src: local("Aller"),
|
||||
url('//cdn.flashii.net/fonts/aller.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/aller.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/aller.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Aller';
|
||||
src: url('/fonts/aller.eot');
|
||||
src: local("Aller"),
|
||||
url('/fonts/aller.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/aller.woff') format('woff'),
|
||||
url('/fonts/aller.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
html {
|
||||
background: url('//cdn.flashii.net/img/satori-error.png') top right no-repeat #FFF;
|
||||
background: url('/images/satori-error.png') top right no-repeat #FFF;
|
||||
font-family: 'verdana', sans-serif;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ a.default:active {
|
|||
}
|
||||
a.gotop {
|
||||
display: inline-block;
|
||||
background: url('//cdn.iihsalf.net/img/arrow.png') #111;
|
||||
background: url('../images/arrow.png') #111;
|
||||
color: #FFF;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
|
@ -258,7 +258,7 @@ a.gotop:active {
|
|||
.header .menu .menu-item.avatar {
|
||||
width: auto;
|
||||
padding-left: 36px;
|
||||
background: url('//cdn.iihsalf.net/pixel.png') no-repeat scroll left center / contain transparent;
|
||||
background: url('/pixel.png') no-repeat scroll left center / contain transparent;
|
||||
}
|
||||
.header .menu .menu-item:hover {
|
||||
border-color: #503180 !important;
|
||||
|
|
|
@ -1,59 +1,58 @@
|
|||
/* Fix unwanted shit some browsers do *looks at chrome* */
|
||||
* {
|
||||
font-size-adjust: none !important;
|
||||
-webkit-appearance: none !important;
|
||||
}
|
||||
|
||||
/* Image border fix */
|
||||
img {
|
||||
border: 0px solid transparent;
|
||||
}
|
||||
|
||||
/* Font faces (not taken from microsoft.com at all) */
|
||||
@font-face {
|
||||
font-family: 'Segoe UI';
|
||||
src: url('//cdn.flashii.net/fonts/segoeui.eot');
|
||||
src: local("Segoe UI"),
|
||||
local("Segoe"),
|
||||
local("Segoe WP"),
|
||||
url('//cdn.flashii.net/fonts/segoeui.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/segoeui.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/segoeui.svg#SegoeUI') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Semibold';
|
||||
src: url('//cdn.flashii.net/fonts/seguisb.eot');
|
||||
src: local("Segoe Semibold"),
|
||||
local("Segoe WP Semibold"),
|
||||
url('//cdn.flashii.net/fonts/seguisb.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/seguisb.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/seguisb.svg#SegoeUISemibold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Bold';
|
||||
src: url('//cdn.flashii.net/fonts/segoeuib.eot');
|
||||
src: local("Segoe Bold"),
|
||||
local("Segoe WP Bold"),
|
||||
url('//cdn.flashii.net/fonts/segoeuib.eot?#iefix') format('eot'), /* Wrong format will tell IE9+ to ignore and use WOFF instead. MSHAR-2822 */
|
||||
url('//cdn.flashii.net/fonts/segoeuib.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/segoeuib.svg#SegoeUIBold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Aller';
|
||||
src: url('//cdn.flashii.net/fonts/aller.eot');
|
||||
src: local("Aller"),
|
||||
url('//cdn.flashii.net/fonts/aller.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/aller.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/aller.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/*
|
||||
* Flashii Global CSS
|
||||
*/
|
||||
|
||||
/* Image border fix */
|
||||
img {
|
||||
border: 0 solid transparent;
|
||||
}
|
||||
|
||||
|
||||
/* Font faces (not taken from microsoft.com at all) */
|
||||
@font-face {
|
||||
font-family: 'Segoe UI';
|
||||
src: url('/fonts/segoeui.eot');
|
||||
src: local("Segoe UI"),
|
||||
local("Segoe"),
|
||||
local("Segoe WP"),
|
||||
url('/fonts/segoeui.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/segoeui.woff') format('woff'),
|
||||
url('/fonts/segoeui.svg#SegoeUI') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Semibold';
|
||||
src: url('/fonts/seguisb.eot');
|
||||
src: local("Segoe Semibold"),
|
||||
local("Segoe WP Semibold"),
|
||||
url('/fonts/seguisb.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/seguisb.woff') format('woff'),
|
||||
url('/fonts/seguisb.svg#SegoeUISemibold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Bold';
|
||||
src: url('/fonts/segoeuib.eot');
|
||||
src: local("Segoe Bold"),
|
||||
local("Segoe WP Bold"),
|
||||
url('/fonts/segoeuib.eot?#iefix') format('eot'), /* Wrong format will tell IE9+ to ignore and use WOFF instead. MSHAR-2822 */
|
||||
url('/fonts/segoeuib.woff') format('woff'),
|
||||
url('/fonts/segoeuib.svg#SegoeUIBold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Aller';
|
||||
src: url('/fonts/aller.eot');
|
||||
src: local("Aller"),
|
||||
url('/fonts/aller.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/aller.woff') format('woff'),
|
||||
url('/fonts/aller.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
|
@ -1,49 +1,49 @@
|
|||
/* Font faces (not taken from microsoft.com at all) */
|
||||
@font-face {
|
||||
font-family: 'Segoe UI';
|
||||
src: url('//cdn.flashii.net/fonts/segoeui.eot');
|
||||
src: local("Segoe UI"),
|
||||
local("Segoe"),
|
||||
local("Segoe WP"),
|
||||
url('//cdn.flashii.net/fonts/segoeui.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/segoeui.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/segoeui.svg#SegoeUI') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Semibold';
|
||||
src: url('//cdn.flashii.net/fonts/seguisb.eot');
|
||||
src: local("Segoe Semibold"),
|
||||
local("Segoe WP Semibold"),
|
||||
url('//cdn.flashii.net/fonts/seguisb.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/seguisb.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/seguisb.svg#SegoeUISemibold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Bold';
|
||||
src: url('//cdn.flashii.net/fonts/segoeuib.eot');
|
||||
src: local("Segoe Bold"),
|
||||
local("Segoe WP Bold"),
|
||||
url('//cdn.flashii.net/fonts/segoeuib.eot?#iefix') format('eot'), /* Wrong format will tell IE9+ to ignore and use WOFF instead. MSHAR-2822 */
|
||||
url('//cdn.flashii.net/fonts/segoeuib.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/segoeuib.svg#SegoeUIBold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Light';
|
||||
src: url('//cdn.flashii.net/fonts/segoeuil.eot');
|
||||
src: local("Segoe UI Light"),
|
||||
local("Segoe WP Light"),
|
||||
url('//cdn.flashii.net/fonts/segoeuil.eot?#iefix') format('embedded-opentype'),
|
||||
url('//cdn.flashii.net/fonts/segoeuil.woff') format('woff'),
|
||||
url('//cdn.flashii.net/fonts/segoeuil.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
/* Font faces (not taken from microsoft.com at all) */
|
||||
@font-face {
|
||||
font-family: 'Segoe UI';
|
||||
src: url('/fonts/segoeui.eot');
|
||||
src: local("Segoe UI"),
|
||||
local("Segoe"),
|
||||
local("Segoe WP"),
|
||||
url('/fonts/segoeui.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/segoeui.woff') format('woff'),
|
||||
url('/fonts/segoeui.svg#SegoeUI') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Semibold';
|
||||
src: url('/fonts/seguisb.eot');
|
||||
src: local("Segoe Semibold"),
|
||||
local("Segoe WP Semibold"),
|
||||
url('/fonts/seguisb.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/seguisb.woff') format('woff'),
|
||||
url('/fonts/seguisb.svg#SegoeUISemibold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Bold';
|
||||
src: url('/fonts/segoeuib.eot');
|
||||
src: local("Segoe Bold"),
|
||||
local("Segoe WP Bold"),
|
||||
url('/fonts/segoeuib.eot?#iefix') format('eot'), /* Wrong format will tell IE9+ to ignore and use WOFF instead. MSHAR-2822 */
|
||||
url('/fonts/segoeuib.woff') format('woff'),
|
||||
url('/fonts/segoeuib.svg#SegoeUIBold') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Segoe UI Light';
|
||||
src: url('/fonts/segoeuil.eot');
|
||||
src: local("Segoe UI Light"),
|
||||
local("Segoe WP Light"),
|
||||
url('/fonts/segoeuil.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/segoeuil.woff') format('woff'),
|
||||
url('/fonts/segoeuil.svg#SegoeUILight') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
|
@ -17,7 +17,7 @@ if(isset($_GET['m'])) {
|
|||
switch($_GET['m']) {
|
||||
case 'avatar':
|
||||
// Set path to no avatar picture
|
||||
$noAvatar = ROOT .'content/img/no-av.png';
|
||||
$noAvatar = ROOT .'content/images/no-av.png';
|
||||
|
||||
// If ?u= isn't set or if it isn't numeric
|
||||
if(!isset($_GET['u']) || !is_numeric($_GET['u'])) {
|
||||
|
|
|
@ -22,7 +22,5 @@ $renderData['stats'] = [
|
|||
'chatOnline' => ($chatOnline = 0) .' user'. ($chatOnline == 1 ? '' : 's')
|
||||
];
|
||||
|
||||
print Session::$userId;
|
||||
|
||||
// Print page contents
|
||||
print Templates::render('main/index.tpl', $renderData);
|
||||
|
|
1
todo.txt
1
todo.txt
|
@ -3,3 +3,4 @@
|
|||
===
|
||||
|
||||
> Fix footer resizing because of the removal of the Affiliates section
|
||||
> Use CloudFlare to get a user's country for their profile
|
||||
|
|
Reference in a new issue