diff --git a/config/config.example.ini b/config/config.example.ini
index 0b24ba2..2205c0d 100644
--- a/config/config.example.ini
+++ b/config/config.example.ini
@@ -1,27 +1,25 @@
; Example Sakura configuration
; Rename this file to config.ini after you're done editing.
-; Database configuration
+; Database configuration according to https://laravel.com/docs/5.2/database#introduction
[database]
-; SQL Driver that should be used.
-; This has to relate to a PHP file in the libraries/DBWrapper folder
-; but must EXCLUDE the .php file extension. (I recommend sticking with the bundled mysql library)
driver = mysql
-; Username used to authenticate with the SQL server
+host = localhost
+
+port = 3306
+
username = sakura
-; Password for the same purpose
password = "password"
-; Table prefix used.
prefix = sakura_
+database = sakura-development
-[dsn]
-host=localhost
-port=3306
-dbname=sakura
+charset = utf8
+
+collation = utf8_unicode_ci
; Data files relative to the root directory
diff --git a/libraries/Comments.php b/libraries/Comments.php
index 0d6546b..a68f055 100644
--- a/libraries/Comments.php
+++ b/libraries/Comments.php
@@ -47,11 +47,11 @@ class Comments
$this->category = $category;
// Get the comments and assign them to $comments
- $comments = DBv2::prepare('SELECT * FROM `{prefix}comments` WHERE `comment_category` = :category AND `comment_reply_to` = 0 ORDER BY `comment_id` DESC');
- $comments->execute([
- 'category' => $this->category,
- ]);
- $comments = $comments->fetchAll(\PDO::FETCH_ASSOC);
+ $comments = DB::table('comments')
+ ->where('comment_category', $this->category)
+ ->where('comment_reply_to', 0)
+ ->orderBy('comment_id', 'desc')
+ ->get();
// Feed them into the sorter
$this->comments = $this->sortComments($comments);
@@ -71,6 +71,9 @@ class Comments
// Sort comments
foreach ($comments as $comment) {
+ // Temporary hackjob to get rid of the old database layer, will reimplement later
+ $comment = get_object_vars($comment);
+
// Attach the poster
$comment['comment_poster'] = User::construct($comment['comment_poster']);
$comment['comment_text'] = BBcode::parseEmoticons(Utils::cleanString($comment['comment_text']));
@@ -82,6 +85,7 @@ class Comments
// Store amount in their respective variables
foreach ($votes as $vote) {
+ $vote = get_object_vars($vote);
if ($vote['vote_state']) {
$comment['comment_likes'] += 1;
} else {
@@ -96,12 +100,11 @@ class Comments
$this->count += 1;
// Attempt to get replies from the database
- $replies = DBv2::prepare('SELECT * FROM `{prefix}comments` WHERE `comment_category` = :category AND `comment_reply_to` = :thread');
- $replies->execute([
- 'category' => $this->category,
- 'thread' => $comment['comment_id'],
- ]);
- $replies = $replies->fetchAll(\PDO::FETCH_ASSOC);
+ $replies = DB::table('comments')
+ ->where('comment_category', $this->category)
+ ->where('comment_reply_to', $comment['comment_id'])
+ ->orderBy('comment_id', 'desc')
+ ->get();
// Check if this was a reply to something
if ($replies) {
@@ -123,11 +126,11 @@ class Comments
public function getComment($cid)
{
// Get from database
- $comment = DBv2::prepare('SELECT * FROM `{prefix}comments` WHERE `comment_id` = :id');
- $comment->execute([
- 'id' => $cid,
- ]);
- return $comment->fetch(\PDO::FETCH_ASSOC);
+ $comment = DB::table('comments')
+ ->where('comment_id', $cid)
+ ->get();
+
+ return $comment ? get_object_vars($comment[0]) : [];
}
/**
@@ -140,11 +143,11 @@ class Comments
public function getVotes($cid)
{
// Get from database
- $comment = DBv2::prepare('SELECT * FROM `{prefix}comment_votes` WHERE `vote_comment` = :id');
- $comment->execute([
- 'id' => $cid,
- ]);
- return $comment->fetchAll(\PDO::FETCH_ASSOC);
+ $comment = DB::table('comment_votes')
+ ->where('vote_comment', $cid)
+ ->get();
+
+ return $comment;
}
/**
@@ -169,14 +172,14 @@ class Comments
}
// Insert into database
- DBv2::prepare('INSERT INTO `{prefix}comments` (`comment_category`, `comment_timestamp`, `comment_poster`, `comment_reply_to`, `comment_text`) VALUES (:cat, :time, :user, :thread, :text)')
- ->execute([
- 'cat' => $this->category,
- 'time' => time(),
- 'user' => $uid,
- 'thread' => (int) $reply,
- 'text' => $content,
- ]);
+ DB::table('comments')
+ ->insert([
+ 'comment_category' => $this->category,
+ 'comment_timestamp' => time(),
+ 'comment_poster' => (int) $uid,
+ 'comment_reply_to' => (int) $reply,
+ 'comment_text' => $content,
+ ]);
// Return success
return [1, 'SUCCESS'];
@@ -194,40 +197,37 @@ class Comments
public function makeVote($uid, $cid, $mode)
{
// Attempt to get previous vote
- $vote = DBv2::prepare('SELECT * FROM `{prefix}comment_votes` WHERE `vote_user` = :user AND `vote_comment` = :comment');
- $vote->execute([
- 'user' => $uid,
- 'comment' => $cid,
- ]);
- $vote = $vote->fetch(\PDO::FETCH_ASSOC);
+ $vote = DB::table('comment_votes')
+ ->where('vote_user', $uid)
+ ->where('vote_comment', $cid)
+ ->get();
// Check if anything was returned
if ($vote) {
// Check if the vote that's being casted is the same
- if ($vote['vote_state'] == $mode) {
+ if ($vote[0]->vote_state == $mode) {
// Delete the vote
- DBv2::prepare('DELETE FROM `{prefix}comment_votes` WHERE `vote_user` = :user AND `vote_comment` = :comment')
- ->execute([
- 'user' => $uid,
- 'comment' => $cid,
- ]);
+ DB::table('comment_votes')
+ ->where('vote_user', $uid)
+ ->where('vote_comment', $cid)
+ ->delete();
} else {
// Otherwise update the vote
- DBv2::prepare('UPDATE `{prefix}comment_votes` SET `vote_state` = :state WHERE `vote_user` = :user AND `vote_comment` = :comment')
- ->execute([
- 'state' => $mode,
- 'user' => $uid,
- 'comment' => $cid,
- ]);
+ DB::table('comment_votes')
+ ->where('vote_user', $uid)
+ ->where('vote_comment', $cid)
+ ->update([
+ 'vote_state' => $mode,
+ ]);
}
} else {
// Create a vote
- DBv2::prepare('INSERT INTO `{prefix}comment_votes` (`vote_user`, `vote_comment`, `vote_state`) VALUES (:user, :comment, :state)')
- ->execute([
- 'user' => $uid,
- 'comment' => $cid,
- 'state' => $mode,
- ]);
+ DB::table('comment_votes')
+ ->insert([
+ 'vote_user' => $uid,
+ 'vote_comment' => $cid,
+ 'vote_state' => $mode,
+ ]);
}
return true;
@@ -241,9 +241,8 @@ class Comments
public function removeComment($cid)
{
// Remove from database
- DBv2::prepare('DELETE FROM `{prefix}comments` WHERE `comment_id` = :id')
- ->execute([
- 'id' => $cid,
- ]);
+ DB::table('comments')
+ ->where('comment_id', $cid)
+ ->delete();
}
}
diff --git a/libraries/Controllers/ForumController.php b/libraries/Controllers/ForumController.php
index 83c5ba7..286f100 100644
--- a/libraries/Controllers/ForumController.php
+++ b/libraries/Controllers/ForumController.php
@@ -276,7 +276,7 @@ class ForumController extends Controller
$thread->update();
// Add page variable stuff
- $message = $thread->type ? 'Changed the thread to anto an announcement!' : 'Reverted the thread back to normal!';
+ $message = $thread->type ? 'Changed the thread to into an announcement!' : 'Reverted the thread back to normal!';
break;
case 'lock':
diff --git a/libraries/Controllers/UserController.php b/libraries/Controllers/UserController.php
index a79461a..ed36e76 100644
--- a/libraries/Controllers/UserController.php
+++ b/libraries/Controllers/UserController.php
@@ -10,6 +10,7 @@ namespace Sakura\Controllers;
use Sakura\Config;
use Sakura\DB;
use Sakura\Rank;
+use Sakura\Router;
use Sakura\Template;
use Sakura\User;
use Sakura\Utils;
@@ -49,7 +50,7 @@ class UserController extends Controller
Template::vars([
'page' => [
'message' => 'The user this profile belongs to changed their username, you are being redirected.',
- 'redirect' => (new \Sakura\Urls)->format('USER_PROFILE', [$check[0]->user_id]),
+ 'redirect' => Router::route('user.profile', $check[0]->user_id),
],
]);
@@ -74,7 +75,7 @@ class UserController extends Controller
Template::vars([
'page' => [
'message' => 'Toggled the restricted status of the user.',
- 'redirect' => (new \Sakura\Urls)->format('USER_PROFILE', [$profile->id]),
+ 'redirect' => Router::route('user.profile', $profile->id),
],
]);
@@ -108,7 +109,7 @@ class UserController extends Controller
}
// Get all ranks
-
+
// Execute query
$getRanks = DB::table('ranks')
->get(['rank_id']);
diff --git a/libraries/DBv2.php b/libraries/DBv2.php
deleted file mode 100644
index f04b990..0000000
--- a/libraries/DBv2.php
+++ /dev/null
@@ -1,112 +0,0 @@
-
- */
-class DBv2
-{
- /**
- * The container for the PDO object.
- *
- * @var PDO
- */
- public static $db = null;
-
- /**
- * The table prefix
- *
- * @var string
- */
- public static $prefix = '';
-
- /**
- * Open the SQL connection and creates a PDO object.
- *
- * @param string $server A PDO driver.
- * @param array $dsnParts An array consisting out of DSN string parts.
- * @param string $username The username used to authenticate with the SQL server.
- * @param string $password The password for the same purpose.
- * @param array $options Additional PDO options.
- */
- public static function open($server, $dsnParts, $username = null, $password = null, $prefix = '', $options = [])
- {
- // Check if the selected driver is available
- if (!in_array($server, PDO::getAvailableDrivers())) {
- trigger_error('A driver for the selected SQL server wasn\'t found!', E_USER_ERROR);
- return;
- }
-
- // Set the table prefix
- self::$prefix = $prefix;
-
- // Create start of the DSN
- $dsn = "{$server}:";
-
- // Append the parts
- foreach ($dsnParts as $name => $value) {
- $dsn .= "{$name}={$value};";
- }
-
- try {
- // Connect to SQL server using PDO
- self::$db = new PDO($dsn, $username, $password, $options);
- } catch (PDOException $e) {
- // Catch connection errors
- trigger_error($e->getMessage(), E_USER_ERROR);
- }
-
- self::$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
- self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
- }
-
- /**
- * Closes the PDO object.
- */
- public static function close()
- {
- self::$db = null;
- }
-
- /**
- * Get the id of the item that was last inserted into the database.
- *
- * @param string $name Sequence of which the last id should be returned.
- *
- * @return string The last inserted id.
- */
- public static function lastID($name = null)
- {
- return self::$db->lastInsertID($name);
- }
-
- /**
- * Prepares a statement for execution and returns a statement object.
- *
- * @param string $stmt The statement to prepare.
- * @param array $opts Statement specific driver options.
- *
- * @return PDOStatement
- */
- public static function prepare($stmt, $opts = [])
- {
- // Replace the table prefix
- $stmt = str_replace('{prefix}', self::$prefix, $stmt);
-
- return self::$db->prepare($stmt, $opts);
- }
-}
diff --git a/libraries/News.php b/libraries/News.php
index f35d69f..ce5d601 100644
--- a/libraries/News.php
+++ b/libraries/News.php
@@ -31,14 +31,16 @@ class News
{
// Get the news posts and assign them to $posts
- $posts = DBv2::prepare('SELECT * FROM `{prefix}news` WHERE `news_category` = :cat ORDER BY `news_id` DESC');
- $posts->execute([
- 'cat' => $category,
- ]);
- $posts = $posts->fetchAll(\PDO::FETCH_ASSOC);
+ $posts = DB::table('news')
+ ->where('news_category', $category)
+ ->orderBy('news_id', 'desc')
+ ->get();
// Attach poster data
foreach ($posts as $post) {
+ // See Comments.php
+ $post = get_object_vars($post);
+
// Attach the poster
$post['news_poster'] = User::construct($post['user_id']);
diff --git a/libraries/Perms.php b/libraries/Perms.php
index 3d1d558..bff6a76 100644
--- a/libraries/Perms.php
+++ b/libraries/Perms.php
@@ -24,7 +24,7 @@ class Perms
* MANAGE permission mode, used for site management actions.
*/
const MANAGE = 'permissions\permissions_manage';
-
+
/**
* FORUM permission mode, used per forum.
*/
@@ -43,7 +43,7 @@ class Perms
* @var string
*/
protected $column = '';
-
+
/**
* Constructor.
*
@@ -94,34 +94,26 @@ class Perms
public function rank($rid, $conditions = [], $perm = 0)
{
// Build statement
- $stmt = "SELECT * FROM `{prefix}{$this->table}` WHERE `rank_id` = :rank AND `user_id` = 0";
+ $get = DB::table($this->table)
+ ->where('rank_id', $rid)
+ ->where('user_id', 0);
// Append additional conditionals (DBWrapper v1 format, except OR is ignored)
foreach ($conditions as $column => $value) {
- $stmt .= " AND `{$column}` {$value[1]} :_retarded_{$column}";
+ $get->where($column, $value[1], $value[0]);
}
- // Prepare the statement
- $get = DBv2::prepare($stmt);
-
- // Bind rank
- $get->bindParam('rank', $rid);
-
- // Bind additionals
- foreach ($conditions as $column => $value) {
- $get->bindParam("_retarded_{$column}", $value[0]);
- }
-
- // Execute!
- $get->execute();
-
// Fetch from the db
- $get = $get->fetch(\PDO::FETCH_ASSOC);
+ $get = $get->get();
// Check if anything was returned
- if ($get && array_key_exists($this->column, $get) && $get['rank_id']) {
- // Perform a bitwise OR
- $perm = $perm | bindec((string) $get[$this->column]);
+ if ($get) {
+ $get = get_object_vars($get[0]);
+
+ if (array_key_exists($this->column, $get) && $get['rank_id']) {
+ // Perform a bitwise OR
+ $perm = $perm | bindec((string) $get[$this->column]);
+ }
}
// Return the value
@@ -146,36 +138,28 @@ class Perms
foreach (array_keys($user->ranks) as $rank) {
$perm = $perm | $this->rank($rank, $conditions, $perm);
}
-
+
// Build statement
- $stmt = "SELECT * FROM `{prefix}{$this->table}` WHERE `rank_id` = 0 AND `user_id` = :user";
+ $get = DB::table($this->table)
+ ->where('rank_id', 0)
+ ->where('user_id', $uid);
// Append additional conditionals (DBWrapper v1 format, except OR is ignored)
foreach ($conditions as $column => $value) {
- $stmt .= " AND `{$column}` {$value[1]} :_retarded_{$column}";
+ $get->where($column, $value[1], $value[0]);
}
- // Prepare the statement
- $get = DBv2::prepare($stmt);
-
- // Bind rank
- $get->bindParam('user', $uid);
-
- // Bind additionals
- foreach ($conditions as $column => $value) {
- $get->bindParam("_retarded_{$column}", $value[0]);
- }
-
- // Execute!
- $get->execute();
-
// Fetch from the db
- $get = $get->fetch(\PDO::FETCH_ASSOC);
-
+ $get = $get->get();
+
// Check if anything was returned
- if ($get && array_key_exists($this->column, $get) && $get['user_id']) {
- // Perform a bitwise OR
- $perm = $perm | bindec((string) $get[$this->column]);
+ if ($get) {
+ $get = get_object_vars($get[0]);
+
+ if (array_key_exists($this->column, $get) && $get['user_id']) {
+ // Perform a bitwise OR
+ $perm = $perm | bindec((string) $get[$this->column]);
+ }
}
// Return the value
diff --git a/libraries/Rank.php b/libraries/Rank.php
index 03c3bc2..b5e21c3 100644
--- a/libraries/Rank.php
+++ b/libraries/Rank.php
@@ -188,11 +188,12 @@ class Rank
public function users($justIds = false)
{
// Fetch all users part of this rank
- $fetch = DBv2::prepare('SELECT `user_id` FROM `{prefix}user_ranks` WHERE `rank_id` = :id');
- $fetch->execute([
- 'id' => $this->id,
- ]);
- $userIds = array_column($fetch->fetchAll(\PDO::FETCH_ASSOC), 'user_id');
+ $get = DB::table('user_ranks')
+ ->where('rank_id', $this->id)
+ ->get(['user_id']);
+
+ // Filter the user ids into one array
+ $userIds = array_column($get, 'user_id');
// Just return that if we were asked for just the ids
if ($justIds) {
diff --git a/libraries/User.php b/libraries/User.php
index 4114df1..8c45431 100644
--- a/libraries/User.php
+++ b/libraries/User.php
@@ -461,9 +461,9 @@ class User
array_merge(
array_keys($this->ranks),
$ranks)
- ),
- array_keys($this->ranks)
- );
+ ),
+ array_keys($this->ranks)
+ );
// Save to the database
foreach ($ranks as $rank) {
@@ -592,21 +592,18 @@ class User
return [0, 'USER_NOT_EXIST'];
}
- // Prepare the statement
- $rem = DBv2::prepare('DELETE FROM `{prefix}friends` WHERE `user_id` = :user AND `friend_id` = :friend');
-
// Remove friend
- $rem->execute([
- 'user' => $this->id,
- 'friend' => $uid,
- ]);
+ DB::table('friends')
+ ->where('user_id', $this->id)
+ ->where('friend_id', $uid)
+ ->delete();
// Attempt to remove the request
if ($deleteRequest) {
- $rem->execute([
- 'user' => $uid,
- 'friend' => $this->id,
- ]);
+ DB::table('friends')
+ ->where('user_id', $uid)
+ ->where('friend_id', $this->id)
+ ->delete();
}
// Return true because yay
@@ -623,19 +620,16 @@ class User
public function isFriends($with)
{
// Accepted from this user
- $get = DBv2::prepare('SELECT * FROM `{prefix}friends` WHERE `user_id` = :user AND `friend_id` = :friend');
- $get->execute([
- 'user' => $this->id,
- 'friend' => $with,
- ]);
- $user = $get->rowCount();
+ $user = DB::table('friends')
+ ->where('user_id', $this->id)
+ ->where('friend_id', $with)
+ ->count();
// And the other user
- $get->execute([
- 'user' => $with,
- 'friend' => $this->id,
- ]);
- $friend = $get->rowCount();
+ $user = DB::table('friends')
+ ->where('user_id', $with)
+ ->where('friend_id', $this->id)
+ ->count();
if ($user && $friend) {
return 2; // Mutual friends
@@ -665,18 +659,16 @@ class User
// Mutual
case 2:
// Get all the current user's friends
- $self = DBv2::prepare('SELECT `friend_id` FROM `{prefix}friends` WHERE `user_id` = :user');
- $self->execute([
- 'user' => $this->id,
- ]);
- $self = array_column($self->fetchAll(\PDO::FETCH_ASSOC), 'friend_id');
+ $self = DB::table('friends')
+ ->where('user_id', $this->id)
+ ->get(['friend_id']);
+ $self = array_column($self, 'friend_id');
// Get all the people that added this user as a friend
- $others = DBv2::prepare('SELECT `user_id` FROM `{prefix}friends` WHERE `friend_id` = :user');
- $others->execute([
- 'user' => $this->id,
- ]);
- $others = array_column($others->fetchAll(\PDO::FETCH_ASSOC), 'user_id');
+ $others = DB::table('friends')
+ ->where('friend_id', $this->id)
+ ->get(['user_id']);
+ $others = array_column($others, 'user_id');
// Create a difference map
$users = array_intersect($self, $others);
@@ -684,29 +676,26 @@ class User
// Non-mutual (from user perspective)
case 1:
- $users = DBv2::prepare('SELECT `friend_id` FROM `{prefix}friends` WHERE `user_id` = :user');
- $users->execute([
- 'user' => $this->id,
- ]);
- $users = array_column($users->fetchAll(\PDO::FETCH_ASSOC), 'friend_id');
+ $users = DB::table('friends')
+ ->where('user_id', $this->id)
+ ->get(['friend_id']);
+ $users = array_column($users, 'friend_id');
break;
// All friend cases
case 0:
default:
// Get all the current user's friends
- $self = DBv2::prepare('SELECT `friend_id` FROM `{prefix}friends` WHERE `user_id` = :user');
- $self->execute([
- 'user' => $this->id,
- ]);
- $self = array_column($self->fetchAll(\PDO::FETCH_ASSOC), 'friend_id');
+ $self = DB::table('friends')
+ ->where('user_id', $this->id)
+ ->get(['friend_id']);
+ $self = array_column($self, 'friend_id');
// Get all the people that added this user as a friend
- $others = DBv2::prepare('SELECT `user_id` FROM `{prefix}friends` WHERE `friend_id` = :user');
- $others->execute([
- 'user' => $this->id,
- ]);
- $others = array_column($others->fetchAll(\PDO::FETCH_ASSOC), 'user_id');
+ $others = DB::table('friends')
+ ->where('friend_id', $this->id)
+ ->get(['user_id']);
+ $others = array_column($others, 'user_id');
// Create a difference map
$users = array_merge($others, $self);
@@ -715,18 +704,16 @@ class User
// Open requests
case -1:
// Get all the current user's friends
- $self = DBv2::prepare('SELECT `friend_id` FROM `{prefix}friends` WHERE `user_id` = :user');
- $self->execute([
- 'user' => $this->id,
- ]);
- $self = array_column($self->fetchAll(\PDO::FETCH_ASSOC), 'friend_id');
+ $self = DB::table('friends')
+ ->where('user_id', $this->id)
+ ->get(['friend_id']);
+ $self = array_column($self, 'friend_id');
// Get all the people that added this user as a friend
- $others = DBv2::prepare('SELECT `user_id` FROM `{prefix}friends` WHERE `friend_id` = :user');
- $others->execute([
- 'user' => $this->id,
- ]);
- $others = array_column($others->fetchAll(\PDO::FETCH_ASSOC), 'user_id');
+ $others = DB::table('friends')
+ ->where('friend_id', $this->id)
+ ->get(['user_id']);
+ $others = array_column($others, 'user_id');
// Create a difference map
$users = array_diff($others, $self);
@@ -808,23 +795,14 @@ class User
// Create array and get values
$profile = [];
- $profileFields = DBv2::prepare('SELECT * FROM `{prefix}profilefields`');
- $profileFields->execute();
- $profileFields = $profileFields->fetchAll(\PDO::FETCH_ASSOC);
+ $profileFields = DB::table('profilefields')
+ ->get();
- $profileValuesRaw = DBv2::prepare('SELECT * FROM `{prefix}user_profilefields` WHERE `user_id` = :user');
- $profileValuesRaw->execute([
- 'user' => $this->id,
- ]);
- $profileValuesRaw = $profileValuesRaw->fetchAll(\PDO::FETCH_ASSOC);
+ $profileValuesRaw = DB::table('user_profilefields')
+ ->where('user_id', $this->id)
+ ->get();
- $profileValueKeys = array_map(function ($a) {
- return $a['field_name'];
- }, $profileValuesRaw);
- $profileValueVals = array_map(function ($a) {
- return $a['field_value'];
- }, $profileValuesRaw);
- $profileValues = array_combine($profileValueKeys, $profileValueVals);
+ $profileValues = array_column($profileValuesRaw, 'field_value', 'field_name');
// Check if anything was returned
if (!$profileFields || !$profileValues) {
@@ -834,7 +812,7 @@ class User
// Check if profile fields aren't fake
foreach ($profileFields as $field) {
// Completely strip all special characters from the field name
- $fieldName = Utils::cleanString($field['field_name'], true, true);
+ $fieldName = Utils::cleanString($field->field_name, true, true);
// Check if the user has the current field set otherwise continue
if (!array_key_exists($fieldName, $profileValues)) {
@@ -843,23 +821,23 @@ class User
// Assign field to output with value
$profile[$fieldName] = [];
- $profile[$fieldName]['name'] = $field['field_name'];
+ $profile[$fieldName]['name'] = $field->field_name;
$profile[$fieldName]['value'] = $profileValues[$fieldName];
- $profile[$fieldName]['islink'] = $field['field_link'];
+ $profile[$fieldName]['islink'] = $field->field_link;
// If the field is set to be a link add a value for that as well
- if ($field['field_link']) {
+ if ($field->field_link) {
$profile[$fieldName]['link'] = str_replace(
'{{ VAL }}',
$profileValues[$fieldName],
- $field['field_linkformat']
+ $field->field_linkformat
);
}
// Check if we have additional options as well
- if ($field['field_additional'] != null) {
+ if ($field->field_additional != null) {
// Decode the json of the additional stuff
- $additional = json_decode($field['field_additional'], true);
+ $additional = json_decode($field->field_additional, true);
// Go over all additional forms
foreach ($additional as $subName => $subField) {
@@ -896,23 +874,14 @@ class User
// Create array and get values
$options = [];
- $optionFields = DBv2::prepare('SELECT * FROM `{prefix}optionfields`');
- $optionFields->execute();
- $optionFields = $optionFields->fetchAll(\PDO::FETCH_ASSOC);
+ $optionFields = DB::table('optionfields')
+ ->get();
- $optionValuesRaw = DBv2::prepare('SELECT * FROM `{prefix}user_optionfields` WHERE `user_id` = :user');
- $optionValuesRaw->execute([
- 'user' => $this->id,
- ]);
- $optionValuesRaw = $optionValuesRaw->fetchAll(\PDO::FETCH_ASSOC);
+ $optionValuesRaw = DB::table('user_optionfields')
+ ->where('user_id', $this->id)
+ ->get();
- $optionValueKeys = array_map(function ($a) {
- return $a['field_name'];
- }, $optionValuesRaw);
- $optionValueVals = array_map(function ($a) {
- return $a['field_value'];
- }, $optionValuesRaw);
- $optionValues = array_combine($optionValueKeys, $optionValueVals);
+ $optionValues = array_column($optionValuesRaw, 'field_value', 'field_name');
// Check if anything was returned
if (!$optionFields || !$optionValues) {
@@ -922,17 +891,17 @@ class User
// Check if option fields aren't fake
foreach ($optionFields as $field) {
// Check if the user has the current field set otherwise continue
- if (!array_key_exists($field['option_id'], $optionValues)) {
+ if (!array_key_exists($field->option_id, $optionValues)) {
continue;
}
// Make sure the user has the proper permissions to use this option
- if (!$this->permission(constant('Sakura\Perms\Site::' . $field['option_permission']))) {
+ if (!$this->permission(constant('Sakura\Perms\Site::' . $field->option_permission))) {
continue;
}
// Assign field to output with value
- $options[$field['option_id']] = $optionValues[$field['option_id']];
+ $options[$field->option_id] = $optionValues[$field->option_id];
}
// Assign cache
@@ -956,17 +925,17 @@ class User
}
// Attempt to retrieve the premium record from the database
- $getRecord = DBv2::prepare('SELECT * FROM `{prefix}premium` WHERE `user_id` = :user');
- $getRecord->execute([
- 'user' => $this->id,
- ]);
- $getRecord = $getRecord->fetch();
+ $getRecord = DB::table('premium')
+ ->where('user_id', $this->id)
+ ->get();
// If nothing was returned just return false
if (empty($getRecord)) {
return [0];
}
+ $getRecord[0] = $getRecord;
+
// Check if the Tenshi hasn't expired
if ($getRecord->premium_expire < time()) {
return [0, $getRecord->premium_start, $getRecord->premium_expire];
@@ -984,11 +953,9 @@ class User
public function getWarnings()
{
// Do the database query
- $getWarnings = DBv2::prepare('SELECT * FROM `{prefix}warnings` WHERE `user_id` = :user');
- $getWarnings->execute([
- 'user' => $this->id,
- ]);
- $getWarnings = $getWarnings->fetchAll(\PDO::FETCH_ASSOC);
+ $getWarnings = DB::table('warnings')
+ ->where('user_id', $this->id)
+ ->get();
// Storage array
$warnings = [];
@@ -996,39 +963,38 @@ class User
// Add special stuff
foreach ($getWarnings as $warning) {
// Check if it hasn't expired
- if ($warning['warning_expires'] < time()) {
- DBv2::prepare('DELETE FROM `{prefix}warnings` WHERE `warning_id` = :warn')
- ->execute([
- 'warn' => $warning['warning_id'],
- ]);
+ if ($warning->warning_expires < time()) {
+ DB::table('warnings')
+ ->where('warning_id', $warning['warning_id'])
+ ->delete();
continue;
}
// Text action
- switch ($warning['warning_action']) {
+ switch ($warning->warning_action) {
default:
case '0':
- $warning['warning_action_text'] = 'Warning';
+ $warning->warning_action_text = 'Warning';
break;
case '1':
- $warning['warning_action_text'] = 'Silence';
+ $warning->warning_action_text = 'Silence';
break;
case '2':
- $warning['warning_action_text'] = 'Restriction';
+ $warning->warning_action_text = 'Restriction';
break;
case '3':
- $warning['warning_action_text'] = 'Ban';
+ $warning->warning_action_text = 'Ban';
break;
case '4':
- $warning['warning_action_text'] = 'Abyss';
+ $warning->warning_action_text = 'Abyss';
break;
}
// Text expiration
- $warning['warning_length'] = round(($warning['warning_expires'] - $warning['warning_issued']) / 60);
+ $warning->warning_length = round(($warning->warning_expires - $warning->warning_issued) / 60);
// Add to array
- $warnings[$warning['warning_id']] = $warning;
+ $warnings[$warning->warning_id] = $warning;
}
// Return all the warnings
@@ -1062,14 +1028,10 @@ class User
*/
public function getUsernameHistory()
{
- // Do the database query
- $changes = DBv2::prepare('SELECT * FROM `{prefix}username_history` WHERE `user_id` = :user ORDER BY `change_id` DESC');
- $changes->execute([
- 'user' => $this->id,
- ]);
-
- // Return all the changes
- return $changes->fetchAll(\PDO::FETCH_ASSOC);
+ return DB::table('username_history')
+ ->where('user_id', $this->id)
+ ->orderBy('change_id', 'desc')
+ ->get();
}
/**
@@ -1095,48 +1057,45 @@ class User
}
// Check if this username hasn't been used in the last amount of days set in the config
- $getOld = DBv2::prepare('SELECT * FROM `{prefix}username_history` WHERE `username_old_clean` = :clean AND `change_time` > :time ORDER BY `change_id` DESC');
- $getOld->execute([
- 'clean' => $username_clean,
- 'time' => (Config::get('old_username_reserve') * 24 * 60 * 60),
- ]);
- $getOld = $getOld->fetch();
+ $getOld = DB::table('username_history')
+ ->where('username_old_clean', $username_clean)
+ ->where('change_time', '>', (Config::get('old_username_reserve') * 24 * 60 * 60))
+ ->orderBy('change_id', 'desc')
+ ->get();
// Check if anything was returned
- if ($getOld && $getOld->user_id != $this->id) {
- return [0, 'TOO_RECENT', $getOld['change_time']];
+ if ($getOld && $getOld[0]->user_id != $this->id) {
+ return [0, 'TOO_RECENT', $getOld[0]['change_time']];
}
// Check if the username is already in use
- $getInUse = DBv2::prepare('SELECT * FROM `{prefix}users` WHERE `username_clean` = :clean');
- $getInUse->execute([
- 'clean' => $username_clean,
- ]);
- $getInUse = $getInUse->fetch();
+ $getInUse = DB::table('users')
+ ->where('username_clean', $username_clean)
+ ->get();
// Check if anything was returned
if ($getInUse) {
- return [0, 'IN_USE', $getInUse->user_id];
+ return [0, 'IN_USE', $getInUse[0]->user_id];
}
// Insert into username_history table
- DBv2::prepare('INSERT INTO `{prefix}username_history` (`change_time`, `user_id`, `username_new`, `username_new_clean`, `username_old`, `username_old_clean`) VALUES (:time, :user, :new, :new_clean, :old, :old_clean)')
- ->execute([
- 'time' => time(),
- 'user' => $this->id,
- 'new' => $username,
- 'new_clean' => $username_clean,
- 'old' => $this->username,
- 'old_clean' => $this->usernameClean,
- ]);
+ DB::table('username_history')
+ ->insert([
+ 'change_time' => time(),
+ 'user_id' => $this->id,
+ 'username_new_clean' => $username,
+ 'new_clean' => $username_clean,
+ 'username_old' => $this->username,
+ 'username_old_clean' => $this->usernameClean,
+ ]);
// Update userrow
- DBv2::prepare('UPDATE `{prefix}users` SET `username` = :username, `username_clean` = :clean WHERE `user_id` = :id')
- ->execute([
- 'username' => $username,
- 'clean' => $username_clean,
- 'id' => $this->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $this->id)
+ ->update([
+ 'username' => $username,
+ 'username_clean' => $username_clean,
+ ]);
// Return success
return [1, 'SUCCESS', $username];
@@ -1157,23 +1116,21 @@ class User
}
// Check if the username is already in use
- $getInUse = DBv2::prepare('SELECT * FROM `{prefix}users` WHERE `email` = :email');
- $getInUse->execute([
- 'email' => $email,
- ]);
- $getInUse = $getInUse->fetch();
+ $getInUse = DB::table('users')
+ ->where('email', $email)
+ ->get();
// Check if anything was returned
if ($getInUse) {
- return [0, 'IN_USE', $getInUse->user_id];
+ return [0, 'IN_USE', $getInUse[0]->user_id];
}
// Update userrow
- DBv2::prepare('UPDATE `{prefix}users` SET `email` = :email WHERE `user_id` = :id')
- ->execute([
- 'email' => $email,
- 'id' => $this->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $this->id)
+ ->update([
+ 'email' => $email,
+ ]);
// Return success
return [1, 'SUCCESS', $email];
@@ -1223,15 +1180,15 @@ class User
$password = Hashing::createHash($new);
// Update userrow
- DBv2::prepare('UPDATE `{prefix}users` SET `password_hash` = :hash, `password_salt` = :salt, `password_algo` = :algo, `password_iter` = :iter, `password_chan` = :chan WHERE `user_id` = :id')
- ->execute([
- 'hash' => $password[3],
- 'salt' => $password[2],
- 'algo' => $password[0],
- 'iter' => $password[1],
- 'chan' => time(),
- 'id' => $this->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $this->id)
+ ->update([
+ 'password_hash' => $password[3],
+ 'password_salt' => $password[2],
+ 'password_algo' => $password[0],
+ 'password_iter' => $password[1],
+ 'password_chan' => time(),
+ ]);
// Return success
return [1, 'SUCCESS'];
diff --git a/libraries/Users.php b/libraries/Users.php
index e5027c6..7366da3 100644
--- a/libraries/Users.php
+++ b/libraries/Users.php
@@ -85,11 +85,11 @@ class Users
}
// Update last online
- DBv2::prepare('UPDATE `{prefix}users` SET `user_last_online` = :lo WHERE `user_id` = :id')
- ->execute([
- 'lo' => time(),
- 'id' => $uid,
- ]);
+ DB::table('users')
+ ->where('user_id', $uid)
+ ->update([
+ 'user_last_online' => time(),
+ ]);
// Update the premium meta
self::updatePremiumMeta($uid);
@@ -118,20 +118,17 @@ class Users
$emailClean = Utils::cleanString($email, true);
// Do database request
- $user = DBv2::prepare('SELECT * FROM `{prefix}users` WHERE `username_clean` = :clean AND `email` = :email');
- $user->execute([
- 'clean' => $usernameClean,
- 'email' => $emailClean,
- ]);
- $user = $user->fetch(\PDO::FETCH_ASSOC);
+ $user = DB::table('users')
+ ->where('username_clean', $usernameClean)
+ ->where(':email', $emailClean)
+ ->get(['user_id']);
// Check if user exists
- if (count($user) < 2) {
+ if (count($user) < 1) {
return [0, 'USER_NOT_EXIST'];
}
- // Create user object
- $userObj = User::construct($user['user_id']);
+ $userObj = User::construct($user[0]->user_id);
// Check if the user has the required privs to log in
if ($userObj->permission(Site::DEACTIVATED)) {
@@ -201,15 +198,15 @@ class Users
$password = Hashing::createHash($newpass);
// Update the user
- DBv2::prepare('UPDATE `{prefix}users` SET `password_hash` = :hash, `password_salt` = :salt, `password_algo` = :algo, `password_iter` = :iter, `password_chan` = :chan WHERE `user_id` = :id')
- ->execute([
- 'hash' => $password[3],
- 'salt' => $password[2],
- 'algo' => $password[0],
- 'iter' => $password[1],
- 'chan' => time(),
- 'id' => $uid,
- ]);
+ DB::table('users')
+ ->where('user_id', $uid)
+ ->update([
+ 'password_hash' => $password[3],
+ 'password_salt' => $password[2],
+ 'password_algo' => $password[0],
+ 'password_iter' => $password[1],
+ 'password_chan' => time(),
+ ]);
// Return success
return [1, 'SUCCESS'];
@@ -235,19 +232,17 @@ class Users
$emailClean = Utils::cleanString($email, true);
// Do database request
- $user = DBv2::prepare('SELECT * FROM `{prefix}users` WHERE `username_clean` = :clean AND `email` = :email');
- $user->execute([
- 'clean' => $usernameClean,
- 'email' => $emailClean,
- ]);
- $user = $user->fetch(\PDO::FETCH_ASSOC);
+ $user = DB::table('users')
+ ->where('username_clean', $usernameClean)
+ ->where(':email', $emailClean)
+ ->get(['user_id']);
// Check if user exists
- if (count($user) < 2) {
+ if (count($user) < 1) {
return [0, 'USER_NOT_EXIST'];
}
- $userObj = User::construct($user['user_id']);
+ $userObj = User::construct($user[0]->user_id);
// Check if a user is activated
if (!$userObj->permission(Site::DEACTIVATED)) {
@@ -255,7 +250,7 @@ class Users
}
// Send activation e-mail
- self::sendActivationMail($user['user_id']);
+ self::sendActivationMail($userObj->id);
// Return success
return [1, 'SUCCESS'];
@@ -365,9 +360,8 @@ class Users
public static function getProfileFields()
{
// Get profile fields
- $profileFields = DBv2::prepare('SELECT * FROM `{prefix}profilefields`');
- $profileFields->execute();
- $profileFields = $profileFields->fetchAll(\PDO::FETCH_ASSOC);
+ $profileFields = DB::table('profilefields')
+ ->get();
// If there's nothing just return null
if (!count($profileFields)) {
@@ -379,6 +373,7 @@ class Users
// Iterate over the fields and clean them up
foreach ($profileFields as $field) {
+ $field = get_object_vars($field);
$fields[$field['field_id']] = $field;
$fields[$field['field_id']]['field_identity'] = Utils::cleanString($field['field_name'], true, true);
$fields[$field['field_id']]['field_additional'] = json_decode($field['field_additional'], true);
@@ -396,9 +391,8 @@ class Users
public static function getOptionFields()
{
// Get option fields
- $optionFields = DBv2::prepare('SELECT * FROM `{prefix}optionfields`');
- $optionFields->execute();
- $optionFields = $optionFields->fetchAll(\PDO::FETCH_ASSOC);
+ $optionFields = DB::table('optionfields')
+ ->get();
// If there's nothing just return null
if (!count($optionFields)) {
@@ -412,6 +406,8 @@ class Users
// Iterate over the fields and clean them up
foreach ($optionFields as $field) {
+ $field = get_object_vars($field);
+
if (!$user->permission(constant('Sakura\Perms\Site::' . $field['option_permission']))) {
continue;
}
@@ -436,11 +432,9 @@ class Users
$return = [];
// Get all online users in the past 5 minutes
- $getAll = DBv2::prepare('SELECT * FROM `{prefix}users` WHERE `user_last_online` > :lo');
- $getAll->execute([
- 'lo' => $time,
- ]);
- $getAll = $getAll->fetchAll();
+ $getAll = DB::table('users')
+ ->where('user_last_online', '>', $time)
+ ->get();
foreach ($getAll as $user) {
$return[] = User::construct($user->user_id);
@@ -461,11 +455,9 @@ class Users
public static function addUserPremium($id, $seconds)
{
// Check if there's already a record of premium for this user in the database
- $getUser = DBv2::prepare('SELECT * FROM `{prefix}premium` WHERE `user_id` = :user');
- $getUser->execute([
- 'user' => $id,
- ]);
- $getUser = $getUser->fetch(\PDO::FETCH_ASSOC);
+ $getUser = DB::table('premium')
+ ->where('user_id', $id)
+ ->count();
// Calculate the (new) start and expiration timestamp
$start = isset($getUser['premium_start']) ? $getUser['premium_start'] : time();
@@ -473,18 +465,16 @@ class Users
// If the user already exists do an update call, otherwise an insert call
if (empty($getUser)) {
- DBv2::prepare('INSERT INTO `{prefix}premium` (`user_id`, `premium_start`, `premium_expire`) VALUES (:user, :start, :expire)')
- ->execute([
- 'user' => $id,
- 'start' => $start,
- 'expire' => $expire,
- ]);
+ DB::table('premium')
+ ->insert([
+ 'user_id' => $id,
+ 'premium_start' => $start,
+ 'premium_expire' => $expire,
+ ]);
} else {
- DBv2::prepare('UPDATE `{prefix}premium` SET `premium_expire` = :expire WHERE `user_id` = :id')
- ->execute([
- 'expire' => $expire,
- 'user_id' => $id,
- ]);
+ DB::table('premium')
+ ->where('user_id', $id)
+ ->update('premium_expire', $expire);
}
// Return the expiration timestamp
@@ -519,10 +509,9 @@ class Users
}
} elseif (!$check[0]) {
// Remove the expired entry
- DBv2::prepare('DELETE FROM `{prefix}premium` WHERE `user_id` = :user')
- ->execute([
- 'user' => $user->id,
- ]);
+ DB::table('premium')
+ ->where('user_id', $user->id)
+ ->delete();
// Else remove the rank from them
$user->removeRanks([$premiumRank]);
@@ -547,25 +536,23 @@ class Users
$read = $excludeRead ? '0' : '%';
// Get notifications for the database
- $notifications = DBv2::prepare('SELECT * FROM `{prefix}notifications` WHERE `user_id` = :user AND `alert_timestamp` > :time AND `alert_read` = :read');
- $notifications->execute([
- 'user' => $uid,
- 'time' => $time,
- 'read' => $read,
- ]);
- $notifications = $notifications->fetchAll(\PDO::FETCH_ASSOC);
+ $alerts = DB::table('notifications')
+ ->where('user_id', $uid)
+ ->where('alert_timestamp', '>', $time)
+ ->where('alert_read', $read)
+ ->get();
// Mark the notifications as read
if ($markRead) {
// Iterate over all entries
- foreach ($notifications as $notification) {
+ foreach ($alerts as $alert) {
// If the notifcation is already read skip
- if ($notification['alert_read']) {
+ if ($alert->alert_read) {
continue;
}
// Mark them as read
- self::markNotificationRead($notification['alert_id']);
+ self::markNotificationRead($notification->alert_id);
}
}
@@ -582,11 +569,11 @@ class Users
public static function markNotificationRead($id, $mode = true)
{
// Execute an update statement
- DBv2::prepare('UPDATE `{prefix}notifications` SET `alert_read` = :read WHERE `alert_id` = :id')
- ->execute([
- 'read' => ($mode ? 1 : 0),
- 'id' => $id,
- ]);
+ DB::table('notifications')
+ ->where('alert_id', $id)
+ ->update([
+ 'alert_read' => ($mode ? 1 : 0),
+ ]);
}
/**
@@ -603,18 +590,18 @@ class Users
public static function createNotification($user, $title, $text, $timeout = 60000, $img = 'FONT:fa-info-circle', $link = '', $sound = 0)
{
// Insert it into the database
- DBv2::prepare('INSERT INTO `{prefix}notifications` (`user_id`, `alert_timestamp`, `alert_read`, `alert_sound`, `alert_title`, `alert_text`, `alert_link`, `alert_img`, `alert_timeout`) VALUES (:user, :time, :read, :sound, :title, :text, :link, :img, :timeout)')
- ->execute([
- 'user' => $user,
- 'time' => time(),
- 'read' => 0,
- 'sound' => ($sound ? 1 : 0),
- 'title' => $title,
- 'text' => $text,
- 'link' => $link,
- 'img' => $img,
- 'timeout' => $timeout,
- ]);
+ DB::table('notifications')
+ ->insert([
+ 'user_id' => $user,
+ 'alert_timestamp' => time(),
+ 'alert_read' => 0,
+ 'alert_sound' => ($sound ? 1 : 0),
+ 'alert_title' => $title,
+ 'alert_text' => $text,
+ 'alert_link' => $link,
+ 'alert_img' => $img,
+ 'alert_timeout' => $timeout,
+ ]);
}
/**
@@ -624,12 +611,12 @@ class Users
*/
public static function getNewestUserId()
{
- $get = DBv2::prepare('SELECT `user_id` FROM `{prefix}users` WHERE `rank_main` != :restricted ORDER BY `user_id` DESC LIMIT 1');
- $get->execute([
- 'restricted' => Config::get('restricted_rank_id'),
- ]);
- $get = $get->fetch();
+ $get = DB::table('users')
+ ->where('rank_main', '!=', Config::get('restricted_rank_id'))
+ ->orderBy('user_id', 'desc')
+ ->limit(1)
+ ->get(['user_id']);
- return $get ? $get->user_id : 0;
+ return $get ? $get[0]->user_id : 0;
}
}
diff --git a/libraries/Utils.php b/libraries/Utils.php
index 1ddd287..e8a74e2 100644
--- a/libraries/Utils.php
+++ b/libraries/Utils.php
@@ -49,7 +49,7 @@ class Utils
default:
$error = 'Unknown error type [' . $errno . ']: ' . $errstr . ' on line ' . $errline
- . ' in ' . $errfile;
+ . ' in ' . $errfile;
}
// Truncate all previous outputs
@@ -361,9 +361,9 @@ class Utils
$data = [];
// Get database stuff
- $table = DBv2::prepare('SELECT * FROM `{prefix}premium_log` ORDER BY `transaction_id` DESC');
- $table->execute();
- $table = $table->fetchAll(\PDO::FETCH_ASSOC);
+ $table = DB::table('premium_log')
+ ->orderBy('transaction_id', 'desc')
+ ->get();
// Add raw table data to data array
$data['table'] = $table;
@@ -371,17 +371,17 @@ class Utils
// Create balance entry
$data['balance'] = 0.0;
- // Create users entry
+ // users
$data['users'] = [];
// Calculate the thing
foreach ($table as $row) {
// Calculate balance
- $data['balance'] = $data['balance'] + $row['transaction_amount'];
+ $data['balance'] = $data['balance'] + $row->transaction_amount;
// Add userdata to table
- if (!array_key_exists($row['user_id'], $data['users'])) {
- $data['users'][$row['user_id']] = User::construct($row['user_id']);
+ if (!array_key_exists($row->user_id, $data['users'])) {
+ $data['users'][$row->user_id] = User::construct($row->user_id);
}
}
@@ -398,13 +398,13 @@ class Utils
*/
public static function updatePremiumTracker($id, $amount, $comment)
{
- DBv2::prepare('INSERT INTO `{prefix}premium_log` (`user_id`, `transaction_amount`, `transaction_date`, `transaction_comment`) VALUES (:user, :amount, :date, :comment)')
- ->execute([
- 'user' => $id,
- 'amount' => $amount,
- 'date' => time(),
- 'comment' => $comment,
- ]);
+ DB::table('premium_log')
+ ->insert([
+ 'user_id' => $id,
+ 'transaction_amount' => $amount,
+ 'transaction_date' => time(),
+ 'transaction_comment' => $comment,
+ ]);
}
/**
@@ -427,7 +427,7 @@ class Utils
$code = str_replace('
', '', $code);
$code = str_replace('
', '', $code);
$code = str_replace('<', '<', $code);
- $newStr .= ''.$code.'
';
+ $newStr .= '' . $code . '
';
$newStr .= $parts2[1];
} else {
$newStr .= $p;
@@ -436,7 +436,7 @@ class Utils
} else {
$newStr = $text;
}
-
+
return $newStr;
}
}
diff --git a/public/posting.php b/public/posting.php
index 934e1b3..b89032b 100644
--- a/public/posting.php
+++ b/public/posting.php
@@ -67,12 +67,12 @@ if (!isset($thread) && !$forum->permission(ForumPerms::CREATE_THREADS, $currentU
$mode = isset($_GET['f']) ? 'f' : (isset($_GET['t']) ? 't' : (isset($_GET['p']) ? 'p' : null));
-$emotes = DBv2::prepare('SELECT * FROM `{prefix}emoticons`');
-$emotes->execute();
+$emotes = DB::table('emoticons')
+ ->get();
// Include emotes and bbcodes
$posting = [
- 'emoticons' => $emotes->fetchAll(),
+ 'emoticons' => $emotes,
];
// Check if we're in reply mode
@@ -201,20 +201,18 @@ if ($mode != 'f') {
// Post deletion code
if (isset($_POST['yes'])) {
// Delete the post
- DBv2::prepare('DELETE FROM `{prefix}posts` WHERE `post_id` = :post')
- ->execute([
- 'post' => $_POST['post_id'],
- ]);
+ DB::table('posts')
+ ->where('post_id', $_POST['post_id'])
+ ->delete();
// Reload the topic
$thread = new Forum\Thread($topicId);
// If there's no more posts left in the topic delete it as well
if (!$thread->replyCount()) {
- DBv2::prepare('DELETE FROM `{prefix}topics` WHERE `topic_id` = :thread')
- ->execute([
- 'thread' => $thread->id,
- ]);
+ DB::table('topics')
+ ->where('topic_id', $thread->id)
+ ->delete();
}
// Add page specific things
diff --git a/public/settings.php b/public/settings.php
index 87211aa..dceed1f 100644
--- a/public/settings.php
+++ b/public/settings.php
@@ -451,14 +451,14 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
// Assign the correct column and title to a variable
switch ($mode) {
case 'background':
- $stmt = 'UPDATE `{prefix}users` SET `user_background` = :img WHERE `user_id` = :user';
+ $column = 'user_background';
$msgTitle = 'Background';
$current = $currentUser->background;
$permission = $currentUser->permission(Site::CHANGE_BACKGROUND);
break;
case 'header':
- $stmt = 'UPDATE `{prefix}users` SET `user_header` = :img WHERE `user_id` = :user';
+ $column = 'user_header';
$msgTitle = 'Header';
$current = $currentUser->header;
$permission = $currentUser->permission(Site::CHANGE_HEADER);
@@ -466,7 +466,7 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
case 'avatar':
default:
- $stmt = 'UPDATE `{prefix}users` SET `user_avatar` = :img WHERE `user_id` = :user';
+ $column = 'user_avatar';
$msgTitle = 'Avatar';
$current = $currentUser->avatar;
$permission = $currentUser->permission(Site::CHANGE_AVATAR);
@@ -617,11 +617,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Update table
- DBv2::prepare($stmt)
- ->execute([
- 'img' => $fileId,
- 'user' => $currentUser->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $currentUser->id)
+ ->update([
+ $column => $fileId,
+ ]);
// Set render data
$renderData['page'] = [
@@ -636,21 +636,21 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
// Get profile fields and create storage var
$fields = Users::getProfileFields();
+ // Delete all profile fields
+ DB::table('user_profilefields')
+ ->where('user_id', $currentUser->id)
+ ->delete();
+
// Go over each field
foreach ($fields as $field) {
// Add to the store array
if (isset($_POST['profile_' . $field['field_identity']]) && !empty($_POST['profile_' . $field['field_identity']])) {
- DBv2::prepare('DELETE FROM `{prefix}user_profilefields` WHERE `user_id` = :user AND `field_name` = :id')
- ->execute([
- 'user' => $currentUser->id,
- 'id' => $field['field_identity'],
- ]);
- DBv2::prepare('INSERT INTO `{prefix}user_profilefields` (`user_id`, `field_name`, `field_value`) VALUES (:user, :name, :value)')
- ->execute([
- 'user' => $currentUser->id,
- 'name' => $field['field_identity'],
- 'value' => $_POST['profile_' . $field['field_identity']],
- ]);
+ DB::table('user_profilefields')
+ ->insert([
+ 'user_id' => $currentUser->id,
+ 'field_name' => $field['field_identity'],
+ 'field_value' => $_POST['profile_' . $field['field_identity']],
+ ]);
}
// Check if there's additional values we should keep in mind
@@ -659,17 +659,12 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
foreach ($field['field_additional'] as $addKey => $addVal) {
// Add to the array
$store = (isset($_POST['profile_additional_' . $addKey]) || !empty($_POST['profile_additional_' . $addKey])) ? $_POST['profile_additional_' . $addKey] : false;
- DBv2::prepare('DELETE FROM `{prefix}user_profilefields` WHERE `user_id` = :user AND `field_name` = :id')
- ->execute([
- 'user' => $currentUser->id,
- 'id' => $addKey,
- ]);
- DBv2::prepare('INSERT INTO `{prefix}user_profilefields` (`user_id`, `field_name`, `field_value`) VALUES (:user, :name, :value)')
- ->execute([
- 'user' => $currentUser->id,
- 'name' => $addKey,
- 'value' => $store,
- ]);
+ DB::table('user_profilefields')
+ ->insert([
+ 'user_id' => $currentUser->id,
+ 'field_name' => $addKey,
+ 'field_value' => $store,
+ ]);
}
}
}
@@ -731,11 +726,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
[$_POST['birthday_year'], $_POST['birthday_month'], $_POST['birthday_day']]
);
- DBv2::prepare('UPDATE `{prefix}users` SET `user_birthday` = :bd WHERE `user_id` = :id')
- ->execute([
- 'bd' => $birthdate,
- 'id' => $currentUser->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $currentUser->id)
+ ->update([
+ 'user_birthday' => $birthdate,
+ ]);
}
break;
@@ -744,27 +739,26 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
// Get profile fields and create storage var
$fields = Users::getOptionFields();
+ // Delete all option fields for this user
+ DB::table('user_optionfields')
+ ->where('user_id', $currentUser->id)
+ ->delete();
+
// Go over each field
foreach ($fields as $field) {
- DBv2::prepare('DELETE FROM `{prefix}user_optionfields` WHERE `user_id` = :user AND `field_name` = :id')
- ->execute([
- 'user' => $currentUser->id,
- 'id' => $field['option_id'],
- ]);
-
// Make sure the user has sufficient permissions to complete this action
if (!$currentUser->permission(constant('Sakura\Perms\Site::' . $field['option_permission']))) {
continue;
}
if (isset($_POST['option_' . $field['option_id']])
- && !empty($_POST['option_' . $field['option_id']])) {
- DBv2::prepare('INSERT INTO `{prefix}user_optionfields` (`user_id`, `field_name`, `field_value`) VALUES (:user, :name, :value)')
- ->execute([
- 'user' => $currentUser->id,
- 'name' => $field['option_id'],
- 'value' => $_POST['option_' . $field['option_id']],
- ]);
+ && !empty($_POST['option_' . $field['option_id']])) {
+ DB::table('user_optionfields')
+ ->insert([
+ 'user_id' => $currentUser->id,
+ 'field_name' => $field['option_id'],
+ 'field_value' => $_POST['option_' . $field['option_id']],
+ ]);
}
}
@@ -801,11 +795,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Update database
- DBv2::prepare('UPDATE `{prefix}users` SET `user_title` = :title WHERE `user_id` = :id')
- ->execute([
- 'title' => (isset($_POST['usertitle']) ? $_POST['usertitle'] : null),
- 'id' => $currentUser->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $currentUser->id)
+ ->update([
+ 'user_title' => (isset($_POST['usertitle']) ? $_POST['usertitle'] : null),
+ ]);
// Set render data
$renderData['page'] = [
@@ -938,11 +932,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Update database
- DBv2::prepare('UPDATE `{prefix}users` SET `user_page` = :up WHERE `user_id` = :id')
- ->execute([
- 'up' => $_POST['userpage'],
- 'id' => $currentUser->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $currentUser->id)
+ ->update([
+ 'user_page' => $_POST['userpage'],
+ ]);
// Set render data
$renderData['page'] = [
@@ -964,11 +958,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Update database
- DBv2::prepare('UPDATE `{prefix}users` SET `user_signature` = :us WHERE `user_id` = :id')
- ->execute([
- 'us' => $_POST['signature'],
- 'id' => $currentUser->id,
- ]);
+ DB::table('users')
+ ->where('user_id', $currentUser->id)
+ ->update([
+ 'user_signature' => $_POST['signature'],
+ ]);
// Set render data
$renderData['page'] = [
@@ -1049,10 +1043,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
// Check if sessionid is set to all
if ($_POST['sessionid'] === 'all') {
// Delete all sessions assigned to the current user
- DBv2::prepare('DELETE FROM `{prefix}sessions` WHERE `user_id` = :user')
- ->execute([
- 'user' => $currentUser->id,
- ]);
+ DB::table('sessions')
+ ->where('user_id', $currentUser->id)
+ ->delete();
// Set render data
$renderData['page'] = [
@@ -1064,12 +1057,11 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Check if the session is owned by the current user
- $us = DBv2::prepare('SELECT * FROM `{prefix}sessions` WHERE `user_id` = :user AND `session_id` = :key');
- $us->execute([
- 'user' => $currentUser->id,
- 'key' => $_POST['sessionid'],
- ]);
- if (!$us->rowCount()) {
+ $us = DB::table('sessions')
+ ->where('user_id', $currentUser->id)
+ ->where('session_id', $_POST['sessionid'])
+ ->count();
+ if (!$us) {
$renderData['page'] = [
'redirect' => $redirect,
'message' => 'The session you tried to kill doesn\'t exist.',
@@ -1079,11 +1071,10 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification
}
// Delete the session
- DBv2::prepare('DELETE FROM `{prefix}sessions` WHERE `user_id` = :user AND `session_id` = :session')
- ->execute([
- 'user' => $currentUser->id,
- 'session' => $_POST['sessionid'],
- ]);
+ DB::table('sessions')
+ ->where('user_id', $currentUser->id)
+ ->where('session_id', $_POST['sessionid'])
+ ->delete();
// Set render data
$renderData['page'] = [
@@ -1235,41 +1226,41 @@ if (Users::checkLogin()) {
],
]/*,
'messages' => [
- 'title' => 'Messages',
- 'modes' => [
- 'inbox' => [
- 'title' => 'Inbox',
- 'description' => [
- 'The list of messages you\'ve received.',
- ],
- 'access' => $currentUser->permission(Site::USE_MESSAGES),
- 'menu' => true,
- ],
- 'sent' => [
- 'title' => 'Sent',
- 'description' => [
- 'The list of messages you\'ve sent to other users.',
- ],
- 'access' => $currentUser->permission(Site::USE_MESSAGES),
- 'menu' => true,
- ],
- 'compose' => [
- 'title' => 'Compose',
- 'description' => [
- 'Write a new message.',
- ],
- 'access' => $currentUser->permission(Site::SEND_MESSAGES),
- 'menu' => true,
- ],
- 'read' => [
- 'title' => 'Read',
- 'description' => [
- 'Read a message.',
- ],
- 'access' => $currentUser->permission(Site::USE_MESSAGES),
- 'menu' => false,
- ],
- ],
+ 'title' => 'Messages',
+ 'modes' => [
+ 'inbox' => [
+ 'title' => 'Inbox',
+ 'description' => [
+ 'The list of messages you\'ve received.',
+ ],
+ 'access' => $currentUser->permission(Site::USE_MESSAGES),
+ 'menu' => true,
+ ],
+ 'sent' => [
+ 'title' => 'Sent',
+ 'description' => [
+ 'The list of messages you\'ve sent to other users.',
+ ],
+ 'access' => $currentUser->permission(Site::USE_MESSAGES),
+ 'menu' => true,
+ ],
+ 'compose' => [
+ 'title' => 'Compose',
+ 'description' => [
+ 'Write a new message.',
+ ],
+ 'access' => $currentUser->permission(Site::SEND_MESSAGES),
+ 'menu' => true,
+ ],
+ 'read' => [
+ 'title' => 'Read',
+ 'description' => [
+ 'Read a message.',
+ ],
+ 'access' => $currentUser->permission(Site::USE_MESSAGES),
+ 'menu' => false,
+ ],
+ ],
]*/,
'notifications' => [
'title' => 'Notifications',
@@ -1519,12 +1510,11 @@ if (Users::checkLogin()) {
// Sessions
case 'advanced.sessions':
- $sessions = DBv2::prepare('SELECT * FROM `{prefix}sessions` WHERE `user_id` = :user');
- $sessions->execute([
- 'user' => $currentUser->id,
- ]);
+ $sessions = DB::table('sessions')
+ ->where('user_id', $currentUser->id)
+ ->get();
- $renderData['sessions'] = $sessions->fetchAll();
+ $renderData['sessions'] = $sessions;
break;
}
diff --git a/routes.php b/routes.php
index 2aa89c9..78182db 100644
--- a/routes.php
+++ b/routes.php
@@ -35,20 +35,20 @@ Router::group(['prefix' => 'news'], function () {
Router::group(['prefix' => 'forum'], function () {
// Thread
Router::group(['prefix' => 'thread'], function () {
- Router::get('/{id}', 'ForumController@thread', 'forums.thread');
- Router::post('/{id}/mod', 'ForumController@threadModerate', 'forums.thread.mod');
+ Router::get('/{id:i}', 'ForumController@thread', 'forums.thread');
+ Router::post('/{id:i}/mod', 'ForumController@threadModerate', 'forums.thread.mod');
});
// Forum
Router::get('/', 'ForumController@index', 'forums.index');
- Router::get('/{id}', 'ForumController@forum', 'forums.forum');
- Router::get('/{id}/mark', 'ForumController@markForumRead', 'forums.mark');
+ Router::get('/{id:i}', 'ForumController@forum', 'forums.forum');
+ Router::get('/{id:i}/mark', 'ForumController@markForumRead', 'forums.mark');
});
// Members
Router::group(['prefix' => 'members'], function () {
Router::get('/', 'UserController@members', 'members.index');
- Router::get('/{rank}', 'UserController@members', 'members.rank');
+ Router::get('/{rank:i}', 'UserController@members', 'members.rank');
});
// User
diff --git a/sakura.php b/sakura.php
index f113cd5..782649b 100644
--- a/sakura.php
+++ b/sakura.php
@@ -8,7 +8,7 @@
namespace Sakura;
// Define Sakura version
-define('SAKURA_VERSION', '20160311');
+define('SAKURA_VERSION', '20160313');
// Define Sakura Path
define('ROOT', __DIR__ . '/');
@@ -65,15 +65,6 @@ Config::init(ROOT . 'config/config.ini');
// Change error reporting according to the dev configuration
error_reporting(Config::local('dev', 'show_errors') ? -1 : 0);
-// Make the database connection
-DBv2::open(
- Config::local('database', 'driver'),
- Config::local('dsn'),
- Config::local('database', 'username'),
- Config::local('database', 'password'),
- Config::local('database', 'prefix')
-);
-
// Create a new database capsule
$capsule = new \Illuminate\Database\Capsule\Manager;
@@ -209,7 +200,9 @@ if (!defined('SAKURA_NO_TPL')) {
}
// Ban checking
- if ($authCheck && !in_array($_SERVER['PHP_SELF'], [$urls->format('AUTH_ACTION', [], false)]) && $ban = Bans::checkBan($currentUser->id)) {
+ if ($authCheck
+ && !in_array($_SERVER['PHP_SELF'], [$urls->format('AUTH_ACTION', [], false)])
+ && $ban = Bans::checkBan($currentUser->id)) {
// Additional render data
Template::vars([
'ban' => [
diff --git a/templates/yuuno/forum/forumMod.twig b/templates/yuuno/forum/forumMod.twig
index cdf074c..f5e0f2c 100644
--- a/templates/yuuno/forum/forumMod.twig
+++ b/templates/yuuno/forum/forumMod.twig
@@ -1,26 +1,18 @@