2018-02-06 06:08:19 +09:00
< ? php
namespace App\Http\Controllers ;
use Illuminate\Support\Facades\DB ;
use Illuminate\Http\Request ;
2018-02-16 23:09:35 +09:00
use Illuminate\Contracts\Routing\ResponseFactory ;
2018-02-06 06:08:19 +09:00
use Illuminate\Support\Facades\Log ;
2018-03-02 00:59:26 +09:00
use App\Http\Controllers\AuthController ;
2018-02-27 01:12:06 +09:00
use App\Http\Controllers\UserController ;
2018-04-12 20:33:31 +09:00
use App\Http\Controllers\PermissionController ; // Remove permission controller soon.
2018-02-27 01:12:06 +09:00
2018-02-06 06:08:19 +09:00
class BoardController extends Controller {
2018-03-02 00:59:26 +09:00
private $objAuth ;
2018-02-27 01:12:06 +09:00
private $objUser ;
private $objPermission ;
public function __construct () {
2018-03-02 00:59:26 +09:00
$this -> objAuth = new AuthController ();
2018-02-27 01:12:06 +09:00
$this -> objUser = new UserController ();
$this -> objPermission = new PermissionController ();
}
2018-02-06 06:08:19 +09:00
public function getCategories () { // /api/rpc/board/category/getcategories
return DB :: table ( 'for_category' )
-> select ( '*' )
-> orderBy ( 'order' , 'asc' )
-> get ();
}
public function getCategory ( $id ) { // /api/rpc/board/category/getcategory/id
return DB :: table ( 'for_category' )
-> select ( '*' )
-> where ( 'id' , $id )
-> get ();
}
2018-02-06 17:24:16 +09:00
public function getCategoryName ( $id ) { // /api/rpc/board/category/getcategoryname/id
return DB :: table ( 'for_category' )
-> select ( 'title' )
-> where ( 'id' , $id )
-> get ();
}
2018-04-17 00:58:49 +09:00
public function readPost ( Request $request ) { // /api/rpc/board/post/read
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_canview' ]) {
$getViews = DB :: table ( 'for_threads' )
-> select ( 'views' )
-> where ( 'id' , $request -> id )
-> first ();
// id, user_id, for_id, last_read
// $getReadTopic = DB::table('for_readthreads')
// id, user_id, top_id, page_id, last_read
// $getReadPost = DB::table('for_readposts')
// ->select('*')
// return $something;
}
else {
return 'Permission denied.' ;
}
}
}
public function addCategory ( Request $request ) { // /api/rpc/board/category/add
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_catmod' ] == 1 ) {
$add = DB :: table ( 'for_category' )
-> insertGetId ([
'title' => $request -> title ,
'order' => $request -> order
]);
return $add ;
}
else {
return 'Permission denied.' ;
}
}
}
public function editCategory ( Request $request ) { // /api/rpc/board/category/edit
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_catmod' ] == 1 ) {
return DB :: table ( 'for_category' )
-> where ( 'id' , $request -> id )
-> update ([
'id' => $request -> id ,
'title' => $request -> title
]);
}
}
}
public function deleteCategory ( Request $request ) { // /api/rpc/board/category/delete
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_catmod' ] == 1 ) {
return DB :: table ( 'for_category' ) -> where ( 'id' , $request -> id ) -> delete ();
}
}
}
2018-04-09 19:40:35 +09:00
public function getForums ( $id ) { // /api/rpc/board/forum/getforums/id
2018-04-17 00:58:49 +09:00
if ( $id == 0 ) {
$get = DB :: table ( 'for_forums' )
-> select ( 'id' , 'last_uid' , 'cat_id' , 'title' , 'description' , 'threads' , 'posts' , 'last_date' )
-> orderBy ( 'order' , 'asc' )
-> get ();
}
else {
$get = DB :: table ( 'for_forums' )
-> select ( 'id' , 'last_uid' , 'cat_id' , 'title' , 'description' , 'threads' , 'posts' , 'last_date' )
-> where ( 'cat_id' , $id )
-> orderBy ( 'order' , 'asc' )
-> get ();
}
2018-03-13 18:52:49 +09:00
$res = array ();
$key = 0 ;
setlocale ( LC_ALL , 'ja_JP.utf8' );
foreach ( $get as $i ) {
array_push ( $res , [
'key' => $key ,
'id' => $i -> id ,
'last_uid' => $i -> last_uid ,
'cat_id' => $i -> cat_id ,
'title' => $i -> title ,
'description' => $i -> description ,
'threads' => $i -> threads ,
'posts' => $i -> posts ,
'last_date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , $i -> last_date )
]);
$key ++ ;
}
return $res ;
2018-02-06 06:08:19 +09:00
}
2018-02-06 17:24:16 +09:00
public function getForum ( $id ) { // /api/rpc/board/forum/getforum/id
return DB :: table ( 'for_forums' )
-> select ( '*' )
-> where ( 'id' , $id )
-> orderBy ( 'order' , 'asc' )
-> get ();
}
2018-04-14 00:09:37 +09:00
public function addForum ( Request $request ) { // /api/rpc/board/forum/add
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_formod' ] == 1 ) {
$add = DB :: table ( 'for_forums' )
-> insertGetId ([
'last_uid' => 0 ,
'cat_id' => $request -> cat_id ,
'title' => $request -> title ,
'description' => $request -> description ,
'threads' => 0 ,
'posts' => 0 ,
'last_date' => 0 ,
'min_power' => 0 ,
'permission' => 0 ,
'readonly' => $request -> ro ,
'post_count_freeze' => $request -> pcf ,
'order' => $request -> order ,
'parent' => 0
]);
return $add ;
}
else {
return 'Permission denied.' ;
}
}
}
public function editForum ( Request $request ) { // /api/rpc/board/forum/edit
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_formod' ] == 1 ) {
return DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> id )
-> update ([
'cat_id' => $request -> cat_id ,
'title' => $request -> title ,
'description' => $request -> description ,
'readonly' => $request -> ro ,
'post_count_freeze' => $request -> pcf
]);
}
}
}
public function deleteForum ( Request $request ) { // /api/rpc/board/forum/delete
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_formod' ] == 1 ) {
return DB :: table ( 'for_forums' ) -> where ( 'id' , $request -> id ) -> delete ();
}
}
}
2018-02-16 23:09:35 +09:00
public function getForumIdFromTopic ( $id ) { // /api/rpc/board/topic/getforumidfromtopic/id
return DB :: table ( 'for_threads' )
-> select ( 'for_id' )
-> where ( 'id' , $id )
-> first () -> for_id ;
}
public function getTopicIdFromPost ( $id ) { // /api/rpc/board/post/gettopicidfrompost/id
return DB :: table ( 'for_posts' )
-> select ( 'top_id' )
-> where ( 'id' , $id )
-> first () -> top_id ;
}
public function getForumIdFromPost ( $id ) { // /api/rpc/board/post/getforumidfrompost/id
$top_id = $this -> getTopicIdFromPost ( $id );
return $this -> getForumIdFromTopic ( $top_id );
}
2018-02-06 17:24:16 +09:00
public function getForumName ( $id ) { // /api/rpc/board/forum/getforumname/id
return DB :: table ( 'for_forums' )
-> select ( 'cat_id' , 'title' )
-> where ( 'id' , $id )
-> orderBy ( 'order' , 'asc' )
-> get ();
}
2018-02-16 23:09:35 +09:00
public function getPostCountFreeze ( $id ) { // /api/rpc/board/forum/getpostcountfreeze/id
return DB :: table ( 'for_forums' )
-> select ( 'post_count_freeze' )
-> where ( 'id' , $id )
-> first () -> post_count_freeze ;
}
public function getReadOnly ( $id ) { // /api/rpc/board/forum/getreadonly/id
return DB :: table ( 'for_forums' )
-> select ( 'readonly' )
-> where ( 'id' , $id )
-> first () -> readonly ;
}
2018-02-06 16:12:00 +09:00
public function getForumsInCategory ( $cat_id ) { // /api/rpc/board/forum/getforumsincategory/cat_id
2018-03-13 18:52:49 +09:00
$get = DB :: table ( 'for_forums' )
-> select ( 'id' , 'last_uid' , 'cat_id' , 'title' , 'description' , 'threads' , 'posts' , 'last_date' )
2018-02-06 06:08:19 +09:00
-> where ( 'cat_id' , $cat_id )
2018-03-13 18:52:49 +09:00
-> orderBy ( 'order' , 'asc' )
2018-02-06 06:08:19 +09:00
-> get ();
2018-03-13 18:52:49 +09:00
$res = array ();
$key = 0 ;
setlocale ( LC_ALL , 'ja_JP.utf8' );
foreach ( $get as $i ) {
array_push ( $res , [
'key' => $key ,
'id' => $i -> id ,
'last_uid' => $i -> last_uid ,
'cat_id' => $i -> cat_id ,
'title' => $i -> title ,
'description' => $i -> description ,
'threads' => $i -> threads ,
'posts' => $i -> posts ,
'last_date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , $i -> last_date )
]);
$key ++ ;
}
return $res ;
2018-02-06 06:08:19 +09:00
}
2018-02-06 17:24:16 +09:00
public function getTopics ( $for , $from , $to ) { // /api/rpc/board/topic/gettopics/for/from/to
return DB :: table ( 'for_threads' )
-> select ( '*' )
2018-02-19 21:08:56 +09:00
-> where ( 'for_id' , $for )
2018-02-06 17:24:16 +09:00
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'last_date' , 'desc' )
-> get ();
}
2018-03-02 00:59:26 +09:00
public function getTopicsUnpinned ( $for , $from , $to ) { // /api/rpc/board/topic/gettopicsunpinned/for/from/to
2018-02-06 17:24:16 +09:00
return DB :: table ( 'for_threads' )
-> select ( '*' )
2018-03-02 00:59:26 +09:00
-> where ( 'for_id' , $for )
2018-02-06 17:24:16 +09:00
-> where ( 'sticky' , 0 )
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'last_date' , 'desc' )
-> get ();
}
2018-03-02 00:59:26 +09:00
public function getTopicsPinned ( $for , $from , $to ) { // /api/rpc/board/topic/gettopicspinned/for/from/to
2018-02-06 17:24:16 +09:00
return DB :: table ( 'for_threads' )
-> select ( '*' )
2018-03-02 00:59:26 +09:00
-> where ( 'for_id' , $for )
2018-02-06 17:24:16 +09:00
-> where ( 'sticky' , 1 )
-> orderBy ( 'last_date' , 'desc' )
-> get ();
}
2018-03-02 00:59:26 +09:00
public function getTopicsUser ( $user , $from , $to ) { // /api/rpc/board/topic/gettopicsuser/user/from/to
return DB :: table ( 'for_threads' )
-> select ( '*' )
-> where ( 'started_by' , $user )
-> orderBy ( 'last_date' , 'desc' )
-> get ();
}
2018-02-19 21:08:56 +09:00
public function getTopicStart ( $top_id ) { // /api/rpc/board/post/gettopicstart/top_id
2018-02-19 21:31:08 +09:00
$uid = DB :: table ( 'for_posts' )
2018-02-19 21:08:56 +09:00
-> where ( 'top_id' , $top_id )
2018-02-19 21:31:08 +09:00
-> orderBy ( 'post_date' , 'asc' )
-> value ( 'user_id' );
$pdt = DB :: table ( 'for_posts' )
-> where ( 'top_id' , $top_id )
-> orderBy ( 'post_date' , 'asc' )
-> value ( 'post_date' );
return array (
'uid' => $uid ,
'date' => $pdt
);
2018-02-19 21:08:56 +09:00
}
public function getLastPost ( $top_id ) { // /api/rpc/board/post/getlastpost/top_id
2018-02-19 21:31:08 +09:00
$uid = DB :: table ( 'for_posts' )
2018-02-19 21:08:56 +09:00
-> where ( 'top_id' , $top_id )
2018-02-19 21:31:08 +09:00
-> orderBy ( 'post_date' , 'desc' )
-> value ( 'user_id' );
$pdt = DB :: table ( 'for_posts' )
-> where ( 'top_id' , $top_id )
-> orderBy ( 'post_date' , 'desc' )
-> value ( 'post_date' );
return array (
'uid' => $uid ,
'date' => $pdt
);
2018-02-19 21:08:56 +09:00
}
2018-04-23 18:15:11 +09:00
public function getLastPostOfForum ( $for_id ) {
setlocale ( LC_ALL , 'ja_JP.utf8' );
$tid = DB :: table ( 'for_threads' )
-> join ( 'for_posts' , 'for_posts.top_id' , 'for_threads.id' )
-> where ( 'for_id' , $for_id )
-> orderBy ( 'for_posts.post_date' , 'desc' )
-> first ( array (
'for_threads.id as tid' ,
'for_posts.user_id as uid' ,
'for_posts.post_date as date'
));
return array (
'tid' => $tid -> tid ,
'uid' => $tid -> uid ,
'date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , date ( $tid -> date ))
);
}
2018-02-19 22:35:31 +09:00
public function getFirstAndLastPosts ( $top_id ) { // /api/rpc/board/post/getfirstandlastposts/top_id
$first = $this -> getTopicStart ( $top_id );
$last = $this -> getLastPost ( $top_id );
return array (
'first' => $first ,
'last' => $last
);
}
2018-02-06 17:24:16 +09:00
public function countUnpinnedTopicsInForum ( $for_id ) { // /api/rpc/board/topic/countunpinnedtopicsinforum/for_id
return DB :: table ( 'for_threads' )
-> where ( 'for_id' , $for_id )
-> where ( 'sticky' , 0 )
-> count ();
}
2018-02-06 19:51:43 +09:00
public function getTopic ( $id , $from , $to ) { // /api/rpc/board/topic/gettopic/id/from/to
2018-02-06 17:24:16 +09:00
return DB :: table ( 'for_threads' )
-> select ( '*' )
-> where ( 'id' , $id )
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'last_date' , 'desc' )
-> get ();
}
2018-02-06 19:51:43 +09:00
public function getTopicLock ( $id ) { // /api/rpc/board/topic/gettopiclock/id
return DB :: table ( 'for_threads' )
-> select ( 'lock' )
-> where ( 'id' , $id )
-> get ();
}
2018-04-13 00:02:50 +09:00
public function getTopicPin ( $id ) { // /api/rpc/board/topic/gettopicpin/id
return DB :: table ( 'for_threads' )
-> select ( 'sticky' )
-> where ( 'id' , $id )
-> get ();
}
2018-02-06 19:51:43 +09:00
public function getTopicName ( $id ) { // /api/rpc/board/topic/gettopicname/id
return DB :: table ( 'for_threads' )
-> select ( 'for_id' , 'title' )
-> where ( 'id' , $id )
-> get ();
}
public function getPostsInTopic ( $top_id , $from , $to ) { // /api/rpc/board/post/getpostsintopic/top_id/from/to
return DB :: table ( 'for_posts' )
-> select ( '*' )
-> where ( 'top_id' , $top_id )
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'post_date' , 'asc' )
-> get ();
}
public function countPostsInTopic ( $top_id ) { // /api/rpc/board/post/countpostsintopic/top_id
return DB :: table ( 'for_posts' )
-> where ( 'top_id' , $top_id )
-> count ();
}
public function getPost ( $id ) { // /api/rpc/board/post/getpost/id
return DB :: table ( 'for_posts' )
-> select ( '*' )
-> where ( 'id' , $id )
-> get ();
}
2018-02-16 18:19:37 +09:00
public function getCurrentPostCount ( $user_id ) { // /api/rpc/board/post/getcurrentpostcount/user_id
return DB :: table ( 'for_posts' ) -> where ( 'user_id' , $user_id ) -> max ( 'postcount' );
}
public function getNextPostCount ( $user_id ) { // /api/rpc/board/post/getnextpostcount/user_id
$get = DB :: table ( 'for_posts' ) -> where ( 'user_id' , $user_id ) -> max ( 'postcount' );
$get ++ ;
return $get ;
}
2018-04-12 20:33:31 +09:00
public function getPostsofUser ( $user_id , $from , $to , Request $request ) {
$getting = array (
'for_posts.id' ,
'top_id' ,
'for_posts.user_id' ,
'post_date' ,
'message' ,
'delete' ,
'lastedit' ,
'ipaddress' ,
'delreason' ,
'nolayout' ,
'postcount' ,
'username' ,
'perm_id' ,
'total_posts' ,
'header' ,
'footer' ,
'member_title' ,
'gender' ,
'avatar' ,
'name_style' ,
'display_name' ,
'country'
);
// $valid = $this->objAuth->getPermissions($request->username, $request->password);
2018-03-02 00:59:26 +09:00
return DB :: table ( 'for_posts' )
-> join ( 'users' , 'for_posts.user_id' , '=' , 'users.id' )
-> join ( 'usr_details' , 'usr_details.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_profile' , 'usr_profile.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_perm_id' , 'usr_perm_id.user_id' , '=' , 'for_posts.user_id' )
-> where ( 'users.id' , $user_id )
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'for_posts.post_date' , 'asc' )
2018-04-12 20:33:31 +09:00
-> get ( $getting );
}
public function getUserPosts ( $top_id , $from , $to , Request $request ) { // /api/rpc/board/post/getuserposts/top/from/to
$getting = array (
'for_posts.id' ,
'top_id' ,
'for_posts.user_id' ,
'post_date' ,
'message' ,
'delete' ,
'lastedit' ,
'ipaddress' ,
'delreason' ,
'nolayout' ,
'postcount' ,
'username' ,
'perm_id' ,
'total_posts' ,
'header' ,
'footer' ,
'member_title' ,
'gender' ,
'avatar' ,
'name_style' ,
'display_name' ,
'country'
);
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
2018-02-06 19:51:43 +09:00
return DB :: table ( 'for_posts' )
2018-02-07 22:24:41 +09:00
-> join ( 'users' , 'for_posts.user_id' , '=' , 'users.id' )
2018-02-07 21:38:42 +09:00
-> join ( 'usr_details' , 'usr_details.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_profile' , 'usr_profile.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_perm_id' , 'usr_perm_id.user_id' , '=' , 'for_posts.user_id' )
2018-02-06 19:51:43 +09:00
-> where ( 'for_posts.top_id' , $top_id )
-> offset ( $from )
-> limit ( $to )
-> orderBy ( 'for_posts.post_date' , 'asc' )
2018-04-12 20:33:31 +09:00
-> get ( $getting );
}
public function getUserPost ( $id , Request $request ) { // /api/rpc/board/post/getuserpost/id
$getting = array (
'for_posts.id' ,
'top_id' ,
'for_posts.user_id' ,
'post_date' ,
'message' ,
'delete' ,
'lastedit' ,
'ipaddress' ,
'delreason' ,
'nolayout' ,
'postcount' ,
'username' ,
'perm_id' ,
'total_posts' ,
'header' ,
'footer' ,
'member_title' ,
'gender' ,
'avatar' ,
'name_style' ,
'display_name' ,
'country'
);
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
2018-02-06 19:51:43 +09:00
return DB :: table ( 'for_posts' )
2018-02-07 22:24:41 +09:00
-> join ( 'users' , 'for_posts.user_id' , '=' , 'users.id' )
2018-02-07 21:38:42 +09:00
-> join ( 'usr_details' , 'usr_details.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_profile' , 'usr_profile.user_id' , '=' , 'for_posts.user_id' )
-> join ( 'usr_perm_id' , 'usr_perm_id.user_id' , '=' , 'for_posts.user_id' )
2018-02-06 19:51:43 +09:00
-> where ( 'for_posts.id' , $id )
-> orderBy ( 'for_posts.post_date' , 'asc' )
2018-04-12 20:33:31 +09:00
-> get ( $getting );
2018-02-06 19:51:43 +09:00
}
2018-02-15 06:39:26 +09:00
2018-04-13 17:52:33 +09:00
public function addTopic ( Request $request ) { // /api/rpc/board/topic/addtopic
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_post' ] == 1 ) {
$addTopic = DB :: table ( 'for_threads' )
-> insertGetId ([
'for_id' => $request -> for_id ,
'title' => $request -> title ,
'started_by' => $request -> user_id ,
'replies' => 0 ,
'views' => 0 ,
'last_date' => time (),
'last_uid' => $request -> user_id ,
'sticky' => 0 ,
'lock' => 0 ,
'poll' => 0 ,
'read' => '' ,
'lang_id' => 1
]);
DB :: table ( 'for_posts' )
-> insert ([
'top_id' => $addTopic ,
'user_id' => $request -> user_id ,
'post_date' => time (),
'message' => $request -> message ,
'delete' => 0 ,
'lastedit' => 0 ,
'ipaddress' => $request -> ipaddress ,
'delreason' => '' ,
'nolayout' => $request -> nolayout ,
'postcount' => $request -> postcount ,
// Deprecated: remove like and read stuff after full release!
'likes' => 0 ,
'likers' => '' ,
'read' => ''
]);
2018-04-13 18:12:32 +09:00
return $addTopic ;
2018-04-13 17:52:33 +09:00
}
else {
return 'Permission denied.' ;
}
}
}
2018-02-15 06:39:26 +09:00
public function addPost ( Request $request ) { // /api/rpc/board/post/addpost
2018-04-12 20:33:31 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
2018-02-16 23:09:35 +09:00
2018-04-12 20:33:31 +09:00
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_post' ] == 1 ) {
$add = DB :: table ( 'for_posts' )
-> insert ([
'top_id' => $request -> top_id ,
'user_id' => $request -> user_id ,
'post_date' => $request -> post_date ,
'message' => $request -> message ,
'delete' => 0 ,
'lastedit' => 0 ,
'ipaddress' => $request -> ipaddress ,
'delreason' => '' ,
'nolayout' => $request -> nolayout ,
'postcount' => $request -> postcount ,
// Deprecated: remove like and read stuff after full release!
'likes' => 0 ,
'likers' => '' ,
'read' => ''
]);
return \Response :: json ( $add );
}
else {
return 'Permission denied.' ;
}
}
2018-02-15 06:39:26 +09:00
}
public function editPost ( Request $request ) { // /api/rpc/board/post/editpost
2018-04-12 20:33:31 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_editother' ] == 1 || $valid [ 'for_editown' ] == 1 ) { // TODO: differenciate own from other.
return DB :: table ( 'for_posts' )
-> where ( 'id' , $request -> id )
-> update ([
'lastedit' => $request -> lastedit ,
'message' => $request -> message ,
'nolayout' => $request -> nolayout
]);
}
}
2018-02-15 06:39:26 +09:00
}
public function deletePost ( Request $request ) { // /api/rpc/board/post/deletepost
2018-04-12 20:33:31 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_del' ] == 1 ) {
return DB :: table ( 'for_posts' )
-> where ( 'id' , $request -> id )
-> update ([
'delete' => 1 ,
'delreason' => $request -> delreason
]);
}
}
2018-02-15 06:39:26 +09:00
}
2018-04-13 00:02:50 +09:00
public function lockTopic ( Request $request ) { // /api/rpc/board/topic/lock
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_locky' ] == 1 ) {
return DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'lock' => 1
]);
}
2018-04-17 00:58:49 +09:00
else {
return 'Permission denied.' ;
}
2018-04-13 00:02:50 +09:00
}
}
public function unlockTopic ( Request $request ) { // /api/rpc/board/topic/unlock
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_locky' ] == 1 ) {
return DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'lock' => 0
]);
}
2018-04-17 00:58:49 +09:00
else {
return 'Permission denied.' ;
}
2018-04-13 00:02:50 +09:00
}
}
public function moveTopic ( Request $request ) { // /api/rpc/board/topic/move
2018-04-17 00:58:49 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
2018-04-13 00:02:50 +09:00
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_move' ] == 1 ) {
2018-04-17 00:58:49 +09:00
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> old_id )
-> decrement ( 'threads' , 1 );
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> old_id )
-> decrement ( 'posts' , 1 );
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> new_id )
-> increment ( 'threads' , 1 );
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> new_id )
-> increment ( 'posts' , 1 );
$getLastTopic = DB :: table ( 'for_threads' )
-> select ( 'last_date' , 'last_uid' )
-> where ( 'for_id' , $request -> old_id )
-> orderBy ( 'last_date' , 'desc' )
-> offset ( 1 )
-> limit ( 1 )
-> get ();
$getCurrentTopic = DB :: table ( 'for_threads' )
-> select ( 'last_date' , 'last_uid' )
-> where ( 'for_id' , $request -> old_id )
-> orderBy ( 'last_date' , 'desc' )
-> offset ( 0 )
-> limit ( 1 )
-> get ();
// Old forum.
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> old_id )
-> update ([
'last_uid' => $getLastTopic [ 0 ] -> last_uid ,
'last_date' => $getLastTopic [ 0 ] -> last_date
]);
DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'for_id' => $request -> new_id
]);
// New forum.
DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> new_id )
-> update ([
'last_uid' => $getCurrentTopic [ 0 ] -> last_uid ,
'last_date' => $getCurrentTopic [ 0 ] -> last_date
]);
return 'Success' ;
}
else {
return 'Permission denied.' ;
}
}
}
public function bookmarkForum ( Request $request ) { // /api/rpc/board/forum/bookmark
/* $check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_canview' ] == 1 ) {
return DB :: table ( 'for_forums' )
-> where ( 'id' , $request -> id )
-> update ([
'delete' => 0 ,
'delreason' => ''
]);
}
} */
}
public function bookmarkTopic ( Request $request ) { // /api/rpc/board/topic/bookmark
/* $check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_canview' ] == 1 ) {
2018-04-13 00:02:50 +09:00
return DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'delete' => 0 ,
'delreason' => ''
]);
}
} */
}
2018-04-17 00:58:49 +09:00
public function splitPost ( Request $request ) { // /api/rpc/board/post/split
/* $check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_split' ] == 1 ) {
return DB :: table ( 'for_posts' )
-> where ( 'id' , $request -> id )
-> update ([
'delete' => 0 ,
'delreason' => ''
]);
}
} */
}
2018-04-13 00:02:50 +09:00
public function mergeTopic ( Request $request ) { // /api/rpc/board/topic/merge
2018-04-18 15:24:08 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
2018-04-13 00:02:50 +09:00
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_mergepost' ] == 1 ) {
2018-04-18 15:24:08 +09:00
DB :: table ( 'for_posts' )
-> where ( 'top_id' , $request -> id )
2018-04-13 00:02:50 +09:00
-> update ([
2018-04-18 15:24:08 +09:00
'top_id' => $request -> alt_id
2018-04-13 00:02:50 +09:00
]);
2018-04-18 15:24:08 +09:00
DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> delete ();
return 'Success!' ;
2018-04-13 00:02:50 +09:00
}
2018-04-18 15:24:08 +09:00
else {
return 'Permission denied.' ;
}
}
2018-04-13 00:02:50 +09:00
}
public function pinTopic ( Request $request ) { // /api/rpc/board/topic/pin
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_sticky' ] == 1 ) {
return DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'sticky' => 1
]);
}
2018-04-17 00:58:49 +09:00
else {
return 'Permission denied.' ;
}
2018-04-13 00:02:50 +09:00
}
}
public function unpinTopic ( Request $request ) { // /api/rpc/board/topic/unpin
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_sticky' ] == 1 ) {
return DB :: table ( 'for_threads' )
-> where ( 'id' , $request -> id )
-> update ([
'sticky' => 0
]);
}
}
}
2018-02-15 06:39:26 +09:00
public function undeletePost ( Request $request ) { // /api/rpc/board/post/undeletepost
2018-04-12 20:33:31 +09:00
$check = $this -> objAuth -> checkLegit ( $request -> username , $request -> password );
if ( $check == 0 ) {
return 'Err!' ;
}
else {
$valid = $this -> objAuth -> getPermissions ( $request -> username , $request -> password );
if ( $valid [ 'for_del' ] == 1 ) {
return DB :: table ( 'for_posts' )
-> where ( 'id' , $request -> id )
-> update ([
'delete' => 0 ,
'delreason' => ''
]);
}
2018-04-17 00:58:49 +09:00
else {
return 'Permission denied.' ;
}
2018-04-12 20:33:31 +09:00
}
2018-02-15 06:39:26 +09:00
}
2018-02-27 01:12:06 +09:00
2018-04-23 18:15:11 +09:00
public function countPostsInForum ( $id ) {
return DB :: table ( 'for_threads' )
-> join ( 'for_posts' , 'for_posts.top_id' , 'for_threads.id' )
-> where ( 'for_threads.for_id' , $id )
-> count ();
}
2018-04-12 20:33:31 +09:00
public function browseCategories ( Request $request ) { // /api/rpc/board/browse/browsecategories
2018-04-09 19:40:35 +09:00
$cats = $this -> getCategories () -> toArray ();
$cols = $this -> objUser -> getGroupColours () -> toArray ();
$res = array ();
$resC = array ();
foreach ( $cats as $c ) {
$cid = $c -> id ;
$ctitle = $c -> title ;
$fors = $this -> getForumsInCategory ( $cid );
$resF = array ();
foreach ( $fors as $f ) {
2018-04-23 18:15:11 +09:00
$ldet = $this -> getLastPostOfForum ( $f [ 'id' ]);
$topicsuu = DB :: table ( 'for_threads' ) -> where ( 'for_id' , $f [ 'id' ]) -> count ();
$replysuu = $this -> countPostsInForum ( $f [ 'id' ]);
2018-04-14 00:09:37 +09:00
if ( $f [ 'last_uid' ] != 0 ) {
2018-04-23 18:15:11 +09:00
$user = $this -> objUser -> getUser ( $ldet [ 'uid' ], $request ) -> toArray ();
2018-04-14 00:09:37 +09:00
$showName = " " ;
$showCol = " " ;
2018-04-09 19:40:35 +09:00
2018-04-14 00:09:37 +09:00
if ( $user [ 0 ] -> display_name !== '' ) {
$showName = $user [ 0 ] -> display_name ;
}
else {
$showName = $user [ 0 ] -> username ;
}
2018-04-09 19:40:35 +09:00
2018-04-14 00:09:37 +09:00
if ( $user [ 0 ] -> name_style !== '' ) {
$showCol = $user [ 0 ] -> name_style ;
}
else {
foreach ( $cols as $cl ) {
if ( $cl -> id === $user [ 0 ] -> perm_id ) {
if ( $user [ 0 ] -> gender === 1 ) $showCol = $cl -> colour_m ;
else if ( $user [ 0 ] -> gender === 2 ) $showCol = $cl -> colour_f ;
else $showCol = $cl -> colour_u ;
}
2018-04-09 19:40:35 +09:00
}
}
}
2018-04-14 00:09:37 +09:00
else {
$showName = " " ;
$showCol = " " ;
}
2018-04-09 19:40:35 +09:00
// Compile.
$resF [] = array (
'c_id' => $c -> id ,
'c_name' => $c -> title ,
'f_id' => $f [ 'id' ],
'u_name' => $showName ,
'u_col' => $showCol ,
'f_cat' => $f [ 'cat_id' ],
2018-04-23 18:15:11 +09:00
'f_last_uid' => $ldet [ 'uid' ],
2018-04-09 19:40:35 +09:00
'f_name' => $f [ 'title' ],
'f_desc' => $f [ 'description' ],
2018-04-23 18:15:11 +09:00
'f_topics' => $topicsuu ,
'f_posts' => $replysuu ,
'f_last' => $ldet [ 'date' ]
2018-04-09 19:40:35 +09:00
);
}
$res [] = array (
'cats' => array (
'id' => $c -> id ,
'name' => $c -> title
),
'fors' => $resF
);
}
return $res ;
}
2018-04-13 17:55:10 +09:00
public function browseForums ( $id , $from , $to , Request $request ) { // /api/rpc/board/browse/browseforums/id/from/to
2018-04-09 19:40:35 +09:00
$fors = $this -> getForums ( $id );
$cols = $this -> objUser -> getGroupColours () -> toArray ();
$res = array ();
foreach ( $fors as $f ) {
2018-04-14 00:09:37 +09:00
if ( $f [ 'last_uid' ] != 0 ) {
$user = $this -> objUser -> getUser ( $f [ 'last_uid' ], $request ) -> toArray ();
2018-04-09 19:40:35 +09:00
2018-04-14 00:09:37 +09:00
$showName = " " ;
$showCol = " " ;
2018-04-09 19:40:35 +09:00
2018-04-14 00:09:37 +09:00
if ( $user [ 0 ] -> display_name !== '' ) {
$showName = $user [ 0 ] -> display_name ;
}
else {
$showName = $user [ 0 ] -> username ;
}
if ( $user [ 0 ] -> name_style !== '' ) {
$showCol = $user [ 0 ] -> name_style ;
}
else {
foreach ( $cols as $cl ) {
if ( $cl -> id === $user [ 0 ] -> perm_id ) {
if ( $user [ 0 ] -> gender === 1 ) $showCol = $cl -> colour_m ;
else if ( $user [ 0 ] -> gender === 2 ) $showCol = $cl -> colour_f ;
else $showCol = $cl -> colour_u ;
}
2018-04-09 19:40:35 +09:00
}
}
}
2018-04-14 00:09:37 +09:00
else {
$showName = " " ;
$showCol = " " ;
}
2018-04-09 19:40:35 +09:00
$catname = $this -> getCategoryName ( $id );
// Compile.
$res [] = array (
'f_id' => $f [ 'id' ],
'f_last_uid' => $f [ 'last_uid' ],
'f_cat' => $f [ 'cat_id' ],
'f_name' => $f [ 'title' ],
'f_desc' => $f [ 'description' ],
'f_topics' => $f [ 'threads' ],
'f_posts' => $f [ 'posts' ],
'f_last' => $f [ 'last_date' ],
'c_name' => $catname [ 0 ] -> title ,
'u_name' => $showName ,
'u_col' => $showCol
);
}
return $res ;
}
public function browseForumInfo ( $id , $to ) { // /api/rpc/board/browse/browseforuminfo/id/to
}
2018-04-12 20:33:31 +09:00
public function browseTopics ( $mode , $id , $from , $to , Request $request ) { // /api/rpc/board/browse/browsetopicsmode/id/from/to
2018-04-10 16:08:44 +09:00
$topsUP = $this -> getTopicsUnpinned ( $id , $from , $to );
$topsPN = $this -> getTopicsPinned ( $id , $from , $to );
$topsUS = $this -> getTopicsUser ( $id , $from , $to );
$cols = $this -> objUser -> getGroupColours () -> toArray ();
$tops = null ;
if ( $mode === 'unpinned' ) {
$tops = $topsUP ;
}
else if ( $mode === 'pinned' ) {
$tops = $topsPN ;
}
else if ( $mode === 'user' ) {
$tops = $topsUS ;
}
else {
return array (
'error' => 'Invalid mode.'
);
}
$res = array ();
foreach ( $tops as $t ) {
2018-04-23 18:15:11 +09:00
$replysuu = DB :: table ( 'for_posts' ) -> where ( 'top_id' , $t -> id ) -> count ();
2018-04-10 16:08:44 +09:00
$fplp = $this -> getFirstAndLastPosts ( $t -> id );
$userFD = $fplp [ 'first' ][ 'date' ];
$userLD = $fplp [ 'last' ][ 'date' ];
2018-04-12 20:33:31 +09:00
$userFirst = $this -> objUser -> getUser ( $fplp [ 'first' ][ 'uid' ], $request ) -> toArray ();
$userLast = $this -> objUser -> getUser ( $fplp [ 'last' ][ 'uid' ], $request ) -> toArray ();
2018-04-10 16:08:44 +09:00
$showNameF = " " ;
$showColF = " " ;
$showNameL = " " ;
$showColL = " " ;
if ( $userFirst [ 0 ] -> display_name !== '' ) {
$showNameF = $userFirst [ 0 ] -> display_name ;
}
else {
$showNameF = $userFirst [ 0 ] -> username ;
}
if ( $userFirst [ 0 ] -> name_style !== '' ) {
$showColF = $userFirst [ 0 ] -> name_style ;
}
else {
foreach ( $cols as $cl ) {
if ( $cl -> id === $userFirst [ 0 ] -> perm_id ) {
if ( $userFirst [ 0 ] -> gender === 1 ) $showColF = $cl -> colour_m ;
else if ( $userFirst [ 0 ] -> gender === 2 ) $showColF = $cl -> colour_f ;
else $showColF = $cl -> colour_u ;
}
}
}
if ( $userLast [ 0 ] -> display_name !== '' ) {
$showNameL = $userLast [ 0 ] -> display_name ;
}
else {
$showNameL = $userLast [ 0 ] -> username ;
}
if ( $userLast [ 0 ] -> name_style !== '' ) {
$showColL = $userLast [ 0 ] -> name_style ;
}
else {
foreach ( $cols as $cl ) {
if ( $cl -> id === $userLast [ 0 ] -> perm_id ) {
if ( $userLast [ 0 ] -> gender === 1 ) $showColL = $cl -> colour_m ;
else if ( $userLast [ 0 ] -> gender === 2 ) $showColL = $cl -> colour_f ;
else $showColL = $cl -> colour_u ;
}
}
}
2018-04-23 18:15:11 +09:00
setlocale ( LC_ALL , 'ja_JP.utf8' );
2018-04-10 16:08:44 +09:00
$catname = $this -> getCategoryName ( $id );
// Compile.
$res [] = array (
't_id' => $t -> id ,
't_for_id' => $t -> for_id ,
't_title' => $t -> title ,
2018-04-23 18:15:11 +09:00
't_replies' => $replysuu ,
2018-04-10 16:08:44 +09:00
't_views' => $t -> views ,
't_first_date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , date ( $userFD )),
't_last_date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , date ( $userLD )),
't_sticky' => $t -> sticky ,
't_lock' => $t -> lock ,
't_poll' => $t -> poll ,
't_read' => $t -> read ,
't_lang_id' => $t -> lang_id ,
'u_first_uid' => $t -> started_by ,
'u_last_uid' => $t -> last_uid ,
'u_first_name' => $showNameF ,
'u_last_name' => $showNameL ,
'u_first_col' => $showColF ,
'u_last_col' => $showColL
);
}
return $res ;
2018-04-09 19:40:35 +09:00
}
public function browseTopicInfo ( $tp , $id , $to ) { // /api/rpc/board/browse/browsetopicinfo/tp/id/to
2018-02-27 01:12:06 +09:00
if ( $tp == 'p' ) {
// Get information for the navigation.
$tid = $this -> getTopicIdFromPost ( $id );
$tinfo = $this -> getTopicName ( $tid );
}
else {
// Get information for the navigation.
$tinfo = $this -> getTopicName ( $id );
}
$finfo = $this -> getForumName ( $tinfo [ 0 ] -> for_id );
$cinfo = $this -> getCategoryName ( $finfo [ 0 ] -> cat_id );
// Count posts for navigation.
if ( $tp == 't' ) $pcount = $this -> countPostsInTopic ( $id );
// Is this topic locked?
if ( $tp == 't' ) $tlock = $this -> getTopicLock ( $id );
else $tlock = $this -> getTopicLock ( $tid );
$glock = false ;
if ( $tlock [ 0 ] -> lock == 0 ) $glock = false ;
else $glock = true ;
2018-04-13 00:02:50 +09:00
// Is this topic pinned?
if ( $tp == 't' ) $tpin = $this -> getTopicPin ( $id );
else $tpin = $this -> getTopicPin ( $tid );
$gpin = false ;
if ( $tpin [ 0 ] -> sticky == 0 ) $gpin = false ;
else $gpin = true ;
2018-02-27 01:12:06 +09:00
if ( $tp == 'p' ) {
// Compile.
return array (
'topId' => $tid ,
'forId' => $tinfo [ 0 ] -> for_id ,
'topName' => $tinfo [ 0 ] -> title ,
'catId' => $finfo [ 0 ] -> cat_id ,
'forName' => $finfo [ 0 ] -> title ,
'catName' => $cinfo [ 0 ] -> title ,
'lock' => $glock ,
2018-04-13 00:02:50 +09:00
'pin' => $gpin
2018-02-27 01:12:06 +09:00
);
}
else {
// Compile.
return array (
'forId' => $tinfo [ 0 ] -> for_id ,
'topName' => $tinfo [ 0 ] -> title ,
'catId' => $finfo [ 0 ] -> cat_id ,
'forName' => $finfo [ 0 ] -> title ,
'catName' => $cinfo [ 0 ] -> title ,
'maxPage' => ceil ( $pcount / $to ),
2018-03-30 21:07:22 +09:00
'posts' => $pcount ,
2018-02-27 01:12:06 +09:00
'lock' => $glock ,
2018-04-13 00:02:50 +09:00
'pin' => $gpin
2018-02-27 01:12:06 +09:00
);
}
}
2018-02-27 22:57:47 +09:00
public function stripBR ( $string ) {
return preg_replace ( '/\<br(\s*)?\/?\>/i' , '' , $string );
}
public function autoLink ( $s ) {
if ( strpos ( $s , '[link=' ) !== false || strpos ( $s , '[/link]' ) !== false ) {
return $s ;
}
else if ( strpos ( $s , '<a href=' ) !== false || strpos ( $s , '</a>' ) !== false ) {
return $s ;
}
else if ( strpos ( $s , '[img]' ) !== false || strpos ( $s , '[/img]' ) !== false ) {
return $s ;
}
else {
return preg_replace ( '!(\s|^)((https?://|www\.)+[a-z0-9_%./#?=;&-]+)!i' , ' <a href="$2" target="_blank">$2</a> ' , $s );
}
}
function getBBCode ( $text ) {
$find = array (
'~\[b\](.*?)\[/b\]~s' ,
'~\[i\](.*?)\[/i\]~s' ,
'~\[u\](.*?)\[/u\]~s' ,
'~\[s\](.*?)\[/s\]~s' ,
'~\[o\](.*?)\[/o\]~s' ,
'~\[centre\](.*?)\[/centre\]~s' ,
'~\[img width=(.*?) height=(.*?)\](https?://.*?\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]~s' ,
'~\[img height=(.*?) width=(.*?)\](https?://.*?\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]~s' ,
'~\[img width=(.*?)\](https?://.*?\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]~s' ,
'~\[img height=(.*?)\](https?://.*?\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]~s' ,
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]~s' ,
'~\[yt\](.*?)\[/yt\]~s' ,
'~\[link=((?:ftp|https?)://.*?)\](.*?)\[/link\]~s' ,
'~\[sound\](https?://.*?\.(?:mp3))\[/sound\]~s' ,
'~\[size=(.*?)\](.*?)\[/size\]~s' ,
'~\[colour=(.*?)\](.*?)\[/colour\]~s' ,
'~\[quote="(.*?)" id="(.*?)"](.*?)\[/quote]~s' ,
'~\[quote="(.*?)"](.*?)\[/quote]~s' ,
'~\[quote](.*?)\[/quote]~s' ,
'~\[code](.*?)\[/code]~s' ,
'~\[spoiler=(.*?)](.*?)\[/spoiler]~s' ,
'~\[spoiler](.*?)\[/spoiler]~s' ,
'~\[rtl](.*?)\[/rtl]~s' ,
'~\[gcn](.*?)\[/gcn]~s' ,
'~\[miiverse](.*?)\[/miiverse]~s' ,
'~\[smb](.*?)\[/smb]~s' ,
'~\[video](.*?)\[/video]~s' ,
);
$replace = array (
'<b>$1</b>' ,
'<i>$1</i>' ,
'<span style="text-decoration:underline;">$1</span>' ,
'<span style="text-decoration:line-through;">$1</span>' ,
'<span style="text-decoration:overline;">$1</span>' ,
'<span align="center">$1</span>' ,
'<img src="$3" alt="" width="$1px" height="$2px" border="0" />' ,
'<img src="$3" alt="" width="$2px" height="$1px" border="0" />' ,
'<img src="$2" alt="" width="$1px" border="0" />' ,
'<img src="$2" alt="" height="$1px" border="0" />' ,
'<img src="$1" alt="" class="img-responsive" border="0" />' ,
'<div class="embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" src="https://www.youtube.com/embed/$1" allowfullscreen></iframe></div>' ,
'<a href="$1" target="_blank">$2</a>' ,
'<audio controls><source src="$1" type="audio/mpeg">Your browser does not support the audio tag.</audio>' ,
'<span style="font-size:$1px;">$2</span>' ,
'<span style="color:$1;">$2</span>' ,
'<blockquote><span class=\'quotedby\'><a href=forum.php?page=thread&tid=$threadid&pid=$2#$2><i>Posted by \'$1\'</i></a></span><hr>$3<hr></blockquote>' ,
'<blockquote><span class=\'quotedby\'><i>Posted by \'$1\'</i></span><hr>$2<hr></blockquote>' ,
'<blockquote><hr>$1<hr></blockquote>' ,
'<table cellspacing="0" style="width: 90%; min-width: 90%;"><tr><td class="b n3"><code class="codeblock" style="font-size: 9pt;"><xmp>$1</xmp></code></tr></table><br />' ,
'<div class="spoiler"><button onclick="var s=this.parentNode.getElementsByClassName(\'spoilercontents\')[0].style;s.display=(s.display==\'none\')?\'\':\'none\';">$1</button><br /><div class="spoilercontents" style="display:none;">$2</div></div>' ,
'<div class="spoiler"><button onclick="var s=this.parentNode.getElementsByClassName(\'spoilercontents\')[0].style;s.display=(s.display==\'none\')?\'\':\'none\';">Spoiler</button><br /><div class="spoilercontents" style="display:none;">$1</div></div>' ,
'<div dir="rtl">$1</div>' ,
'<span class="GameCube">$1</span>' ,
'<span class="MiiverseSymbols">$1</span>' ,
'<span class="MarioBros">$1</span>' ,
'<video width="600" controls><source src="$1" type="video/mp4">Your browser does not support MP4, or HTML5 videos.</video>' ,
);
return preg_replace ( $find , $replace , $text );
}
public function packageMessage ( $string ) {
$string = $this -> stripBR ( $string );
$string = $this -> autoLink ( $string );
$string = $this -> getBBCode ( $string );
return $string ;
}
2018-04-12 20:33:31 +09:00
public function browseTopicPosts ( $tp , $id , $from , $to , Request $request ) { // /api/rpc/board/browse/browsetopicposts/tp/id/from/to
2018-02-27 01:12:06 +09:00
// Load group colours.
$ucol = $this -> objUser -> getGroupColours ();
// All the user posts' user IDs.
2018-04-12 20:33:31 +09:00
if ( $tp == 't' ) $uid = $this -> getUserPosts ( $id , $from , $to , $request );
2018-04-13 17:22:59 +09:00
else if ( $tp == 'p' ) $uid = $this -> getUserPost ( $id , $request );
2018-04-19 20:22:23 +09:00
else $uid = $this -> getPostsOfUser ( $id , $from , $to , $request );
2018-02-27 01:12:06 +09:00
$udat = array ();
$key = 0 ;
foreach ( $uid as $i ) {
$showName = '' ;
$showCol = '' ;
$showGroupName = '' ;
// Display name or username?
if ( ! empty ( $i -> display_name )) {
$showName = $i -> display_name ;
}
else {
$showName = $i -> username ;
}
// Custom name styling or default?
if ( ! empty ( $i -> name_style )) {
$showCol = $i -> name_style ;
}
else {
foreach ( $ucol as $j ) {
if ( $j -> id == $i -> perm_id ) {
if ( $i -> gender == 1 ) $showCol = $j -> colour_m ;
else if ( $i -> gender == 2 ) $showCol = $j -> colour_f ;
else $showCol = $j -> colour_u ;
}
}
}
// Group names.
$gname = $this -> objUser -> getGroupName ( $i -> user_id );
$showGroupName = $gname [ 0 ] -> name ;
2018-02-27 22:57:47 +09:00
$mess = $this -> packageMessage ( $i -> message );
2018-03-13 18:52:49 +09:00
setlocale ( LC_ALL , 'ja_JP.utf8' );
2018-02-27 01:12:06 +09:00
array_push ( $udat , [
'key' => $key ,
'id' => $i -> id ,
'tid' => $i -> top_id ,
'uid' => $i -> user_id ,
2018-03-13 18:52:49 +09:00
'post_date' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , date ( $i -> post_date )),
2018-02-27 22:57:47 +09:00
'message' => $mess ,
2018-02-27 01:12:06 +09:00
'delete' => $i -> delete ,
'delreason' => $i -> delreason ,
2018-03-13 18:52:49 +09:00
'lastedit' => strftime ( '%Y/%m/%d(%a) %H:%M:%S %Z' , date ( $i -> lastedit )),
2018-02-27 01:12:06 +09:00
'lasteditUnix' => $i -> lastedit ,
'ipaddress' => $i -> ipaddress ,
'nolayout' => $i -> nolayout ,
'postcount' => $i -> postcount ,
'total_posts' => $i -> total_posts ,
'header' => $i -> header ,
'footer' => $i -> footer ,
'member_title' => $i -> member_title ,
'gender' => $i -> gender ,
'avatar' => $i -> avatar ,
'showcol' => $showCol ,
'showname' => $showName ,
'showgroup' => $showGroupName ,
'country' => $i -> country ,
]);
$key ++ ;
}
// Assign group names.
return $udat ;
}
2018-04-12 20:33:31 +09:00
public function browsePermissions ( $uid , Request $request ) { // /api/rpc/board/browse/browsepermissions/uid
2018-02-27 01:12:06 +09:00
// Get user ID.
2018-04-12 20:33:31 +09:00
$perm = $this -> objUser -> getUser ( $uid , $request );
2018-02-27 01:12:06 +09:00
// Does the user ID exist? Grand the appropriate rights. Otherwise, use guest.
if ( $uid != 0 ) {
// Forum permissions.
$grouppermfor = $this -> objPermission -> getPermissionGroup ( 'for' , $perm [ 0 ] -> perm_id );
$userpermfor = $this -> objPermission -> getPermissionUser ( 'for' , $uid );
// User permissions.
$grouppermusr = $this -> objPermission -> getPermissionGroup ( 'usr' , $perm [ 0 ] -> perm_id );
$userpermusr = $this -> objPermission -> getPermissionUser ( 'usr' , $uid );
// Now provide an array of user overwritten permissions if it exists. Otherwise, give its group permissions.
$forarr = array ();
$usrarr = array ();
if ( ! empty ( $userpermfor [ 0 ])) {
$forarr = ( array ) $userpermfor [ 0 ];
}
else {
$forarr = ( array ) $grouppermfor [ 0 ];
}
if ( ! empty ( $userpermusr [ 0 ])) {
$usrarr = ( array ) $userpermusr [ 0 ];
}
else {
$usrarr = ( array ) $grouppermusr [ 0 ];
}
$merge = array ();
$merge = array_merge ( $forarr , $usrarr );
return $merge ;
}
else {
// Forum permissions.
$grouppermfor = $this -> objPermission -> getPermissionGroup ( 'for' , 6 );
// User permissions.
$grouppermusr = $this -> objPermission -> getPermissionGroup ( 'usr' , 6 );
// Since guests don't have user overwritten permissions, simply return the group permissions.
$merge = array ();
$merge = array_merge (( array ) $grouppermfor [ 0 ], ( array ) $grouppermusr [ 0 ]);
return $merge ;
}
}
2018-02-06 06:08:19 +09:00
}