@ -0,0 +1,17 @@ | |||||
<?php | |||||
//uForum config | |||||
//don't modifiy this file! | |||||
ini_set('display_errors', '1'); | |||||
define('DB_HOST','localhost'); | |||||
define('DB_USER','root'); | |||||
define('DB_PASSWD',''); | |||||
define('DB_NAME','uf2'); | |||||
define('DB_PREFIX','uf_'); | |||||
define('VERSION','2.0.0'); | |||||
define('UF_INSTALLED',true); | |||||
define('COOKIE_DOMAIN', ''); | |||||
define('COOKIE_PATH', '/uf2'); | |||||
?> |
@ -0,0 +1,34 @@ | |||||
<?php | |||||
abstract class AskModel | |||||
{ | |||||
protected $models = array(); | |||||
function loadModel($model) | |||||
{ | |||||
if (file_exists('./inc/models/'.$model.'.class.php') && !array_key_exists($model, $this->models)) //realizowany singleton | |||||
{ | |||||
require_once('./inc/models/'.$model.'.class.php'); | |||||
$this->models[$model] = new $model($this->db); | |||||
} | |||||
else | |||||
{ | |||||
throw new Exception('Could not load selected model: '.$model); | |||||
} | |||||
} | |||||
function getModel($model) | |||||
{ | |||||
if (array_key_exists($model, $this->models)) | |||||
return $this->models[$model]; | |||||
else | |||||
throw new Exception('Could not get selected model: '.$model); | |||||
} | |||||
function putExistingModel($model, &$model_ptr) | |||||
{ | |||||
$this->models[$model] = $model_ptr; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,111 @@ | |||||
<?php | |||||
function BBCode($content) | |||||
{ | |||||
$pattern = array( | |||||
'/\:\)/s', # :) | |||||
'/\:\|/s', # :| | |||||
'/\:\(/s', # :( | |||||
'/\;\(/s', # ;( | |||||
'/\:D/is', # :D | |||||
'/\:o/is', # :o | |||||
'/\;\)/s', # ;) | |||||
'/\:p/is', # :p | |||||
'/\:curve:/is', # :curve: | |||||
'/\:!:/is', # :!: | |||||
'/\:lol\:/is', # :lol: | |||||
'/\:evil\:/is', # :evil: | |||||
'/\:mad\:/is', # :mad: | |||||
'/\:roll\:/is', # :roll: | |||||
'/\:cool\:/is', # :cool: | |||||
'/\:redface\:/is', # :redface: | |||||
'/\[b\](.*?)\[\/b\]/is', # [b] | |||||
'/\[i\](.*?)\[\/i\]/is', # [i] | |||||
'/\[u\](.*?)\[\/u\]/is', # [u] | |||||
'/\[s\](.*?)\[\/s\]/is', # [s] | |||||
'/\[center\](.*?)\[\/center\]/is', # [center] | |||||
'/\[url=((http:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)\](.*?)\[\/url\]/is', # [url=] | |||||
'/\[url]((http:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)\[\/url\]/is', # [url] | |||||
'/\[color=#?([A-F0-9]{3}|[A-F0-9]{6})\](.*?)\[\/color\]/is', # [color] (hex) | |||||
'/\[color=?([A-Z]+)\](.*?)\[\/color\]/is', # [color] (text) | |||||
'/\[list\](.*?)\[\/list\]/is', # [list] | |||||
'/\[\*\](.*?)(\n|\r\n)/is', # [*] | |||||
'/\[quote\](.*?)\[\/quote\]/is', # [quote] | |||||
'/\[quote=(.+?)\](.*?)\[\/quote\]/is', # [quote=] | |||||
'/\[code\](.*?)\[\/code\]/is', # [code] | |||||
'/\\n/', # \n | |||||
'/\\r/', # \r | |||||
'/(^|[^"])((http:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', | |||||
); | |||||
$replace = array( | |||||
'<img src="images/smiles/smile.gif" alt=":)">', # :) | |||||
'<img src="images/smiles/neutral.gif" alt=":|">', # :| | |||||
'<img src="images/smiles/sad.gif" alt=":(" >', # :( | |||||
'<img src="images/smiles/cry.png" alt=":(" >', # ;( | |||||
'<img src="images/smiles/big_smile.gif" alt=":D" >', # :D | |||||
'<img src="images/smiles/yikes.gif" alt=":o" >', # :o | |||||
'<img src="images/smiles/wink.gif" alt=";)" >', # ;) | |||||
'<img src="images/smiles/tongue.gif" alt=":p" >', # :p | |||||
'<img src="images/smiles/curve.gif" alt=":/" >', # :curve: | |||||
'<img src="images/smiles/exclaim.gif" alt=":!:" >', # :!: | |||||
'<img src="images/smiles/lol.gif" alt=":lol:" >', # :lol: | |||||
'<img src="images/smiles/evil.gif" alt=":evil:" >', # :evil: | |||||
'<img src="images/smiles/mad.gif" alt=":mad:" >', # :mad: | |||||
'<img src="images/smiles/roll.gif" alt=":roll:" >', # :roll: | |||||
'<img src="images/smiles/cool.gif" alt=":cool:" >', # :cool: | |||||
'<img src="images/smiles/redface.gif" alt=":redface:" >', # :redface: | |||||
'<span style="font-weight: bold;">\1</span>', # [b] | |||||
'<span style="font-style: italic;">\1</i>', # [i] | |||||
'<span style="text-decoration: underline;">\1</span>', # [u] | |||||
'<span style="text-decoration: line-through;">\1</span>', # [s] | |||||
'<p style="text-align: center;">\1</p>', # [center] | |||||
'<a href="\1">\3</a>', # [url=] | |||||
'<a href="\1">\1</a>', # [url] | |||||
'<span style="color: #\1;">\2</span>', # [color] (hex) | |||||
'<span style="color: \1;">\2</span>', # [color] (text) | |||||
'<ul>\1</ul>', # [list] | |||||
'<li>\1</li>', # [*] | |||||
'<div class="qpost"><span style="font-weight: bold">Quote:</span><br>\1</div>', # [quote] | |||||
'<div class="qpost"><span style="font-weight: bold">\1 wrote:</span><br>\2</div>', # [quote=] | |||||
'<div class="cpost"><span style="font-weight: bold">Code:</span><br>\1</div>', # [code] | |||||
'<br>', # \n | |||||
'', # \r | |||||
'\\1<a href="\\2">\\2</a>', | |||||
); | |||||
return preg_replace($pattern, $replace, $content); | |||||
} | |||||
function StripBBCode($content) | |||||
{ | |||||
$pattern = array( | |||||
'/\\n/', # \n | |||||
'/\\r/', # \r | |||||
'/\[b\](.*?)\[\/b\]/is', # [b] | |||||
'/\[i\](.*?)\[\/i\]/is', # [i] | |||||
'/\[u\](.*?)\[\/u\]/is', # [u] | |||||
'/\[s\](.*?)\[\/s\]/is', # [s] | |||||
'/\[url=(.*?)\](.*?)\[\/url\]/is', # [url=] | |||||
'/\[url](.*?)\[\/url\]/is', # [url] | |||||
'/\[img](.*?)\[\/img\]/is', # [img] | |||||
'/\[color=(.*?)\](.*?)\[\/color\]/is', # [color] | |||||
); | |||||
$replace = array( | |||||
'', # \n | |||||
'', # \r | |||||
'\1', # [b] | |||||
'\1', # [i] | |||||
'\1', # [u] | |||||
'\1', # [s] | |||||
'\2', # [url=] | |||||
'\1', # [url] | |||||
'', # [img] | |||||
'\2', # [color] | |||||
); | |||||
return preg_replace($pattern, $replace, $content); | |||||
} | |||||
?> |
@ -0,0 +1,35 @@ | |||||
<?php | |||||
//tables | |||||
define('BANLIST_TABLE',DB_PREFIX.'banlist'); | |||||
define('CATS_TABLE',DB_PREFIX.'categories'); | |||||
define('CONFIG_TABLE',DB_PREFIX.'config'); | |||||
define('FORUMS_TABLE',DB_PREFIX.'forums'); | |||||
define('POSTS_TABLE',DB_PREFIX.'posts'); | |||||
define('SESSIONS_TABLE',DB_PREFIX.'sessions'); | |||||
define('USERS_TABLE',DB_PREFIX.'users'); | |||||
define('USERS_INFO_TABLE',DB_PREFIX.'users_information'); | |||||
define('TOPICS_TABLE',DB_PREFIX.'topics'); | |||||
//views | |||||
define('FORUMS_VIEW', DB_PREFIX.'view_forums'); | |||||
define('TOPICS_VIEW', DB_PREFIX.'view_topics'); | |||||
define('POSTS_VIEW', DB_PREFIX.'view_posts'); | |||||
define('LOGGED_USERS_VIEW', DB_PREFIX.'view_logged_users'); | |||||
define('USERS_PC_VIEW', DB_PREFIX.'view_users_post_count'); | |||||
define('TOPICS_PC_VIEW', DB_PREFIX.'view_topics_post_count'); | |||||
define('COOKIE_NAME', 'uf2_auth'); | |||||
define('RANK_USER', 0); | |||||
define('RANK_MOD', 1); | |||||
define('RANK_ADMIN', 2); | |||||
define('POSTING_REPLY', 'reply'); | |||||
define('POSTING_QUOTE', 'quote'); | |||||
define('POSTING_EDIT', 'edit'); | |||||
define('POSTING_NEWTOPIC', 'new_topic'); | |||||
define('POSTING_EDITTOPIC', 'edit_topic'); | |||||
$allowed_avatars = array('image/jpeg', 'image/gif', 'image/png'); | |||||
?> |
@ -0,0 +1,53 @@ | |||||
<?php | |||||
require_once('./inc/askModel.class.php'); | |||||
abstract class Controller extends AskModel { | |||||
protected $views = array(); | |||||
protected $db; | |||||
abstract public function loadDefault(); //domyślna metoda | |||||
public function __call($m, $arg) | |||||
{ | |||||
if(method_exists($this, $m)) | |||||
$this->$m($arg); | |||||
else | |||||
$this->forward('index.php'); | |||||
} | |||||
public function __construct(&$db) | |||||
{ | |||||
$this->db = $db; | |||||
} | |||||
public function forward($address) | |||||
{ | |||||
header('Location: ' . $address); | |||||
} | |||||
public function loadView($view) | |||||
{ | |||||
if (file_exists('./inc/views/'.$view.'.class.php') && !array_key_exists($view, $this->views)) | |||||
{ | |||||
require_once('./inc/views/'.$view.'.class.php'); | |||||
$this->views[$view] = new $view($this->db); | |||||
} | |||||
else | |||||
{ | |||||
throw new Exception('Could not load selected view: '.$view); | |||||
} | |||||
} | |||||
public function getView($view) | |||||
{ | |||||
if (array_key_exists($view, $this->views)) | |||||
return $this->views[$view]; | |||||
else | |||||
throw new Exception('Could not get selected view: '.$widok); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,605 @@ | |||||
<?php | |||||
require ('./inc/controller.class.php'); | |||||
class AdminController extends Controller | |||||
{ | |||||
public function loadDefault() | |||||
{ | |||||
$this->main(); | |||||
} | |||||
private function loadDependencies() // zależności (sesje itp) | |||||
{ | |||||
$this->loadModel('SessionModel'); //aktywacja sesji | |||||
$this->loadModel('ConfigModel'); //konfiguracja ogólna skryptu | |||||
$this->loadView('MainView'); | |||||
$this->getView('MainView')->putExistingModel('SessionModel', $this->getModel('SessionModel')); | |||||
$this->getView('MainView')->putExistingModel('ConfigModel', $this->getModel('ConfigModel')); | |||||
if ($_SERVER['REQUEST_SCHEME'] == 'http') | |||||
$this->forward('https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You are not logged.', 'index.php?mode=login', true); | |||||
$lockv = true; | |||||
} | |||||
if ($this->getModel('SessionModel')->getRank() == RANK_USER && !isset($lockv)) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You are not admin', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
if (!isset($lockv)) | |||||
return true; | |||||
else | |||||
return false; | |||||
} | |||||
public function main() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->getView('MainView')->admin_main(); | |||||
} | |||||
} | |||||
public function eduser() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->loadModel('UsersModel'); | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($_GET['id'], true); | |||||
if ($user_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('User does not exist!', 'index.php?mode=admin&submode=users'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$msg = ''; | |||||
if (isset($_POST['nick'], $_POST['passwd'], $_POST['passwd_confirm'], $_POST['email'])) | |||||
{ | |||||
//secure pools | |||||
$_POST['nick'] = trim(strip_tags($this->db->real_escape_string($_POST['nick']))); | |||||
$_POST['passwd'] = trim(strip_tags($_POST['passwd'])); | |||||
$_POST['passwd_confirm'] = trim(strip_tags($_POST['passwd_confirm'])); | |||||
$_POST['email'] = trim(strip_tags($this->db->real_escape_string($_POST['email']))); | |||||
$_POST['location'] = trim(strip_tags($this->db->real_escape_string($_POST['location']))); | |||||
$_POST['signature'] = trim(strip_tags($this->db->real_escape_string($_POST['signature']))); | |||||
$_POST['user_rank'] = trim(strip_tags($this->db->real_escape_string($_POST['user_rank']))); | |||||
if ($_POST['passwd'] != '') | |||||
{ | |||||
if (strlen($_POST['passwd']) < 8) | |||||
$msg .= 'Password is too short (min 8 characters)<br>'; | |||||
if ($_POST['passwd'] != $_POST['passwd_confirm']) | |||||
$msg .= 'Password do not match!<br>'; | |||||
} | |||||
if ($_GET['id'] == $this->getModel('SessionModel')->getID() && $_POST['user_rank'] != RANK_ADMIN) | |||||
{ | |||||
$msg .= 'You cannot set rank for your profile<br>'; | |||||
$_POST['user_rank'] = RANK_ADMIN; | |||||
} | |||||
if ($this->getModel('UsersModel')->nickExists($_POST['nick']) == true && $_POST['nick'] != $user_info['nick']) | |||||
$msg .= 'Nick is in use. Type another one.<br>'; | |||||
if (strlen($_POST['nick']) < 3) | |||||
$msg .= 'Nick is too short (min 3 characters)<br>'; | |||||
if ($_POST['user_rank'] > RANK_ADMIN || $_POST['user_rank'] < RANK_USER) | |||||
$msg .= 'Rank is not valid!<br>'; | |||||
//check if avatar is uploaded | |||||
if ($_FILES['avatar']['tmp_name'] != null) | |||||
{ | |||||
global $allowed_avatars; | |||||
$image_size = @getimagesize($_FILES['avatar']['tmp_name']); | |||||
if ($image_size == null) | |||||
$msg .= 'Type of uploaded file are not allowed.<br>'; | |||||
else | |||||
if (!in_array($image_size['mime'], $allowed_avatars)) | |||||
$msg .= 'Type of uploaded avatar is not supported.<br>'; | |||||
else | |||||
if ($image_size[0] > 120 || $image_size[1] > 150) | |||||
$msg .= 'Uploaded avatar is too big (maximum 120x150 px).<br>'; | |||||
} | |||||
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) | |||||
$msg .= 'Email is incorrect<br>'; | |||||
if ($msg == '') | |||||
{ | |||||
if ($_FILES['avatar']['tmp_name'] != null && !isset($_POST['delete_avatar'])) //change an avatar | |||||
{ | |||||
if ($user_info['avatar'] != '') | |||||
unlink('./'.$user_info['avatar']); | |||||
$ext = pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION); | |||||
$av = 'images/avatars/'.$this->getModel('SessionModel')->getID().'.'.$ext; | |||||
move_uploaded_file($_FILES['avatar']['tmp_name'], './'.$av); | |||||
} | |||||
else | |||||
if (isset($_POST['delete_avatar'])) | |||||
{ | |||||
unlink('./'.$user_info['avatar']); | |||||
$av = ''; | |||||
} | |||||
else | |||||
$av = $user_info['avatar']; //if new avatar is not set | |||||
if ($_POST['passwd'] != '') | |||||
$this->getModel('UsersModel')->changeUserPassword($_GET['id'], sha1($_POST['passwd'])); | |||||
$this->getModel('UsersModel')->changeUserRank($_GET['id'], $_POST['user_rank']); | |||||
$this->getModel('UsersModel')->updateUserProfile($_GET['id'], $_POST['nick'], $_POST['email'], $_POST['location'], $_POST['signature'], $av); | |||||
$this->getView('MainView')->forum_message('User profile has changed.', 'index.php?mode=admin&submode=users'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
$_POST['nick'] = (isset($_POST['nick'])) ? $_POST['nick'] : $user_info['nick']; | |||||
$_POST['email'] = (isset($_POST['email'])) ? $_POST['email'] : $user_info['email']; | |||||
$_POST['location'] = (isset($_POST['location'])) ? $_POST['location'] : $user_info['location']; | |||||
$_POST['signature'] = (isset($_POST['signature'])) ? $_POST['signature'] : $user_info['signature']; | |||||
$_POST['user_rank'] = (isset($_POST['user_rank'])) ? $_POST['user_rank'] : $user_info['rank']; | |||||
$this->getView('MainView')->putExistingModel('UsersModel', $this->getModel('UsersModel')); | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->edprofile_form($msg, true); | |||||
} | |||||
} | |||||
} | |||||
public function users() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
if (isset($_GET['rank'])) | |||||
{ | |||||
switch ($_GET['rank']) | |||||
{ | |||||
case 'admin': | |||||
$_GET['rank'] = RANK_ADMIN; | |||||
break; | |||||
case 'mod': | |||||
$_GET['rank'] = RANK_MOD; | |||||
break; | |||||
case 'user': | |||||
$_GET['rank'] = RANK_USER; | |||||
break; | |||||
default: | |||||
$_GET['rank'] = ''; | |||||
break; | |||||
} | |||||
} | |||||
else | |||||
$_GET['rank'] = ''; | |||||
$_POST['sort_type'] = (isset($_POST['sort_type'])) ? $this->db->real_escape_string($_POST['sort_type']) : 'regdate'; | |||||
$allowed_sorting = array('regdate', 'lastvisit', 'nick', 'post_count'); | |||||
if (!in_array($_POST['sort_type'], $allowed_sorting)) | |||||
$_POST['sort_type'] = ''; | |||||
$_POST['sort_desc'] = (isset($_POST['sort_desc'])) ? 'DESC' : 'ASC'; | |||||
$this->getView('MainView')->admin_userlist(); | |||||
} | |||||
} | |||||
public function deluser() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->loadModel('UsersModel'); | |||||
$this->getView('MainView')->putExistingModel('UsersModel', $this->getModel('UsersModel')); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($_GET['id']); | |||||
if ($user_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('User does not exist!', 'index.php?mode=admin&submode=users'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
if ($_GET['id'] == $this->getModel('SessionModel')->getID()) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You cannot delete own profile!', 'index.php?mode=admin&submode=users'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
if (isset($_POST['confirmed']) && !isset($lockv)) | |||||
{ | |||||
if (!isset($_POST['rejected'])) | |||||
{ | |||||
$this->getModel('UsersModel')->deleteUser($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Profile deleted. Redirecting to users list...', 'index.php?mode=admin&submode=users'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$this->forward('index.php?mode=admin&submode=users'); | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->confirm_action('Do you want delete user <span style="font-weight: bold">'.$user_info['nick'].'</span>? This operation cannot undone.'); | |||||
} | |||||
} | |||||
public function config() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$msg = ''; | |||||
if (isset($_POST['forum_name'], $_POST['forum_desc'])) | |||||
{ | |||||
$_POST['forum_name'] = trim(htmlspecialchars($this->db->real_escape_string($_POST['forum_name']))); | |||||
$_POST['forum_desc'] = trim(htmlspecialchars($_POST['forum_desc'])); | |||||
if (strlen($_POST['forum_name']) < 3) | |||||
{ | |||||
$msg .= 'Forum name is too short (min 3 characters)!<br>'; | |||||
} | |||||
if (strlen($_POST['forum_name']) > 30) | |||||
{ | |||||
$msg .= 'Forum name is too long (max 30 characters)!<br>'; | |||||
} | |||||
if (strlen($_POST['forum_desc']) > 50) | |||||
{ | |||||
$msg .= 'Forum description is too long (max 50 characters)!<br>'; | |||||
} | |||||
if ($msg == '') | |||||
{ | |||||
$what = ''; | |||||
if ($_POST['forum_name'] != $this->getModel('ConfigModel')->getConf('forum_name')) | |||||
$this->getModel('ConfigModel')->updateConf('forum_name', $_POST['forum_name']); | |||||
if ($_POST['forum_desc'] != $this->getModel('ConfigModel')->getConf('forum_desc')) | |||||
$this->getModel('ConfigModel')->updateConf('forum_desc', $_POST['forum_desc']); | |||||
$this->getView('MainView')->forum_message('Forum configuration updated. Redirecting...', 'index.php?mode=admin&submode=config'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
$_POST['forum_name'] = (isset($_POST['forum_name'])) ? $_POST['forum_name'] : $this->getModel('ConfigModel')->getConf('forum_name'); | |||||
$_POST['forum_desc'] = (isset($_POST['forum_desc'])) ? $_POST['forum_desc'] : $this->getModel('ConfigModel')->getConf('forum_desc'); | |||||
if (!isset($lockv)) | |||||
{ | |||||
$this->getView('MainView')->admin_config($msg); | |||||
} | |||||
} | |||||
} | |||||
public function forums() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->getView('MainView')->admin_forums(); | |||||
} | |||||
} | |||||
public function addcat() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->modify_cat('add'); | |||||
} | |||||
} | |||||
public function edcat() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->modify_cat('edit'); | |||||
} | |||||
} | |||||
public function addforum() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->modify_forum('add'); | |||||
} | |||||
} | |||||
public function edforum() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->modify_forum('edit'); | |||||
} | |||||
} | |||||
public function delforum() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->loadModel('ForumsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$forum_info = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
if ($forum_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum does not exist!', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
if (isset($_POST['confirmed']) && !isset($lockv)) | |||||
{ | |||||
if (!isset($_POST['rejected'])) | |||||
{ | |||||
$this->getModel('ForumsModel')->deleteForum($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Forum deleted. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
$this->forward('index.php?mode=admin&submode=forums'); | |||||
} | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->confirm_action('Do you REALLY want delete forum <span style="font-weight: bold">'.$forum_info['name'].'</span> with ALL CONTENT? <span style="text-decoration: underline">This operation cannot undone!</span>'); | |||||
} | |||||
} | |||||
public function delcat() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->loadModel('ForumsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$cat_info = $this->getModel('ForumsModel')->getCat($_GET['id']); | |||||
if ($cat_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Category does not exist!', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
if (isset($_POST['confirmed']) && !isset($lockv)) | |||||
{ | |||||
if (!isset($_POST['rejected'])) | |||||
{ | |||||
$this->getModel('ForumsModel')->deleteCat($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Category deleted. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
$this->forward('index.php?mode=admin&submode=forums'); | |||||
} | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->confirm_action('Do you REALLY want delete category <span style="font-weight: bold">'.$cat_info['name'].'</span> with ALL FORUMS AND CONTENT? <span style="text-decoration: underline">This operation cannot undone!</span>'); | |||||
} | |||||
} | |||||
private function modify_cat($m) | |||||
{ | |||||
$msg = ''; | |||||
$this->loadModel('ForumsModel'); | |||||
if ($m == 'edit') | |||||
{ | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$cat_info = $this->getModel('ForumsModel')->getCat($_GET['id']); | |||||
if ($cat_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Category does not exist!', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
if (isset($_POST['name']) && !isset($lockv)) | |||||
{ | |||||
$_POST['name'] = trim(htmlspecialchars($this->db->real_escape_string($_POST['name']))); | |||||
if (strlen($_POST['name']) < 3) | |||||
$msg .= 'Category name is too short (min 3 characters)!<br>'; | |||||
if ($msg == '') | |||||
{ | |||||
if ($m == 'add') | |||||
{ | |||||
$this->getModel('ForumsModel')->addCat($_POST['name']); | |||||
$this->getView('MainView')->forum_message('Category added. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$this->getModel('ForumsModel')->changeCat($_GET['id'], $_POST['name']); | |||||
$this->getView('MainView')->forum_message('Category updated. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
{ | |||||
if ($m == 'add') | |||||
$_POST['name'] = (isset($_POST['name'])) ? $_POST['name'] : ''; | |||||
else | |||||
$_POST['name'] = (isset($_POST['name'])) ? $_POST['name'] : $cat_info['name']; | |||||
$this->getView('MainView')->putExistingModel('ForumsModel', $this->getModel('ForumsModel')); | |||||
$this->getView('MainView')->admin_cat_form($msg, $m); | |||||
} | |||||
} | |||||
private function modify_forum($m) | |||||
{ | |||||
$msg = ''; | |||||
$this->loadModel('ForumsModel'); | |||||
if ($m == 'edit') | |||||
{ | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$forum_info = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
if ($forum_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum does not exist!', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
if (isset($_POST['name']) && !isset($lockv)) | |||||
{ | |||||
$_POST['name'] = trim(htmlspecialchars($this->db->real_escape_string($_POST['name']))); | |||||
$_POST['desc'] = trim(htmlspecialchars($this->db->real_escape_string($_POST['desc']))); | |||||
$_POST['category_id'] = trim(strip_tags($this->db->real_escape_string($_POST['category_id']))); | |||||
$_POST['locked'] = trim(strip_tags($this->db->real_escape_string($_POST['locked']))); | |||||
$_POST['locked'] = ($_POST['locked'] == true) ? true : false; | |||||
if (strlen($_POST['name']) < 3) | |||||
$msg .= 'Forum name is too short (min 3 characters)!<br>'; | |||||
$c = $this->getModel('ForumsModel')->getCat($_POST['category_id']); | |||||
if ($c == null) | |||||
$msg .= 'Category does not exist!<br>'; | |||||
if ($msg == '') | |||||
{ | |||||
if ($m == 'add') | |||||
{ | |||||
$this->getModel('ForumsModel')->addForum($_POST['name'], $_POST['desc'], $_POST['category_id'], $_POST['locked']); | |||||
$this->getView('MainView')->forum_message('Forum added. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$this->getModel('ForumsModel')->changeForum($_GET['id'], $_POST['name'], $_POST['desc'], $_POST['category_id'], $_POST['locked']); | |||||
$this->getView('MainView')->forum_message('Forum updated. Redirecting...', 'index.php?mode=admin&submode=forums'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
{ | |||||
if ($m == 'add') | |||||
{ | |||||
$_POST['name'] = (isset($_POST['name'])) ? $_POST['name'] : ''; | |||||
$_POST['desc'] = (isset($_POST['desc'])) ? $_POST['desc'] : ''; | |||||
$_POST['category_id'] = (isset($_POST['category_id'])) ? $_POST['category_id'] : ''; | |||||
$_POST['locked'] = (isset($_POST['locked'])) ? $_POST['locked'] : ''; | |||||
} | |||||
else | |||||
{ | |||||
$_POST['name'] = (isset($_POST['name'])) ? $_POST['name'] : $forum_info['name']; | |||||
$_POST['desc'] = (isset($_POST['desc'])) ? $_POST['desc'] : $forum_info['desc']; | |||||
$_POST['category_id'] = (isset($_POST['category_id'])) ? $_POST['category_id'] : $forum_info['category_id']; | |||||
$_POST['locked'] = (isset($_POST['locked'])) ? $_POST['locked'] : $forum_info['locked']; | |||||
} | |||||
$this->getView('MainView')->putExistingModel('ForumsModel', $this->getModel('ForumsModel')); | |||||
$this->getView('MainView')->admin_forum_form($msg, $m); | |||||
} | |||||
} | |||||
public function banlist() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
$this->getView('MainView')->admin_banlist(); | |||||
} | |||||
public function delban() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$this->loadModel('BansModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$ban_info = $this->getModel('BansModel')->getBan($_GET['id']); | |||||
if ($ban_info == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Ban does not exist!', 'index.php?mode=admin&submode=banlist'); | |||||
$lockv = true; | |||||
} | |||||
if (isset($_POST['confirmed']) && !isset($lockv)) | |||||
{ | |||||
if (!isset($_POST['rejected'])) | |||||
{ | |||||
$this->getModel('BansModel')->deleteBan($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Ban deleted. Redirecting...', 'index.php?mode=admin&submode=banlist'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
$this->forward('index.php?mode=admin&submode=banlist'); | |||||
} | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->confirm_action('Do you want delete ban for user <span style="font-weight: bold">'.$ban_info['nick'].'</span>?'); | |||||
} | |||||
} | |||||
public function addban() | |||||
{ | |||||
if ($this->loadDependencies()) | |||||
{ | |||||
$msg = ''; | |||||
$this->loadModel('BansModel'); | |||||
$this->loadModel('UsersModel'); | |||||
if (isset($_POST['user_id'], $_POST['reason'])) | |||||
{ | |||||
$_POST['user_id'] = trim(strip_tags($this->db->real_escape_string($_POST['user_id']))); | |||||
$_POST['reason'] = trim(strip_tags($this->db->real_escape_string($_POST['reason']))); | |||||
if ($_POST['user_id'] == $this->getModel('SessionModel')->getID()) | |||||
$msg .= 'You cannot ban your profile!<br>'; | |||||
if ($this->getModel('BansModel')->getUserBan($_POST['user_id']) != null) | |||||
$msg .= 'This user has already been banned!<br>'; | |||||
if ($this->getModel('UsersModel')->getUserInformation($_POST['user_id']) == null) | |||||
$msg .= 'User does not exist!<br>'; | |||||
if ($msg == '') | |||||
{ | |||||
$this->getModel('BansModel')->addBan($_POST['user_id'], $_POST['reason']); | |||||
$this->getView('MainView')->forum_message('Ban added. Redirecting...', 'index.php?mode=admin&submode=banlist'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
{ | |||||
$_POST['user_id'] = (isset($_POST['user_id'])) ? $_POST['user_id'] : ''; | |||||
$_POST['reason'] = (isset($_POST['reason'])) ? $_POST['reason'] : ''; | |||||
$this->getView('MainView')->admin_ban_form($msg); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,724 @@ | |||||
<?php | |||||
require ('./inc/controller.class.php'); | |||||
class MainController extends Controller | |||||
{ | |||||
public function loadDefault() | |||||
{ | |||||
$this->main(); | |||||
} | |||||
private function loadDependencies() // zależności (sesje itp) | |||||
{ | |||||
$this->loadModel('SessionModel'); //aktywacja sesji | |||||
$this->loadModel('ConfigModel'); //konfiguracja ogólna skryptu | |||||
$this->loadView('MainView'); | |||||
$this->getView('MainView')->putExistingModel('SessionModel', $this->getModel('SessionModel')); | |||||
$this->getView('MainView')->putExistingModel('ConfigModel', $this->getModel('ConfigModel')); | |||||
} | |||||
public function main() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->getView('MainView')->main(); | |||||
} | |||||
public function viewforum() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('ForumsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$f = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
if ($f == null) | |||||
$this->getView('MainView')->forum_message('Forum does not exist!', 'index.php'); | |||||
else | |||||
{ | |||||
$this->getView('MainView')->putExistingModel('ForumsModel', $this->getModel('ForumsModel')); | |||||
$this->getView('MainView')->viewforum(); | |||||
} | |||||
} | |||||
public function userlist() | |||||
{ | |||||
$this->loadDependencies(); | |||||
if (isset($_GET['rank'])) | |||||
{ | |||||
switch ($_GET['rank']) | |||||
{ | |||||
case 'admin': | |||||
$_GET['rank'] = RANK_ADMIN; | |||||
break; | |||||
case 'mod': | |||||
$_GET['rank'] = RANK_MOD; | |||||
break; | |||||
case 'user': | |||||
$_GET['rank'] = RANK_USER; | |||||
break; | |||||
default: | |||||
$_GET['rank'] = ''; | |||||
break; | |||||
} | |||||
} | |||||
else | |||||
$_GET['rank'] = ''; | |||||
$_POST['sort_type'] = (isset($_POST['sort_type'])) ? $this->db->real_escape_string($_POST['sort_type']) : 'regdate'; | |||||
$allowed_sorting = array('regdate', 'lastvisit', 'nick', 'post_count'); | |||||
if (!in_array($_POST['sort_type'], $allowed_sorting)) | |||||
$_POST['sort_type'] = ''; | |||||
$_POST['sort_desc'] = (isset($_POST['sort_desc'])) ? 'DESC' : 'ASC'; | |||||
$this->getView('MainView')->userlist(); | |||||
} | |||||
public function viewtopic() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('PostsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$t = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
if ($t == null) | |||||
$this->getView('MainView')->forum_message('Topic does not exist!', 'index.php'); | |||||
else | |||||
{ | |||||
$this->getView('MainView')->putExistingModel('PostsModel', $this->getModel('PostsModel')); | |||||
$this->getView('MainView')->viewtopic(); | |||||
} | |||||
} | |||||
public function newtopic() | |||||
{ | |||||
$this->posting(POSTING_NEWTOPIC); | |||||
} | |||||
public function reply() | |||||
{ | |||||
$this->posting(POSTING_REPLY); | |||||
} | |||||
public function editpost() | |||||
{ | |||||
$this->posting(POSTING_EDIT); | |||||
} | |||||
public function quote() | |||||
{ | |||||
$this->posting(POSTING_QUOTE); | |||||
} | |||||
public function moderate() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('PostsModel'); | |||||
$this->loadModel('ForumsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
$_GET['submode'] = (isset($_GET['submode'])) ? trim(strip_tags($this->db->real_escape_string($_GET['submode']))) : 0; | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You are not logged.', 'index.php?mode=login'); | |||||
$lockv = true; | |||||
} | |||||
if ($this->getModel('SessionModel')->getRank() == RANK_USER && !isset($lockv)) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Only mods have access to this menu', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
//sprawdź czy wątek/post istnieje | |||||
if (!isset($lockv)) | |||||
switch($_GET['submode']) | |||||
{ | |||||
case 'deletetopic': | |||||
case 'locktopic': | |||||
case 'movetopic': | |||||
$t = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
if ($t == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Topic does not exist!', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
break; | |||||
case 'deletepost': | |||||
$p = $this->getModel('PostsModel')->getPost($_GET['id']); | |||||
if ($p == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Post does not exist!', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$t = $this->getModel('PostsModel')->getTopic($p['topic_id']); | |||||
if ($t['post_count'] == 1) | |||||
{ | |||||
$this->getView('MainView')->forum_message('If topic has only one post, use <span style="font-weight: bold">delete topic</span> option.', 'index.php?mode=viewtopic&id='.$p['topic_id'], 3); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
break; | |||||
default: | |||||
$this->getView('MainView')->forum_message('Invalid mode', 'index.php'); | |||||
$lockv = true; | |||||
break; | |||||
} | |||||
//wysyłanie formularza | |||||
if (isset($_POST['confirmed']) && !isset($lockv)) | |||||
{ | |||||
if (!isset($_POST['rejected'])) | |||||
{ | |||||
switch($_GET['submode']) | |||||
{ | |||||
case 'deletepost': | |||||
$this->getModel('PostsModel')->deletePost($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Post deleted. Redirecting...', 'index.php?mode=viewtopic&id='.$p['topic_id']); | |||||
$lockv = true; | |||||
break; | |||||
case 'deletetopic': | |||||
$this->getModel('PostsModel')->deleteTopic($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Topic deleted. Redirecting...', 'index.php?mode=viewforum&id='.$t['forum_id']); | |||||
$lockv = true; | |||||
break; | |||||
case 'locktopic': | |||||
if ($t['topic_locked'] == false) | |||||
{ | |||||
$this->getModel('PostsModel')->lockTopic($_GET['id']); | |||||
$this->getView('MainView')->forum_message('Topic locked. Redirecting...', 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
} | |||||
else | |||||
{ | |||||
$this->getModel('PostsModel')->lockTopic($_GET['id'], false); | |||||
$this->getView('MainView')->forum_message('Topic unlocked. Redirecting...', 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
} | |||||
$lockv = true; | |||||
break; | |||||
case 'movetopic': | |||||
if ($this->getModel('ForumsModel')->getForum($_POST['forum_id']) == null) | |||||
$this->getView('MainView')->forum_message('Forum does not exist!', 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
else | |||||
{ | |||||
$this->getModel('PostsModel')->moveTopic($_GET['id'], $_POST['forum_id']); | |||||
$this->getView('MainView')->forum_message('Topic moved. Redirecting...', 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
} | |||||
$lockv = true; | |||||
break; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
switch ($_GET['submode']) | |||||
{ | |||||
case 'deletetopic': | |||||
case 'locktopic': | |||||
case 'movetopic': | |||||
$this->forward('index.php?mode=viewtopic&id='.$_GET['id']); | |||||
break; | |||||
case 'deletepost': | |||||
$this->forward('index.php?mode=viewtopic&id='.$p['topic_id']); | |||||
} | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
switch($_GET['submode']) | |||||
{ | |||||
case 'deletepost': | |||||
$this->getView('MainView')->confirm_action('Do you really want delete post <span style="font-weight: bold">#'.$_GET['id'].'</span>?'); | |||||
break; | |||||
case 'deletetopic': | |||||
$this->getView('MainView')->confirm_action('Do you really want delete topic <span style="font-weight: bold">#'.$_GET['id'].'</span> with all posts? This operation cannot undone.'); | |||||
break; | |||||
case 'locktopic': | |||||
if ($t['topic_locked'] == false) | |||||
$this->getView('MainView')->confirm_action('Do you want lock topic <span style="font-weight: bold">#'.$_GET['id'].'</span>?'); | |||||
else | |||||
$this->getView('MainView')->confirm_action('Do you want unlock topic <span style="font-weight: bold">#'.$_GET['id'].'</span>?'); | |||||
break; | |||||
case 'movetopic': | |||||
$this->getView('MainView')->putExistingModel('PostsModel', $this->getModel('PostsModel')); | |||||
$this->getView('MainView')->move_topic(); | |||||
break; | |||||
} | |||||
} | |||||
public function posting($type) | |||||
{ | |||||
$this->loadDependencies(); | |||||
$msg = ''; | |||||
$this->loadModel('PostsModel'); | |||||
$this->loadModel('ForumsModel'); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You are not logged.', 'index.php?mode=login'); | |||||
$lockv = true; | |||||
} | |||||
//SPRAWDZANIE CZY TEMAT/FORUM ISTNIEJE I CZY NIE ZABLOKOWANE | |||||
if (!isset($lockv)) | |||||
switch($type) | |||||
{ | |||||
case POSTING_NEWTOPIC: //sprawdzenie czy forum istnieje i czy nie zablokowane | |||||
$f = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
if ($f == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum does not exist!', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
if ($f['locked'] == true) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum is locked', 'index.php?mode=viewforum&id='.$_GET['id']); | |||||
$lockv = true; | |||||
} | |||||
break; | |||||
case POSTING_REPLY: //sprawdzenie czy temat istnieje | |||||
case POSTING_QUOTE: | |||||
$t = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
if ($t == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Topic does not exist!', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
if ($t['forum_locked'] == true && $this->getModel('SessionModel')->getRank() < RANK_MOD) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum is locked', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
if ($t['topic_locked'] == true && $this->getModel('SessionModel')->getRank() < RANK_MOD) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Topic is locked', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
if ($type == POSTING_QUOTE) | |||||
{ | |||||
$_GET['q'] = (isset($_GET['q'])) ? trim(strip_tags($this->db->real_escape_string($_GET['q']))) : 0; | |||||
$qp = $this->getModel('PostsModel')->getPost($_GET['q']); | |||||
if ($qp == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Invalid quoted post', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
if ($qp['topic_id'] != $_GET['id']) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Invalid quoted post', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
break; | |||||
case POSTING_EDIT: | |||||
$p = $this->getModel('PostsModel')->getPost($_GET['id']); | |||||
if ($p == null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Post does not exist!', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
{ | |||||
$t = $this->getModel('PostsModel')->getTopic($p['topic_id']); | |||||
if ($t['forum_locked'] == true && $this->getModel('SessionModel')->getRank() < RANK_MOD) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Forum is locked', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
if ($t['topic_locked'] == true && $this->getModel('SessionModel')->getRank() < RANK_MOD) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Topic is locked', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
//sprawdzić czy edycja tematu | |||||
// i ustawić opdowiednie parametry $type = POSTING_EDITTOPIC | |||||
$first = $this->getModel('PostsModel')->getFirstPost($t['topic_id']); | |||||
if ($first['post_id'] == $_GET['id']) | |||||
$type = POSTING_EDITTOPIC; | |||||
if ($p['user_id'] != $this->getModel('SessionModel')->getID() && $this->getModel('SessionModel')->getRank() < RANK_MOD) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You can edit only own posts', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
break; | |||||
} | |||||
//przesłanie formularza -------------------------------------------------------------------------------- | |||||
if (isset($_POST['post']) && !isset($_POST['preview']) && !isset($lockv)) | |||||
{ | |||||
$_POST['post'] = trim(htmlspecialchars($this->db->real_escape_string($_POST['post']))); | |||||
if ($type == POSTING_NEWTOPIC || $type == POSTING_EDITTOPIC) //walidacja tytułu tematu (add, edit) | |||||
{ | |||||
$_POST['topic'] = trim(strip_tags($this->db->real_escape_string($_POST['topic']))); | |||||
if (strlen($_POST['topic']) < 3) | |||||
$msg .= 'Topic title is too short (min 3 characters)<br>'; | |||||
} | |||||
if (strlen($_POST['post']) < 3) | |||||
$msg .= 'Post content is too short (min 3 characters)<br>'; | |||||
if ($msg == null) | |||||
{ | |||||
switch ($type) | |||||
{ | |||||
case POSTING_NEWTOPIC: //akcje dodania nowego tematu | |||||
$topic_id = $this->getModel('PostsModel')->addTopic($_POST['topic'], $_POST['post'], $_GET['id'], $this->getModel('SessionModel')->getID()); | |||||
if ($topic_id != null) | |||||
{ | |||||
$this->getView('MainView')->forum_message('Topic created, Redirecting...', 'index.php?mode=viewtopic&id='.$topic_id); | |||||
$lockv = true; | |||||
} | |||||
else | |||||
$msg .= 'Something went wrong, try again.'; | |||||
break; | |||||
case POSTING_EDITTOPIC: | |||||
case POSTING_EDIT: | |||||
$this->getModel('PostsModel')->changePost($_GET['id'], $_POST['post']); | |||||
if ($type == POSTING_EDITTOPIC) | |||||
$this->getModel('PostsModel')->changeTopic($t['topic_id'], $_POST['topic']); | |||||
$this->getView('MainView')->forum_message('Post edited. Redirecting to topic...', 'index.php?mode=viewtopic&id='.$t['topic_id']); | |||||
$lockv = true; | |||||
break; | |||||
case POSTING_QUOTE: | |||||
case POSTING_REPLY: | |||||
$this->getModel('PostsModel')->addPost($_GET['id'], $this->getModel('SessionModel')->getID(), $_POST['post']); | |||||
$this->getView('MainView')->forum_message('Reply saved. Redirecting to topic...', 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
$lockv = true; | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
if (!isset($lockv)) | |||||
{ | |||||
switch ($type) | |||||
{ | |||||
case POSTING_NEWTOPIC: | |||||
case POSTING_REPLY: | |||||
$_POST['post'] = (isset($_POST['post'])) ? $_POST['post'] : ''; | |||||
break; | |||||
case POSTING_EDITTOPIC: | |||||
$_POST['post'] = (isset($_POST['post'])) ? $_POST['post'] : $p['content']; | |||||
$_POST['topic'] = (isset($_POST['topic'])) ? $_POST['topic'] : $t['topic_title']; | |||||
break; | |||||
case POSTING_EDIT: | |||||
$_POST['post'] = (isset($_POST['post'])) ? $_POST['post'] : $p['content']; | |||||
break; | |||||
case POSTING_QUOTE: | |||||
$quote = ($qp['nick'] != null) ? '='.$qp['nick'] : ''; | |||||
$_POST['post'] = (isset($_POST['post'])) ? $_POST['post'] : '[quote'.$quote.']'.$qp['content'].'[/quote]'; | |||||
break; | |||||
} | |||||
if ($type == POSTING_NEWTOPIC) | |||||
$_POST['topic'] = (isset($_POST['topic'])) ? $_POST['topic'] : ''; //tylko edycja/tworzenie tematu | |||||
$this->getView('MainView')->putExistingModel('PostsModel', $this->getModel('PostsModel')); | |||||
$this->getView('MainView')->putExistingModel('ForumsModel', $this->getModel('ForumsModel')); | |||||
$this->getView('MainView')->posting_form($type, $msg); | |||||
} | |||||
} | |||||
public function myprofile() | |||||
{ | |||||
$this->loadDependencies(); | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
$this->forward('index.php'); | |||||
else | |||||
$this->forward('index.php?mode=viewprofile&id='.$this->getModel('SessionModel')->getID()); | |||||
} | |||||
public function viewprofile() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('UsersModel'); | |||||
$this->getView('MainView')->putExistingModel('UsersModel', $this->getModel('UsersModel')); | |||||
$_GET['id'] = (isset($_GET['id'])) ? trim(strip_tags($this->db->real_escape_string($_GET['id']))) : 0; | |||||
if ($this->getModel('UsersModel')->getUserInformation($_GET['id']) == null) | |||||
$this->getView('MainView')->forum_message('User does not exist!', 'index.php'); | |||||
else | |||||
{ | |||||
//$this->getView('MainView')->putExistingModel('PostsModel', $this->getModel('PostsModel')); | |||||
$this->getView('MainView')->viewprofile(); | |||||
} | |||||
} | |||||
public function editprofile() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('UsersModel'); | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($this->getModel('SessionModel')->getID(), true); | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
{ | |||||
$this->getView('MainView')->forum_message('You are not logged.', 'index.php?mode=login'); | |||||
} | |||||
else | |||||
{ | |||||
$msg = ''; | |||||
if (isset($_POST['nick'], $_POST['passwd'], $_POST['passwd_confirm'], $_POST['email'])) | |||||
{ | |||||
//secure pools | |||||
$_POST['nick'] = trim(strip_tags($this->db->real_escape_string($_POST['nick']))); | |||||
$_POST['passwd_old'] = trim(strip_tags($_POST['passwd_old'])); | |||||
$_POST['passwd'] = trim(strip_tags($_POST['passwd'])); | |||||
$_POST['passwd_confirm'] = trim(strip_tags($_POST['passwd_confirm'])); | |||||
$_POST['email'] = trim(strip_tags($this->db->real_escape_string($_POST['email']))); | |||||
$_POST['location'] = trim(strip_tags($this->db->real_escape_string($_POST['location']))); | |||||
$_POST['signature'] = trim(strip_tags($this->db->real_escape_string($_POST['signature']))); | |||||
if ($_POST['email'] != $user_info['email'] || $_POST['passwd'] != '') | |||||
{ | |||||
if (sha1($_POST['passwd_old']) != $user_info['password']) | |||||
$msg .= 'Old password is incorrect!<br>'; | |||||
} | |||||
if ($_POST['passwd'] != '') | |||||
{ | |||||
if (strlen($_POST['passwd']) < 8) | |||||
$msg .= 'Password is too short (min 8 characters)<br>'; | |||||
if ($_POST['passwd'] != $_POST['passwd_confirm']) | |||||
$msg .= 'Password do not match!<br>'; | |||||
} | |||||
//check if avatar is uploaded | |||||
if ($_FILES['avatar']['tmp_name'] != null) | |||||
{ | |||||
global $allowed_avatars; | |||||
$image_size = @getimagesize($_FILES['avatar']['tmp_name']); | |||||
if ($image_size == null) | |||||
$msg .= 'Type of uploaded file are not allowed.<br>'; | |||||
else | |||||
if (!in_array($image_size['mime'], $allowed_avatars)) | |||||
$msg .= 'Type of uploaded avatar is not supported.<br>'; | |||||
else | |||||
if ($image_size[0] > 120 || $image_size[1] > 150) | |||||
$msg .= 'Uploaded avatar is too big (maximum 120x150 px).<br>'; | |||||
} | |||||
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) | |||||
$msg .= 'Email is incorrect<br>'; | |||||
if ($msg == '') | |||||
{ | |||||
if ($_FILES['avatar']['tmp_name'] != null && !isset($_POST['delete_avatar'])) //change an avatar | |||||
{ | |||||
if ($user_info['avatar'] != '') | |||||
unlink('./'.$user_info['avatar']); | |||||
$ext = pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION); | |||||
$av = 'images/avatars/'.$this->getModel('SessionModel')->getID().'.'.$ext; | |||||
move_uploaded_file($_FILES['avatar']['tmp_name'], './'.$av); | |||||
} | |||||
else | |||||
if (isset($_POST['delete_avatar'])) | |||||
{ | |||||
unlink('./'.$user_info['avatar']); | |||||
$av = ''; | |||||
} | |||||
else | |||||
$av = $user_info['avatar']; //if new avatar is not set | |||||
if ($_POST['passwd'] != '') | |||||
$this->getModel('UsersModel')->changeUserPassword($this->getModel('SessionModel')->getID(), sha1($_POST['passwd'])); | |||||
$this->getModel('UsersModel')->updateUserProfile($this->getModel('SessionModel')->getID(), '', $_POST['email'], $_POST['location'], $_POST['signature'], $av); | |||||
$this->getView('MainView')->forum_message('Your profile has changed.', 'index.php?mode=viewprofile&id='.$this->getModel('SessionModel')->getID()); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
$_POST['nick'] = (isset($_POST['nick'])) ? $_POST['nick'] : $user_info['nick']; | |||||
$_POST['email'] = (isset($_POST['email'])) ? $_POST['email'] : $user_info['email']; | |||||
$_POST['location'] = (isset($_POST['location'])) ? $_POST['location'] : $user_info['location']; | |||||
$_POST['signature'] = (isset($_POST['signature'])) ? $_POST['signature'] : $user_info['signature']; | |||||
$this->getView('MainView')->putExistingModel('UsersModel', $this->getModel('UsersModel')); | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->edprofile_form($msg); | |||||
} | |||||
} | |||||
public function logout() | |||||
{ | |||||
$this->loadDependencies(); | |||||
if (!$this->getModel('SessionModel')->isLogged()) | |||||
$this->forward('index.php'); | |||||
$this->getModel('SessionModel')->deleteSession(); | |||||
$this->getView('MainView')->forum_message('You are logged out.', 'index.php'); | |||||
} | |||||
public function login() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('BansModel'); | |||||
if ($_SERVER['REQUEST_SCHEME'] == 'http') | |||||
$this->forward('https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); | |||||
if ($this->getModel('SessionModel')->isLogged()) | |||||
$this->forward('index.php'); | |||||
$msg = ''; | |||||
if (isset($_POST['nick'], $_POST['passwd'])) | |||||
{ | |||||
//secure pools | |||||
$_POST['nick'] = trim(strip_tags($this->db->real_escape_string($_POST['nick']))); | |||||
$_POST['passwd'] = sha1(trim(strip_tags($this->db->real_escape_string($_POST['passwd'])))); | |||||
$userinfo = $this->getModel('SessionModel')->tryGetUser($_POST['nick'], $_POST['passwd']); | |||||
if (count($userinfo) == 0) | |||||
$msg = 'Invalid username or password.'; | |||||
if ($msg == '') | |||||
{ | |||||
$ban_info = $this->getModel('BansModel')->getUserBan($userinfo['user_id']); | |||||
if ($ban_info == null) | |||||
{ | |||||
$this->getModel('SessionModel')->registerNewSession($userinfo['user_id']); | |||||
$this->getView('MainView')->forum_message('You are logged as: <span style="font-weight: bold">'.$userinfo['nick'].'</span>', 'index.php'); | |||||
} | |||||
else | |||||
{ | |||||
$reason = ($ban_info['reason'] != '') ? '<br>Reason: <span style="font-style: italic">'.$ban_info['reason'].'</span>' : ''; | |||||
$this->getView('MainView')->forum_message('You are banned!'.$reason); | |||||
} | |||||
$lockv = true; | |||||
} | |||||
} | |||||
$_POST['nick'] = (isset($_POST['nick'])) ? $_POST['nick'] : ''; | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->login_form($msg); | |||||
} | |||||
public function register() | |||||
{ | |||||
$this->loadDependencies(); | |||||
$this->loadModel('UsersModel'); | |||||
if ($this->getModel('SessionModel')->isLogged()) | |||||
$this->forward('index.php'); | |||||
if ($_SERVER['REQUEST_SCHEME'] == 'http') | |||||
$this->forward('https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); | |||||
$msg = ''; | |||||
if (isset($_POST['nick'], $_POST['passwd'], $_POST['passwd_confirm'], $_POST['email'])) | |||||
{ | |||||
//secure pools | |||||
$_POST['nick'] = trim(strip_tags($this->db->real_escape_string($_POST['nick']))); | |||||
$_POST['passwd'] = trim(strip_tags($_POST['passwd'])); | |||||
$_POST['passwd_confirm'] = trim(strip_tags($_POST['passwd_confirm'])); | |||||
$_POST['email'] = trim(strip_tags($this->db->real_escape_string($_POST['email']))); | |||||
if (strlen($_POST['nick']) < 3) | |||||
$msg .= 'Nick is too short (min 3 characters)<br>'; | |||||
if (strlen($_POST['passwd']) < 8) | |||||
$msg .= 'Password is too short (min 8 characters)<br>'; | |||||
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) | |||||
$msg .= 'Email is incorrect<br>'; | |||||
if ($this->getModel('UsersModel')->nickExists($_POST['nick']) == true) | |||||
$msg .= 'Nick is in use. Type another one.<br>'; | |||||
if ($_POST['passwd'] != $_POST['passwd_confirm']) | |||||
$msg .= 'Password do not match'; | |||||
if ($msg == '') | |||||
{ | |||||
$this->getModel('UsersModel')->createNewUser($_POST['nick'], sha1($_POST['passwd']), $_POST['email']); | |||||
$this->getView('MainView')->forum_message('Your account has created. Log in to write new posts.', 'index.php'); | |||||
$lockv = true; | |||||
} | |||||
} | |||||
$_POST['nick'] = (isset($_POST['nick'])) ? $_POST['nick'] : ''; | |||||
$_POST['email'] = (isset($_POST['email'])) ? $_POST['email'] : ''; | |||||
if (!isset($lockv)) | |||||
$this->getView('MainView')->register_form($msg); | |||||
} | |||||
public function checknick() | |||||
{ | |||||
$this->loadModel('UsersModel'); | |||||
if (!isset($_GET['nick'])) | |||||
$_GET['nick'] = ''; | |||||
$_GET['nick'] = trim($this->db->real_escape_string(strip_tags($_GET['nick']))); | |||||
if ($this->getModel('UsersModel')->nickExists($_GET['nick']) == true) | |||||
echo 'true'; | |||||
else | |||||
echo 'false'; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,6 @@ | |||||
<?php | |||||
$DB = new MySQLi(DB_HOST, DB_USER, DB_PASSWD, DB_NAME); | |||||
$DB->query("SET NAMES `utf8`"); | |||||
?> |
@ -0,0 +1,5 @@ | |||||
<?php | |||||
?> |
@ -0,0 +1,56 @@ | |||||
<?php | |||||
require_once('./inc/askModel.class.php'); | |||||
abstract class Model extends AskModel | |||||
{ | |||||
protected $db; | |||||
function __construct(&$db) | |||||
{ | |||||
$this->db = $db; | |||||
} | |||||
public function select($table, $what='*', $where = '', $sorting = '', $limit = '') | |||||
{ | |||||
$sql="SELECT $what FROM $table"; | |||||
if ($where != '') | |||||
$sql .= " WHERE $where"; | |||||
if($sorting != '') | |||||
$sql .= " ORDER BY $sorting"; | |||||
if($limit != '') | |||||
$sql .= " LIMIT $limit"; | |||||
$result = $this->db->query($sql); | |||||
$out = array(); | |||||
if ($result->num_rows > 0) | |||||
{ | |||||
while ($row = $result->fetch_assoc()) | |||||
{ | |||||
$out[]=$row; | |||||
} | |||||
} | |||||
return $out; | |||||
} | |||||
public function select_query($sql) | |||||
{ | |||||
$result = $this->db->query($sql); | |||||
$out = array(); | |||||
if ($result->num_rows > 0) | |||||
{ | |||||
while ($row = $result->fetch_assoc()) | |||||
{ | |||||
$out[]=$row; | |||||
} | |||||
} | |||||
return $out; | |||||
} | |||||
} |
@ -0,0 +1,64 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class BansModel extends Model | |||||
{ | |||||
private $ban_info = null; | |||||
public function getBans() | |||||
{ | |||||
$query = 'SELECT b.ban_id as ban_id, b.user_id as user_id, u.nick as nick, b.reason as reason | |||||
FROM '.BANLIST_TABLE.' b | |||||
LEFT JOIN '.USERS_TABLE.' u ON u.user_id = b.user_id'; | |||||
return $this->select_query($query); | |||||
} | |||||
public function getBan($ban_id) | |||||
{ | |||||
if ($this->ban_info == null) | |||||
{ | |||||
$query = 'SELECT b.ban_id as ban_id, b.user_id as user_id, u.nick as nick, b.reason as reason | |||||
FROM '.BANLIST_TABLE.' b | |||||
LEFT JOIN '.USERS_TABLE.' u ON u.user_id = b.user_id | |||||
WHERE `ban_id`=\''.$ban_id.'\''; | |||||
$out = $this->select_query($query); | |||||
if (count($out) > 0) | |||||
$this->ban_info = $out[0]; | |||||
} | |||||
return $this->ban_info; | |||||
} | |||||
public function getUserBan($user_id) | |||||
{ | |||||
$out = $this->select(BANLIST_TABLE, '*', 'user_id=\''.$user_id.'\''); | |||||
if (count($out) > 0) | |||||
return $out[0]; | |||||
else | |||||
return null; | |||||
} | |||||
public function addBan($user_id, $reason) | |||||
{ | |||||
$query = 'INSERT INTO '.BANLIST_TABLE.' | |||||
(`ban_id`, `user_id`, `reason`) | |||||
VALUES (NULL, \''.$user_id.'\', \''.$reason.'\')'; | |||||
$this->db->query($query); | |||||
$query = 'DELETE FROM '.SESSIONS_TABLE.' WHERE `user_id`=\''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function deleteBan($ban_id) | |||||
{ | |||||
$query = 'DELETE FROM '.BANLIST_TABLE.' WHERE `ban_id`=\''.$ban_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,38 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class ConfigModel extends Model | |||||
{ | |||||
private $confList = array(); | |||||
public function __construct(&$db) | |||||
{ | |||||
$this->db = $db; | |||||
$result = $this->select (CONFIG_TABLE); | |||||
for ($i=0; $i<count($result); $i++) | |||||
$this->confList[$result[$i]['name']] = $result[$i]['value']; | |||||
} | |||||
public function getConf($name) | |||||
{ | |||||
if (isset($this->confList[$name])) | |||||
return $this->confList[$name]; | |||||
else | |||||
return null; | |||||
} | |||||
public function updateConf($name, $value) | |||||
{ | |||||
$query = 'UPDATE '.CONFIG_TABLE.' | |||||
SET `value`=\''.$value.'\' | |||||
WHERE `name`=\''.$name.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,119 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class ForumsModel extends Model | |||||
{ | |||||
private $forum_info = null; | |||||
private $cat_info = null; | |||||
public function getForums() | |||||
{ | |||||
return $this->select (FORUMS_VIEW); | |||||
} | |||||
public function getCats() | |||||
{ | |||||
return $this->select (CATS_TABLE); | |||||
} | |||||
public function getForumsNames() | |||||
{ | |||||
$out = $this->select (FORUMS_TABLE, 'forum_id, name', '', 'forum_id ASC'); | |||||
if (count($out) > 0) | |||||
return $out; | |||||
else | |||||
return array(); | |||||
} | |||||
public function getForum($forum_id) | |||||
{ | |||||
if ($this->forum_info == null) | |||||
{ | |||||
$out = $this->select(FORUMS_TABLE, '*', 'forum_id=\''.$forum_id.'\''); | |||||
if (count($out) > 0) | |||||
$this->forum_info = $out[0]; | |||||
} | |||||
return $this->forum_info; | |||||
} | |||||
public function getTopics($forum_id) | |||||
{ | |||||
$out = $this->select(TOPICS_VIEW, '*', 'forum_id=\''.$forum_id.'\'', 'lastpost_post_id DESC'); | |||||
if (count($out) > 0) | |||||
return $out; | |||||
else | |||||
return array(); | |||||
} | |||||
public function getCat($cat_id) | |||||
{ | |||||
if ($this->cat_info == null) | |||||
{ | |||||
$out = $this->select(CATS_TABLE, '*', 'category_id=\''.$cat_id.'\''); | |||||
if (count($out) > 0) | |||||
$this->cat_info = $out[0]; | |||||
} | |||||
return $this->cat_info; | |||||
} | |||||
public function changeCat($cat_id, $cat_name) | |||||
{ | |||||
$query = 'UPDATE '.CATS_TABLE.' | |||||
SET `name`=\''.$cat_name.'\' | |||||
WHERE `category_id`=\''.$cat_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function addCat($cat_name) | |||||
{ | |||||
$query = 'INSERT INTO '.CATS_TABLE.' | |||||
(category_id, name) | |||||
VALUES (NULL, \''.$cat_name.'\')'; | |||||
$this->db->query($query); | |||||
} | |||||
public function deleteCat($cat_id) | |||||
{ | |||||
$query = 'DELETE FROM '.CATS_TABLE.' | |||||
WHERE `category_id`=\''.$cat_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function changeForum($forum_id, $forum_name, $forum_desc, $forum_category_id, $forum_locked) | |||||
{ | |||||
$query = 'UPDATE '.FORUMS_TABLE.' | |||||
SET `name`=\''.$forum_name.'\', | |||||
`desc`=\''.$forum_desc.'\', | |||||
`category_id`=\''.$forum_category_id.'\', | |||||
`locked`=\''.$forum_locked.'\' | |||||
WHERE `forum_id`=\''.$forum_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function addForum($forum_name, $forum_desc, $forum_category_id, $forum_locked) | |||||
{ | |||||
$query = 'INSERT INTO '.FORUMS_TABLE.' | |||||
(`forum_id`, `name`, `desc`, `category_id`, `locked`) | |||||
VALUES (NULL, \''.$forum_name.'\', \''.$forum_desc.'\', \''.$forum_category_id.'\', \''.$forum_locked.'\')'; | |||||
$this->db->query($query); | |||||
} | |||||
public function deleteForum($forum_id) | |||||
{ | |||||
$query = 'DELETE FROM '.FORUMS_TABLE.' | |||||
WHERE `forum_id`=\''.$forum_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,43 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class NavigationModel extends Model | |||||
{ | |||||
private $linksList = array(); | |||||
private $title = ''; | |||||
public function setForumName($fn) | |||||
{ | |||||
$this->addLink('Forum '.$fn, 'index.php'); | |||||
$this->title = $fn. ' • '; | |||||
} | |||||
public function addLink($name, $url = '') | |||||
{ | |||||
if ($url == null) | |||||
$url = $_SERVER['REQUEST_URI']; | |||||
$l = array( | |||||
'name' => $name, | |||||
'url' => $url | |||||
); | |||||
array_push($this->linksList, $l); | |||||
} | |||||
public function setSubTitle($t) | |||||
{ | |||||
$this->title .= $t; | |||||
} | |||||
public function getTitle() | |||||
{ | |||||
return $this->title; | |||||
} | |||||
public function getNav() | |||||
{ | |||||
return $this->linksList; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,126 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class PostsModel extends Model | |||||
{ | |||||
private $topic_info = null; | |||||
private $post_info = null; | |||||
public function getTopic($topic_id) | |||||
{ | |||||
if ($this->topic_info == null) | |||||
{ | |||||
$query = ' | |||||
SELECT | |||||
t.topic_id as topic_id, t.title as topic_title, t.locked as topic_locked, t.forum_id as forum_id, f.name as forum_name, f.locked as forum_locked, pc.post_count as post_count | |||||
FROM '.TOPICS_TABLE.' t | |||||
LEFT JOIN '.FORUMS_TABLE.' f ON f.forum_id = t.forum_id | |||||
LEFT JOIN '.TOPICS_PC_VIEW.' pc ON pc.topic_id = t.topic_id | |||||
WHERE t.topic_id=\''.$topic_id.'\''; | |||||
$out = $this->select_query($query); | |||||
if (count($out) > 0) | |||||
$this->topic_info = $out[0]; | |||||
} | |||||
return $this->topic_info; | |||||
} | |||||
public function getPosts($topic_id) | |||||
{ | |||||
$out = $this->select (POSTS_VIEW, '*', 'topic_id=\''.$topic_id.'\'', 'post_id ASC'); | |||||
if ($out != null) | |||||
return $out; | |||||
else | |||||
return null; | |||||
} | |||||
public function getPost($post_id) | |||||
{ | |||||
$out = $this->select (POSTS_VIEW, '*', 'post_id=\''.$post_id.'\''); | |||||
if (count($out) > 0) | |||||
return $out[0]; | |||||
else | |||||
return null; | |||||
} | |||||
public function getFirstPost($topic_id) | |||||
{ | |||||
$out = $this->select (POSTS_VIEW, 'post_id', 'topic_id=\''.$topic_id.'\'', 'post_id ASC', 1); | |||||
if (count($out) > 0) | |||||
return $out[0]; | |||||
else | |||||
return null; | |||||
} | |||||
//mod options | |||||
public function deletePost($post_id) | |||||
{ | |||||
$query = 'DELETE FROM '.POSTS_TABLE.' WHERE post_id=\''.$post_id.'\';'; | |||||
$this->db->query($query); | |||||
} | |||||
public function deleteTopic($topic_id) | |||||
{ | |||||
$query = 'call delete_topic(\''.$topic_id.'\');'; | |||||
$this->db->query($query); | |||||
} | |||||
public function lockTopic($topic_id, $locked = true) | |||||
{ | |||||
$query = 'UPDATE '.TOPICS_TABLE.' SET locked=\''.$locked.'\' WHERE topic_id=\''.$topic_id.'\';'; | |||||
$this->db->query($query); | |||||
} | |||||
public function moveTopic($topic_id, $forum_id) | |||||
{ | |||||
$query = 'UPDATE '.TOPICS_TABLE.' SET forum_id=\''.$forum_id.'\' WHERE topic_id=\''.$topic_id.'\';'; | |||||
$this->db->query($query); | |||||
} | |||||
public function addTopic($title, $content, $forum_id, $user_id) | |||||
{ | |||||
$query = 'call add_topic(\''.$title.'\', | |||||
\''.$content.'\', | |||||
\''.$forum_id.'\', | |||||
\''.$user_id.'\', | |||||
\''.$_SERVER['HTTP_USER_AGENT'].'\', | |||||
@out);'; | |||||
$this->db->query($query); | |||||
$result = $this->db->query('select @out as topic_id'); | |||||
if ($result != null) | |||||
return $result->fetch_assoc()['topic_id']; | |||||
else | |||||
return null; | |||||
} | |||||
public function changePost($post_id, $content) | |||||
{ | |||||
$query = 'UPDATE '.POSTS_TABLE.' SET `content`=\''.$content.'\' WHERE `post_id`=\''.$post_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function changeTopic($topic_id, $title) | |||||
{ | |||||
$query = 'UPDATE '.TOPICS_TABLE.' SET `title`=\''.$title.'\' WHERE `topic_id`=\''.$topic_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function addPost($topic_id, $user_id, $content) | |||||
{ | |||||
$query = 'INSERT INTO '.POSTS_TABLE.' | |||||
(post_id, topic_id, user_id, content, date, user_agent) | |||||
VALUES | |||||
(NULL, \''.$topic_id.'\', \''.$user_id.'\', \''.$content.'\', NOW(), \''.$_SERVER['HTTP_USER_AGENT'].'\')'; | |||||
$this->db->query($query); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,125 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class SessionModel extends Model | |||||
{ | |||||
private $userdata = array(); | |||||
public function __construct(&$db) | |||||
{ | |||||
$this->db = $db; | |||||
if (isset($_COOKIE[COOKIE_NAME])) | |||||
{ | |||||
$result = $this->select(SESSIONS_TABLE, '*', 'session_id=\''.$_COOKIE[COOKIE_NAME].'\' AND expiry_time>=NOW()'); | |||||
if (count($result) > 0) | |||||
{ | |||||
//update session expiry time in database and in cookie | |||||
if ($result[0]['IP'] != $_SERVER['REMOTE_ADDR']) | |||||
{ | |||||
$this->deleteSession(); | |||||
} | |||||
else | |||||
{ | |||||
$this->updateSession(); | |||||
$uid = $result[0]['user_id']; | |||||
$result = $this->select(USERS_TABLE, 'user_id, nick, rank', 'user_id=\''.$uid.'\''); | |||||
$this->userdata = $result[0]; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
$this->deleteSession(); | |||||
} | |||||
} | |||||
} | |||||
public function updateSession() | |||||
{ | |||||
/*$this->db->query('UPDATE '.SESSIONS_TABLE.' SET expiry_time=(NOW() + INTERVAL 120 MINUTE) WHERE session_id=\''.$_COOKIE[COOKIE_NAME].'\''); | |||||
setcookie(COOKIE_NAME, $_COOKIE[COOKIE_NAME], $_SERVER['REQUEST_TIME']+7200, COOKIE_PATH, COOKIE_DOMAIN, false, true); */ | |||||
$newid = $this->generateSessionID(); | |||||
$this->db->query('UPDATE '.SESSIONS_TABLE.' SET expiry_time=(NOW() + INTERVAL 120 MINUTE), session_id=\''.$newid.'\' WHERE session_id=\''.$_COOKIE[COOKIE_NAME].'\''); | |||||
setcookie(COOKIE_NAME, $newid, $_SERVER['REQUEST_TIME']+7200, COOKIE_PATH, COOKIE_DOMAIN, false, true); | |||||
$_COOKIE[COOKIE_NAME] = $newid; | |||||
} | |||||
public function deleteSession() | |||||
{ | |||||
setcookie(COOKIE_NAME, '', $_SERVER['REQUEST_TIME']-3600, COOKIE_PATH, COOKIE_DOMAIN, false, true); | |||||
$this->db->query('DELETE FROM '.SESSIONS_TABLE.' WHERE session_id=\''.$_COOKIE[COOKIE_NAME].'\''); | |||||
} | |||||
private function generateSessionID() | |||||
{ | |||||
$out = $_SERVER['HTTP_USER_AGENT'].$_SERVER['REQUEST_TIME_FLOAT'].$_SERVER['REMOTE_ADDR'].rand(1, 50000); | |||||
return md5($out); | |||||
} | |||||
public function registerNewSession($user_id) | |||||
{ | |||||
$newID = $this->generateSessionID(); | |||||
$query = 'UPDATE '.USERS_INFO_TABLE.' | |||||
SET lastvisit=NOW() | |||||
WHERE user_id=\''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
$query = | |||||
'INSERT INTO | |||||
'.SESSIONS_TABLE.' | |||||
(session_id, user_id, IP, expiry_time) | |||||
VALUES | |||||
(\''.$newID.'\', \''.$user_id.'\', \''.$_SERVER['REMOTE_ADDR'].'\', (NOW() + INTERVAL 120 MINUTE) );'; | |||||
$this->db->query($query); | |||||
setcookie(COOKIE_NAME, $newID, $_SERVER['REQUEST_TIME']+7200, COOKIE_PATH, COOKIE_DOMAIN, false, true); | |||||
} | |||||
public function tryGetUser($nick, $passwd) | |||||
{ | |||||
$result = $this->select(USERS_TABLE, 'user_id, nick', 'nick=\''.$nick.'\' AND password=\''.$passwd.'\'', '', 1); | |||||
if (count($result) > 0 ) | |||||
return $result[0]; | |||||
else | |||||
return array(); | |||||
} | |||||
public function isLogged() | |||||
{ | |||||
if (count($this->userdata) > 0) | |||||
return true; | |||||
else | |||||
return false; | |||||
} | |||||
public function getNick() | |||||
{ | |||||
if ($this->isLogged()) | |||||
return $this->userdata['nick']; | |||||
else | |||||
return null; | |||||
} | |||||
public function getRank() | |||||
{ | |||||
if ($this->isLogged()) | |||||
return $this->userdata['rank']; | |||||
else | |||||
return null; | |||||
} | |||||
public function getID() | |||||
{ | |||||
if ($this->isLogged()) | |||||
return $this->userdata['user_id']; | |||||
else | |||||
return null; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,56 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class StatisticsModel extends Model | |||||
{ | |||||
private $logged_users = null; | |||||
public function getPostsCount() | |||||
{ | |||||
$out = $this->select(POSTS_TABLE, 'count(post_id) AS posts_count'); | |||||
return $out[0]['posts_count']; | |||||
} | |||||
public function getTopicsCount() | |||||
{ | |||||
$out = $this->select(TOPICS_TABLE, 'count(topic_id) AS topics_count'); | |||||
return $out[0]['topics_count']; | |||||
} | |||||
public function getUsersCount() | |||||
{ | |||||
$out = $this->select(USERS_TABLE, 'count(user_id) AS users_count'); | |||||
return $out[0]['users_count']; | |||||
} | |||||
public function getLastRegisteredUser() | |||||
{ | |||||
$out = $this->select(USERS_TABLE, 'user_id, nick, rank', '', 'user_id DESC', '1'); | |||||
return $out[0]; | |||||
} | |||||
private function retrieveLoggedUsers() | |||||
{ | |||||
if ($this->logged_users == null) | |||||
{ | |||||
$this->logged_users = $this->select(LOGGED_USERS_VIEW); | |||||
} | |||||
} | |||||
public function getLoggedUsersCount() | |||||
{ | |||||
$this->retrieveLoggedUsers(); | |||||
return count($this->logged_users); | |||||
} | |||||
public function getLoggedUsers() | |||||
{ | |||||
$this->retrieveLoggedUsers(); | |||||
return $this->logged_users; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,128 @@ | |||||
<?php | |||||
require_once('./inc/model.class.php'); | |||||
class UsersModel extends Model | |||||
{ | |||||
private $user_info = null; | |||||
public function nickExists($nick) | |||||
{ | |||||
$out = $this->select(USERS_TABLE, 'nick', '`nick`=\''.$nick.'\'', '', 1); | |||||
if (count($out) > 0) | |||||
return true; | |||||
else | |||||
return false; | |||||
} | |||||
public function createNewUser($nick, $passwd, $email) | |||||
{ | |||||
$this->db->query('call add_user(\''.$nick.'\', \''.$passwd.'\', \''.$email.'\');'); | |||||
} | |||||
public function getUsersNicks() | |||||
{ | |||||
$out = $this->select (USERS_TABLE, 'user_id, nick', '', 'user_id ASC'); | |||||
if (count($out) > 0) | |||||
return $out; | |||||
else | |||||
return array(); | |||||
} | |||||
public function getUserInformation($user_id, $passwd = false) | |||||
{ | |||||
if ($this->user_info == null) | |||||
{ | |||||
$query = ' | |||||
SELECT | |||||
u.nick as nick, u.email as email, u.rank as rank, u.active as active, | |||||
ui.regdate as regdate, ui.lastvisit as lastvisit, ui.avatar as avatar, ui.location as location, ui.signature as signature, pc.post_count as post_count, lu.IP as user_IP '; | |||||
if ($passwd) | |||||
$query .= ',u.password as password '; | |||||
$query .= ' | |||||
FROM '.USERS_TABLE.' u | |||||
LEFT JOIN '.USERS_INFO_TABLE.' ui on ui.user_id = u.user_id | |||||
LEFT JOIN '.USERS_PC_VIEW.' pc on pc.user_id = u.user_id | |||||
LEFT JOIN '.LOGGED_USERS_VIEW.' lu on lu.user_id = u.user_id | |||||
WHERE u.user_id = \''.$user_id.'\''; | |||||
$out = $this->select_query($query); | |||||
if (count($out) > 0) | |||||
$this->user_info = $out[0]; | |||||
} | |||||
return $this->user_info; | |||||
} | |||||
public function changeUserPassword($user_id, $passwd) | |||||
{ | |||||
$query = | |||||
'UPDATE .'.USERS_TABLE.' | |||||
SET `password`=\''.$passwd.'\' | |||||
WHERE `user_id` = \''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function changeUserRank($user_id, $rank) | |||||
{ | |||||
$query = | |||||
'UPDATE .'.USERS_TABLE.' | |||||
SET `rank`=\''.$rank.'\' | |||||
WHERE `user_id` = \''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function updateUserProfile($user_id, $nick, $email, $location, $signature, $avatar) | |||||
{ | |||||
$query = | |||||
'UPDATE .'.USERS_TABLE.' | |||||
SET '; | |||||
if ($nick != null) | |||||
$query .= '`nick`=\''.$nick.'\','; | |||||
$query .= '`email`=\''.$email.'\' | |||||
WHERE `user_id` = \''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
//profile informations | |||||
$query = | |||||
'UPDATE .'.USERS_INFO_TABLE.' | |||||
SET | |||||
`avatar`=\''.$avatar.'\', | |||||
`location`=\''.$location.'\', | |||||
`signature`=\''.$signature.'\' | |||||
WHERE `user_id` = \''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
public function getUsers($stype, $sorder, $rank) | |||||
{ | |||||
$query = ' | |||||
SELECT | |||||
u.user_id as user_id, u.nick as nick, u.rank as rank, ui.regdate as regdate, ui.lastvisit as lastvisit, pc.post_count as post_count | |||||
FROM '.USERS_TABLE.' u | |||||
LEFT JOIN '.USERS_INFO_TABLE.' ui on ui.user_id = u.user_id | |||||
LEFT JOIN '.USERS_PC_VIEW.' pc on pc.user_id = u.user_id '; | |||||
if ($rank !== '') | |||||
$query .= 'WHERE rank=\''.$rank.'\''; | |||||
$query .= ' | |||||
ORDER BY '.$stype.' '.$sorder; | |||||
$out = $this->select_query($query); | |||||
return $out; | |||||
} | |||||
public function deleteUser($user_id) | |||||
{ | |||||
$query = | |||||
'DELETE FROM .'.USERS_TABLE.' | |||||
WHERE `user_id` = \''.$user_id.'\''; | |||||
$this->db->query($query); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,29 @@ | |||||
<?php | |||||
require_once('./inc/askModel.class.php'); | |||||
abstract class View extends AskModel | |||||
{ | |||||
protected $TPL = array(); | |||||
protected $db; | |||||
function show($template) | |||||
{ | |||||
if (file_exists('./templates/'.$template.'.tpl.php')) | |||||
require_once('./templates/'.$template.'.tpl.php'); | |||||
else | |||||
throw new Exception('Could not show selected template: '.$template); | |||||
} | |||||
function assign($n, $v) //osadzanie elementu skórki | |||||
{ | |||||
$this->TPL[$n] = $v; | |||||
} | |||||
function __construct(&$db) | |||||
{ | |||||
$this->db = $db; | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,536 @@ | |||||
<?php | |||||
require_once('./inc/view.class.php'); | |||||
class MainView extends View | |||||
{ | |||||
private function setDefaults($admin = false) | |||||
{ | |||||
//logged user information | |||||
$this->assign('is_logged', $this->getModel('SessionModel')->isLogged()); | |||||
$this->assign('my_nick', $this->getModel('SessionModel')->getNick()); | |||||
$this->assign('my_id', $this->getModel('SessionModel')->getID()); | |||||
$this->assign('my_rank', $this->getModel('SessionModel')->getRank()); | |||||
$this->assign('actual_time', date('Y-m-d G:i', $_SERVER['REQUEST_TIME'])); | |||||
//forum prefs | |||||
$this->assign('forum_name', $this->getModel('ConfigModel')->getConf('forum_name')); | |||||
$this->assign('forum_desc', $this->getModel('ConfigModel')->getConf('forum_desc')); | |||||
//navigation | |||||
$this->loadModel('NavigationModel'); | |||||
$this->getModel('NavigationModel')->setForumName($this->getModel('ConfigModel')->getConf('forum_name')); | |||||
if ($admin) | |||||
$this->getModel('NavigationModel')->addLink('ACP Admin', 'index.php?mode=admin'); | |||||
} | |||||
//widok strony głównej | |||||
public function main() | |||||
{ | |||||
$this->setDefaults(); | |||||
// get categories, forums, forums statistics | |||||
$this->loadModel('ForumsModel'); | |||||
$this->assign('forums_list', $this->getModel('ForumsModel')->getForums()); | |||||
//get data for bottom statistics | |||||
$this->loadModel('StatisticsModel'); | |||||
$this->assign('posts_count', $this->getModel('StatisticsModel')->getPostsCount()); | |||||
$this->assign('users_count', $this->getModel('StatisticsModel')->getUsersCount()); | |||||
$this->assign('last_user', $this->getModel('StatisticsModel')->getLastRegisteredUser()); | |||||
$this->assign('logged_users_count', $this->getModel('StatisticsModel')->getLoggedUsersCount()); | |||||
$this->assign('logged_users', $this->getModel('StatisticsModel')->getLoggedUsers()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Main Page'); | |||||
$this->getModel('NavigationModel')->addLink('Main Page', 'index.php'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('main'); | |||||
} | |||||
public function viewforum() | |||||
{ | |||||
$this->setDefaults(); | |||||
// get forum info | |||||
$f_info = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
$this->assign('f_name', $f_info['name']); | |||||
$this->assign('forum_info', $f_info); | |||||
$this->assign('topics_list', $this->getModel('ForumsModel')->getTopics($_GET['id'])); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('View forum: '.$f_info['name']); | |||||
$this->getModel('NavigationModel')->addLink($f_info['name'], 'index.php?mode=viewforum&id='.$_GET['id']); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('viewforum'); | |||||
} | |||||
public function userlist() | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->loadModel('UsersModel'); | |||||
$this->assign('users_list', $this->getModel('UsersModel')->getUsers($_POST['sort_type'], $_POST['sort_desc'], $_GET['rank'])); | |||||
$this->assign('regdate_selected', ($_POST['sort_type'] == 'regdate') ? 'selected="selected"' : ''); | |||||
$this->assign('lastvisit_selected', ($_POST['sort_type'] == 'lastvisit') ? 'selected="selected"' : ''); | |||||
$this->assign('username_selected', ($_POST['sort_type'] == 'nick') ? 'selected="selected"' : ''); | |||||
$this->assign('posts_selected', ($_POST['sort_type'] == 'post_count') ? 'selected="selected"' : ''); | |||||
$this->assign('desc_checked', ($_POST['sort_desc'] == 'DESC') ? 'checked="checked"' : ''); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Users list'); | |||||
$this->getModel('NavigationModel')->addLink('Users list', 'index.php?mode=userlist'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('userlist'); | |||||
} | |||||
public function viewtopic() | |||||
{ | |||||
$this->setDefaults(); | |||||
// get forum info | |||||
$t_info = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
$this->assign('topic_info', $t_info); | |||||
$this->assign('posts_list', $this->getModel('PostsModel')->getPosts($_GET['id'])); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('View topic: '.$t_info['topic_title']); | |||||
$this->getModel('NavigationModel')->addLink($t_info['forum_name'], 'index.php?mode=viewforum&id='.$t_info['forum_id']); | |||||
$this->getModel('NavigationModel')->addLink($t_info['topic_title'], 'index.php?mode=viewtopic&id='.$_GET['id']); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('viewtopic'); | |||||
} | |||||
public function login_form($msg) | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->assign('nick', $_POST['nick']); | |||||
$this->assign('error_msg', $msg); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Log in'); | |||||
$this->getModel('NavigationModel')->addLink('Log in', 'index.php?mode=login'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('login_form'); | |||||
} | |||||
public function register_form($msg) | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->assign('nick', $_POST['nick']); | |||||
$this->assign('email', $_POST['email']); | |||||
$this->assign('error_msg', $msg); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Register'); | |||||
$this->getModel('NavigationModel')->addLink('Register', 'index.php?mode=register'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('register_form'); | |||||
} | |||||
public function viewprofile() | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->loadModel('StatisticsModel'); | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($_GET['id']); | |||||
$this->assign('user_info', $user_info); | |||||
$total_posts = $this->getModel('StatisticsModel')->getPostsCount(); | |||||
$posts_ration = ($total_posts > 0) ? round(100*$user_info['post_count']/$total_posts, 2) : 0; | |||||
$this->assign('post_ratio', $total_posts); | |||||
$this->assign('logged_id', $this->getModel('SessionModel')->getID()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->addLink('Users list', 'index.php?mode=userlist'); | |||||
$this->getModel('NavigationModel')->setSubTitle('View profile: '.$user_info['nick']); | |||||
$this->getModel('NavigationModel')->addLink('Profile: '.$user_info['nick'], 'index.php?mode=viewprofile&id='.$_GET['id']); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('viewprofile'); | |||||
} | |||||
public function edprofile_form($msg, $admin = false) | |||||
{ | |||||
$this->setDefaults($admin); | |||||
if ($admin) | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($_GET['id']); | |||||
else | |||||
$user_info = $this->getModel('UsersModel')->getUserInformation($this->getModel('SessionModel')->getID()); | |||||
$this->assign('nick', $_POST['nick']); | |||||
$this->assign('is_admin', $admin); | |||||
$this->assign('email', $_POST['email']); | |||||
$this->assign('location', $_POST['location']); | |||||
$this->assign('signature', $_POST['signature']); | |||||
$this->assign('avatar', $user_info['avatar']); | |||||
$this->assign('error_msg', $msg); | |||||
if ($admin) | |||||
{ | |||||
$this->assign('user_selected', ($_POST['user_rank'] == RANK_USER) ? 'checked="checked"' : ''); | |||||
$this->assign('mod_selected', ($_POST['user_rank'] == RANK_MOD) ? 'checked="checked"' : ''); | |||||
$this->assign('admin_selected', ($_POST['user_rank'] == RANK_ADMIN) ? 'checked="checked"' : ''); | |||||
} | |||||
//nawigacja po witrynie | |||||
if ($admin) | |||||
{ | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Edit profile'); | |||||
$this->getModel('NavigationModel')->addLink('Users list', 'index.php?mode=admin&submode=users'); | |||||
$this->getModel('NavigationModel')->addLink('Edit user: '.$user_info['nick']); | |||||
} | |||||
else | |||||
{ | |||||
$this->getModel('NavigationModel')->setSubTitle('Edit profile'); | |||||
$this->getModel('NavigationModel')->addLink('Edit profile', 'index.php?mode=editprofile'); | |||||
} | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('edprofile'); | |||||
} | |||||
public function posting_form($type, $msg='') | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->assign('error_msg', $msg); | |||||
//nawigacja po witrynie | |||||
switch ($type) | |||||
{ | |||||
case POSTING_NEWTOPIC: | |||||
$forum_info = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('New topic'); | |||||
$this->getModel('NavigationModel')->addLink($forum_info['name'], 'index.php?mode=viewforum&id='.$forum_info['forum_id']); | |||||
$this->getModel('NavigationModel')->addLink('New topic', $_SERVER['REQUEST_URI']); | |||||
break; | |||||
case POSTING_REPLY: | |||||
case POSTING_QUOTE: | |||||
$topic_info = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('Reply'); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['forum_name'], 'index.php?mode=viewforum&id='.$topic_info['forum_id']); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['topic_title'], 'index.php?mode=viewtopic&id='.$topic_info['topic_id']); | |||||
$this->getModel('NavigationModel')->addLink('Write a reply', $_SERVER['REQUEST_URI']); | |||||
break; | |||||
case POSTING_EDIT: | |||||
$topic_info = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('Edit post'); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['forum_name'], 'index.php?mode=viewforum&id='.$topic_info['forum_id']); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['topic_title'], 'index.php?mode=viewtopic&id='.$topic_info['topic_id']); | |||||
$this->getModel('NavigationModel')->addLink('Edit post', $_SERVER['REQUEST_URI']); | |||||
break; | |||||
case POSTING_EDITTOPIC: | |||||
$topic_info = $this->getModel('PostsModel')->getTopic($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('Edit topic'); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['forum_name'], 'index.php?mode=viewforum&id='.$topic_info['forum_id']); | |||||
$this->getModel('NavigationModel')->addLink($topic_info['topic_title'], 'index.php?mode=viewtopic&id='.$topic_info['topic_id']); | |||||
$this->getModel('NavigationModel')->addLink('Edit topic', $_SERVER['REQUEST_URI']); | |||||
break; | |||||
} | |||||
$this->assign('post', $_POST['post']); | |||||
if (isset($_POST['preview'])) | |||||
$this->assign('preview', addslashes(htmlspecialchars($_POST['post']))); | |||||
if ($type == POSTING_NEWTOPIC || $type == POSTING_EDITTOPIC) | |||||
$this->assign('topic', $_POST['topic']); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('posting'); | |||||
} | |||||
public function move_topic() | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->loadModel('ForumsModel'); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Move topic'); | |||||
$this->getModel('NavigationModel')->addLink('Move topic', $_SERVER['REQUEST_URI']); | |||||
$this->assign('topic_info', $this->getModel('PostsModel')->getTopic($_GET['id'])); | |||||
$this->assign('forums_list', $this->getModel('ForumsModel')->getForumsNames()); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('move_topic'); | |||||
} | |||||
public function forum_message($msg, $url = '', $timeout = 2) | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->assign('message', $msg); | |||||
$this->assign('url', $url); | |||||
$this->assign('timeout', $timeout); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Forum message'); | |||||
$this->getModel('NavigationModel')->addLink('Forum message', 'index.php'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('forum_message'); | |||||
} | |||||
public function confirm_action($msg) | |||||
{ | |||||
$this->setDefaults(); | |||||
$this->assign('message', $msg); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Confirm action'); | |||||
$this->getModel('NavigationModel')->addLink('Confirm action', $_SERVER['REQUEST_URI']); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('confirm_action'); | |||||
} | |||||
public function colorRank($username, $rank) | |||||
{ | |||||
if ($rank == RANK_ADMIN) | |||||
return '<span class="fadmin">'.$username.'</span>'; | |||||
if ($rank == RANK_MOD) | |||||
return '<span class="fmod">'.$username.'</span>'; | |||||
return $username; | |||||
} | |||||
public function getRankLevel($rank) | |||||
{ | |||||
if ($rank == RANK_ADMIN) | |||||
return $this->colorRank('Admin', $rank); | |||||
if ($rank == RANK_MOD) | |||||
return $this->colorRank('Mod', $rank); | |||||
return 'User'; | |||||
} | |||||
// ADMIN PANEL ----------------------------------------------------------------- | |||||
public function admin_main() | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->loadModel('StatisticsModel'); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('Main Page'); | |||||
$this->assign('installation_date', $this->getModel('ConfigModel')->getConf('installation_date')); | |||||
$this->assign('topics_total', $this->getModel('StatisticsModel')->getTopicsCount()); | |||||
$this->assign('posts_total', $this->getModel('StatisticsModel')->getPostsCount()); | |||||
$this->assign('users_total', $this->getModel('StatisticsModel')->getUsersCount()); | |||||
$this->assign('script_version', VERSION); | |||||
$this->assign('logged_users', $this->getModel('StatisticsModel')->getLoggedUsers()); | |||||
$this->assign('logged_users_total', $this->getModel('StatisticsModel')->getLoggedUsersCount()); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/main'); | |||||
} | |||||
public function admin_userlist() | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->loadModel('UsersModel'); | |||||
$this->assign('users_list', $this->getModel('UsersModel')->getUsers($_POST['sort_type'], $_POST['sort_desc'], $_GET['rank'])); | |||||
$this->assign('regdate_selected', ($_POST['sort_type'] == 'regdate') ? 'selected="selected"' : ''); | |||||
$this->assign('lastvisit_selected', ($_POST['sort_type'] == 'lastvisit') ? 'selected="selected"' : ''); | |||||
$this->assign('username_selected', ($_POST['sort_type'] == 'nick') ? 'selected="selected"' : ''); | |||||
$this->assign('posts_selected', ($_POST['sort_type'] == 'post_count') ? 'selected="selected"' : ''); | |||||
$this->assign('desc_checked', ($_POST['sort_desc'] == 'DESC') ? 'checked="checked"' : ''); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Users list'); | |||||
$this->getModel('NavigationModel')->addLink('Users list'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/userlist'); | |||||
} | |||||
public function admin_config($msg) | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->loadModel('UsersModel'); | |||||
$this->assign('forum_name', $_POST['forum_name']); | |||||
$this->assign('forum_desc', $_POST['forum_desc']); | |||||
$this->assign('error_msg', $msg); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Admin config'); | |||||
$this->getModel('NavigationModel')->addLink('Forum configuration'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/config'); | |||||
} | |||||
//widok strony głównej | |||||
public function admin_forums() | |||||
{ | |||||
$this->setDefaults(true); | |||||
// get categories, forums, forums statistics | |||||
$this->loadModel('ForumsModel'); | |||||
$this->assign('forums_list', $this->getModel('ForumsModel')->getForums()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Forums list'); | |||||
$this->getModel('NavigationModel')->addLink('Forums list'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/forums'); | |||||
} | |||||
public function admin_cat_form($msg, $m) | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->assign('name', $_POST['name']); | |||||
$this->assign('error_msg', $msg); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->addLink('Forums list', 'index.php?mode=admin&submode=forums'); | |||||
if ($m == 'add') | |||||
{ | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Add category'); | |||||
$this->getModel('NavigationModel')->addLink('Add category'); | |||||
$this->assign('cat_form_name', 'Add new category'); | |||||
} | |||||
else | |||||
{ | |||||
$cat_info = $this->getModel('ForumsModel')->getCat($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Edit category'); | |||||
$this->getModel('NavigationModel')->addLink('Edit category: '.$cat_info['name']); | |||||
$this->assign('cat_form_name', 'Edit category'); | |||||
} | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/cat_form'); | |||||
} | |||||
public function admin_forum_form($msg, $m) | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->assign('name', $_POST['name']); | |||||
$this->assign('desc', $_POST['desc']); | |||||
$this->assign('category_id', $_POST['category_id']); | |||||
$this->assign('lock_selected', ($_POST['locked']) ? 'checked="checked"' : ''); | |||||
$this->assign('unlock_selected', (!$_POST['locked']) ? 'checked="checked"' : ''); | |||||
$this->assign('error_msg', $msg); | |||||
$this->assign('cats_list', $this->getModel('ForumsModel')->getCats()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->addLink('Forums list', 'index.php?mode=admin&submode=forums'); | |||||
if ($m == 'add') | |||||
{ | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Add forum'); | |||||
$this->getModel('NavigationModel')->addLink('Add forum'); | |||||
$this->assign('forum_form_name', 'Add new forum'); | |||||
} | |||||
else | |||||
{ | |||||
$forum_info = $this->getModel('ForumsModel')->getForum($_GET['id']); | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Edit forum'); | |||||
$this->getModel('NavigationModel')->addLink('Edit forum'.$forum_info['name']); | |||||
$this->assign('forum_form_name', 'Edit forum'); | |||||
} | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/forum_form'); | |||||
} | |||||
public function admin_banlist() | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->loadModel('BansModel'); | |||||
$this->assign('bans_list', $this->getModel('BansModel')->getBans()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Banlist'); | |||||
$this->getModel('NavigationModel')->addLink('Banlist'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/banlist'); | |||||
} | |||||
public function admin_ban_form($msg) | |||||
{ | |||||
$this->setDefaults(true); | |||||
$this->assign('user_id', $_POST['user_id']); | |||||
$this->assign('reason', $_POST['reason']); | |||||
$this->loadModel('UsersModel'); | |||||
$this->assign('error_msg', $msg); | |||||
$this->assign('users_list', $this->getModel('UsersModel')->getUsersNicks()); | |||||
//nawigacja po witrynie | |||||
$this->getModel('NavigationModel')->addLink('Banlist', 'index.php?mode=admin&submode=banlist'); | |||||
$this->getModel('NavigationModel')->setSubTitle('ACP • Add ban'); | |||||
$this->getModel('NavigationModel')->addLink('Add ban'); | |||||
$this->assign('forum_form_name', 'Add ban'); | |||||
// końcowe rzeczy | |||||
$this->assign('nav', $this->getModel('NavigationModel')->getNav()); | |||||
$this->assign('meta_title', $this->getModel('NavigationModel')->getTitle()); | |||||
$this->show('admin/ban_form'); | |||||
} | |||||
} | |||||
?> |
@ -0,0 +1,43 @@ | |||||
<?php | |||||
$_GET['mode'] = (isset($_GET['mode'])) ? trim(strip_tags($_GET['mode'])) : ''; | |||||
$_GET['submode'] = (isset($_GET['submode'])) ? trim(strip_tags($_GET['submode'])) : ''; | |||||
require_once('./config.php'); | |||||
require_once('./inc/constants.php'); | |||||
require_once('./inc/database_connection.php'); | |||||
require_once('./inc/bbcode.php'); | |||||
try | |||||
{ | |||||
switch ($_GET['mode']) | |||||
{ | |||||
default: | |||||
require_once('./inc/controllers/MainController.class.php'); | |||||
$ob = new MainController($DB); | |||||
if ($_GET['mode'] != null) | |||||
$ob->$_GET['mode'](); | |||||
else | |||||
$ob->loadDefault(); | |||||
break; | |||||
case 'admin': | |||||
require_once('./inc/controllers/AdminController.class.php'); | |||||
$ob = new AdminController($DB); | |||||
if ($_GET['submode'] != null) | |||||
$ob->$_GET['submode'](); | |||||
else | |||||
$ob->loadDefault(); | |||||
break; | |||||
} | |||||
} | |||||
catch (Exception $e) | |||||
{ | |||||
echo | |||||
'<span style="color: red">Unexpected error occured:<br> | |||||
<span style="font-weight: bold">'.$e->getMessage().'</span><br> | |||||
<br> | |||||
File: '.$e->getFile().'<br> | |||||
Line: '.$e->getLine().'<br> | |||||
Trace: '.$e->getTraceAsString().'</span>'; | |||||
exit; | |||||
} | |||||
?> |
@ -0,0 +1,81 @@ | |||||
#container { | |||||
background-color: lightgray; | |||||
border: 2px solid #551c1c; | |||||
} | |||||
a:hover { | |||||
color: #551c1c; | |||||
} | |||||
#container #top { | |||||
background-color: lightgray; | |||||
height: 70px; | |||||
} | |||||
#container #top h1 { | |||||
top: 0%; | |||||
color: #551c1c; | |||||
} | |||||
#container #footer { | |||||
background-color: #551c1c; | |||||
} | |||||
#container #menu { | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
.navigation { | |||||
color: #551c1c; | |||||
} | |||||
.row:last-child .tc1, .row:last-child .tc2, .row:last-child .tc3, .row:last-child .tc4 { | |||||
border-bottom: 1px solid #551c1c; | |||||
} | |||||
.rcol { | |||||
border: 1px solid #551c1c; | |||||
} | |||||
.tc1 { | |||||
border-left: 1px solid #551c1c; | |||||
} | |||||
.tc4 { | |||||
border-right: 1px solid #551c1c; | |||||
} | |||||
.hc1, .hc2, .hc3, .hc4 { | |||||
background-image: url('images/category_beam.gif'); | |||||
border-top: 1px solid #551c1c; | |||||
} | |||||
.hc1 { | |||||
border-left: 1px solid #551c1c; | |||||
} | |||||
.hc4 { | |||||
border-right: 1px solid #551c1c; | |||||
} | |||||
.tab_desc { | |||||
color: #551c1c; | |||||
} | |||||
input[type="button"], input[type="reset"], input[type="submit"] { | |||||
background-color: #f8e3e3; | |||||
border: 1px solid #f8d6d6; | |||||
color: #A30000; | |||||
} | |||||
input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover { | |||||
background-color: #f8f1f1; | |||||
} | |||||
.btn { | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
.btn_small { | |||||
background-image: url('images/button_beam.gif'); | |||||
} |
@ -0,0 +1,56 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"><?= $this->TPL['forum_form_name']; ?></div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
User: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<select name="user_id"> | |||||
<?php | |||||
for ($i=0; $i<count($this->TPL['users_list']); $i++) | |||||
{ | |||||
$sel = ($this->TPL['users_list'][$i]['user_id'] == $this->TPL['user_id']) ? 'selected="selected"' : ''; | |||||
echo '<option value="'.$this->TPL['users_list'][$i]['user_id'].'" '.$sel.'>'.$this->TPL['users_list'][$i]['nick'].'</option>'; | |||||
} | |||||
?> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Reason: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<textarea id="signature" name="reason" id="reason" maxlength="150"><?= $this->TPL['reason']; ?></textarea> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Add"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,36 @@ | |||||
<? require_once('./templates/admin/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<a href="index.php?mode=admin&submode=addban" class="btn">Add ban</a> | |||||
<br /> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1" style="width: 150px">Banlist</div> | |||||
<div class="hc2"> </div> | |||||
<div class="hc4" style="width: 70px"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc" style="width: 150px">Username</div> | |||||
<div class="tc2 tab_desc">Reason</div> | |||||
<div class="tc4 tab_desc" style="width: 70px"></div> | |||||
</div> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['bans_list']); $i++) | |||||
{ | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1 tc2" style="width: 150px">'.$this->TPL['bans_list'][$i]['nick'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc2" style="font-style:italic">'.$this->TPL['bans_list'][$i]['reason'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc4" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=delban&id='.$this->TPL['bans_list'][$i]['ban_id'].'" class="btn_small">Delete</a> | |||||
</div>'; | |||||
echo "\t\t".'</div>'."\n"; | |||||
} | |||||
if (count($this->TPL['bans_list']) == 0) | |||||
{ | |||||
echo '<div class="rcol">Banlist is empty.</div>'; | |||||
} | |||||
?> | |||||
</div> | |||||
<br> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,41 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"><?= $this->TPL['cat_form_name']; ?></div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Category name: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="30" name="name" id="name" value="<?= $this->TPL['name']; ?>" required pattern=".{3,}" required title="3 characters minimum"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Save"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,49 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Overall configuration</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Forum name: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="30" name="forum_name" id="forum_name" value="<?= $this->TPL['forum_name']; ?>" required pattern=".{3,}" required title="3 characters minimum"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Forum description: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="50" name="forum_desc" id="forum_desc" value="<?= $this->TPL['forum_desc']; ?>"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Save"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,76 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"><?= $this->TPL['forum_form_name']; ?></div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Forum name: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="50" name="name" id="name" value="<?= $this->TPL['name']; ?>" required pattern=".{3,}" required title="3 characters minimum"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Forum description: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="150" name="desc" id="desc" value="<?= $this->TPL['desc']; ?>" style="width: 400px"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Category: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<select name="category_id"> | |||||
<?php | |||||
for ($i=0; $i<count($this->TPL['cats_list']); $i++) | |||||
{ | |||||
$sel = ($this->TPL['cats_list'][$i]['category_id'] == $this->TPL['category_id']) ? 'selected="selected"' : ''; | |||||
echo '<option value="'.$this->TPL['cats_list'][$i]['category_id'].'" '.$sel.'>'.$this->TPL['cats_list'][$i]['name'].'</option>'; | |||||
} | |||||
?> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Forum locked: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="radio" name="locked" value="1" <?= $this->TPL['lock_selected']; ?>> | |||||
Yes | |||||
<input type="radio" name="locked" value="0" <?= $this->TPL['unlock_selected']; ?>> | |||||
No | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Save"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,69 @@ | |||||
<? require_once('./templates/admin/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<br> | |||||
<a href="index.php?mode=admin&submode=addcat" class="btn" style="width: 130px; float: left">New Category</a> | |||||
<a href="index.php?mode=admin&submode=addforum" class="btn" style="width: 130px; float: right">New Forum</a> | |||||
<div style="clear: both"> </div> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['forums_list']); $i++) | |||||
{ | |||||
if ($i > 0) | |||||
{ | |||||
if ($this->TPL['forums_list'][$i-1]['category_id'] != $this->TPL['forums_list'][$i]['category_id']) | |||||
echo '</div><br><div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">'.$this->TPL['forums_list'][$i]['category_name'].'</div> | |||||
<div class="hc2 hcpost" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=edcat&id='.$this->TPL['forums_list'][$i]['category_id'].'"> | |||||
Edit » | |||||
</a> | |||||
</div> | |||||
<div class="hc4 hcpost" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=delcat&id='.$this->TPL['forums_list'][$i]['category_id'].'"> | |||||
Delete » | |||||
</a> | |||||
</div> | |||||
</div>'; | |||||
} | |||||
else | |||||
{ | |||||
echo '<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">'.$this->TPL['forums_list'][$i]['category_name'].'</div> | |||||
<div class="hc2 hcpost" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=edcat&id='.$this->TPL['forums_list'][$i]['category_id'].'"> | |||||
Edit » | |||||
</a> | |||||
</div> | |||||
<div class="hc4 hcpost" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=delcat&id='.$this->TPL['forums_list'][$i]['category_id'].'"> | |||||
Delete » | |||||
</a> | |||||
</div> | |||||
</div>'; | |||||
} | |||||
if ($this->TPL['forums_list'][$i]['forum_id'] != null) | |||||
{ | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1"> | |||||
<span class="sect">'.$this->TPL['forums_list'][$i]['forum_name'].'</span><br> | |||||
<span class="fsmall">'.$this->TPL['forums_list'][$i]['forum_desc'].'</span></div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc2" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=edforum&id='.$this->TPL['forums_list'][$i]['forum_id'].'" class="btn_small">Edit</a> | |||||
</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc4" style="width: 70px"> | |||||
<a href="index.php?mode=admin&submode=delforum&id='.$this->TPL['forums_list'][$i]['forum_id'].'" class="btn_small">Delete</a> | |||||
</div>'."\n"; | |||||
echo "\t\t".'</div>'."\n"; | |||||
} | |||||
else | |||||
{ | |||||
echo '<div class="rcol">No forums in this category.</div>'; | |||||
} | |||||
} | |||||
?> | |||||
<? if (count($this->TPL['forums_list']) > 0) echo '</div>'; ?> | |||||
<br> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,289 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="392" | |||||
height="425" | |||||
id="svg2" | |||||
version="1.1" | |||||
inkscape:version="0.47pre4 r22446" | |||||
sodipodi:docname="uf_logo.svg"> | |||||
<defs | |||||
id="defs4"> | |||||
<linearGradient | |||||
id="linearGradient3656"> | |||||
<stop | |||||
id="stop3658" | |||||
offset="0" | |||||
style="stop-color:#03006f;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3660" | |||||
offset="1" | |||||
style="stop-color:#7549b4;stop-opacity:1;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3637"> | |||||
<stop | |||||
id="stop3639" | |||||
offset="0" | |||||
style="stop-color:#ff2d00;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3641" | |||||
offset="1" | |||||
style="stop-color:#ffc200;stop-opacity:1;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3661"> | |||||
<stop | |||||
style="stop-color:#ffff0c;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3663" /> | |||||
<stop | |||||
style="stop-color:#ff411b;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop3665" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3627"> | |||||
<stop | |||||
style="stop-color:#7e4eec;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3629" /> | |||||
<stop | |||||
id="stop3651" | |||||
offset="1" | |||||
style="stop-color:#b181f9;stop-opacity:0.49803922;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3593"> | |||||
<stop | |||||
style="stop-color:#fdfdfd;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3619" /> | |||||
<stop | |||||
style="stop-color:#f3f3f3;stop-opacity:0;" | |||||
offset="1" | |||||
id="stop3597" /> | |||||
</linearGradient> | |||||
<inkscape:perspective | |||||
sodipodi:type="inkscape:persp3d" | |||||
inkscape:vp_x="0 : 526.18109 : 1" | |||||
inkscape:vp_y="0 : 1000 : 0" | |||||
inkscape:vp_z="744.09448 : 526.18109 : 1" | |||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | |||||
id="perspective10" /> | |||||
<inkscape:perspective | |||||
id="perspective3648" | |||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |||||
inkscape:vp_z="1 : 0.5 : 1" | |||||
inkscape:vp_y="0 : 1000 : 0" | |||||
inkscape:vp_x="0 : 0.5 : 1" | |||||
sodipodi:type="inkscape:persp3d" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3593" | |||||
id="linearGradient3617" | |||||
x1="179.83696" | |||||
y1="592.03351" | |||||
x2="470.73511" | |||||
y2="800.63373" | |||||
gradientUnits="userSpaceOnUse" | |||||
spreadMethod="pad" | |||||
gradientTransform="translate(-103.28948,-3.2894722)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3627" | |||||
id="linearGradient3633" | |||||
x1="203.92857" | |||||
y1="685.79077" | |||||
x2="373.12314" | |||||
y2="685.79077" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(-103.28948,-3.2894722)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3661" | |||||
id="linearGradient3667" | |||||
x1="175.7372" | |||||
y1="704.34076" | |||||
x2="411.27054" | |||||
y2="704.34076" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(0.65789474,-74.342105)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3656" | |||||
id="linearGradient3654" | |||||
x1="35.421013" | |||||
y1="1176.5903" | |||||
x2="216.89119" | |||||
y2="1176.5903" | |||||
gradientUnits="userSpaceOnUse" /> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3661" | |||||
id="radialGradient3671" | |||||
cx="120.95009" | |||||
cy="158.30397" | |||||
fx="120.95009" | |||||
fy="158.30397" | |||||
r="56.21793" | |||||
gradientTransform="matrix(1,0,0,0.97391725,0,4.1290024)" | |||||
gradientUnits="userSpaceOnUse" /> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="1" | |||||
inkscape:cx="293.30863" | |||||
inkscape:cy="236.8775" | |||||
inkscape:document-units="px" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
inkscape:window-width="1400" | |||||
inkscape:window-height="998" | |||||
inkscape:window-x="0" | |||||
inkscape:window-y="0" | |||||
inkscape:window-maximized="1" /> | |||||
<metadata | |||||
id="metadata7"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title></dc:title> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-19.712531,-534.11398)"> | |||||
<path | |||||
style="fill:#c1b6af;fill-opacity:1;stroke:#333333;stroke-width:1.35215460999999992px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 38.543346,554.26267 c 121.746544,-23.52918 230.267474,-22.35482 344.838384,0 20.55724,99.4991 23.37603,191.82013 -6.32731,259.70332 -29.62138,17.3006 -216.86506,25.8575 -335.347434,2.9851 -24.41612,-83.88895 -29.30521,-170.84875 -3.16364,-262.68842 z" | |||||
id="path3614" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:url(#linearGradient3617);fill-opacity:1;stroke:#333333;stroke-width:1.06500006000000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
d="m 75.481966,584.62058 c 98.408524,-18.05257 186.126674,-17.15158 278.735104,0 16.61655,76.33986 18.89499,147.17242 -5.11442,199.25522 -23.94313,13.2738 -175.29344,19.83905 -271.063484,2.29036 C 58.303446,721.803 54.351576,655.0838 75.481966,584.62058 z" | |||||
id="path3614-6" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:#c1b6af;stroke:#1a1a1a;stroke-width:1.18485594000000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" | |||||
d="m 128.78534,827.71059 c 55.82779,4.00558 109.72,3.77923 161.47265,0.79576 0.25391,14.22607 1.39995,27.15853 27.82212,46.23231 -79.95656,14.53314 -159.56037,11.12398 -222.458974,-2.31576 17.682194,-10.59777 32.975424,-27.96809 33.164204,-44.71231 z" | |||||
id="path3662" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:url(#linearGradient3633);fill-opacity:1;stroke:#668000;stroke-width:0.54194838px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 100.91006,591.55796 139.43848,0 c 45.61241,83.74005 31.67333,137.30619 0,181.88663 l -139.43848,0 c 51.3425,-53.23528 29.51784,-117.00702 0,-181.88663 z" | |||||
id="path2818" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3598" | |||||
d="m 131.40417,737.78812 c 1.23778,-2.81789 2.5533,-5.61187 3.79115,-8.43289 0.66498,-1.48844 1.10648,-3.04589 1.67663,-4.56384 0.0502,-0.13353 0.71012,-1.85987 0.86986,-1.95947 2.18608,-1.36299 4.54115,-2.48557 6.81172,-3.72835 0.26168,0.24264 0.57099,0.44911 0.78504,0.7279 0.35077,0.45686 1.32121,2.45945 1.47912,2.80362 1.0737,2.34021 1.95087,4.75351 2.86256,7.14837 1.45643,3.11721 1.95694,6.70902 4.11567,9.52234 1.31377,1.32079 3.03783,1.21345 4.71924,0.61471 3.30002,-1.6801 -3.19164,1.67618 -4.80089,2.49251 -0.26723,0.13553 0.51533,-0.30027 0.77394,-0.44906 0.27707,-0.15942 0.54967,-0.32571 0.83308,-0.47557 7.25426,-3.83571 4.71074,-2.8128 8.09562,-4.12571 1.80565,-0.54791 3.71519,-0.62248 5.60053,-0.68206 1.94522,0.0322 3.85317,-0.33241 5.74334,-0.69977 1.90587,-0.37491 3.85767,-0.4588 5.79981,-0.52651 1.91632,0.0435 3.79344,-0.13759 5.58944,-0.75915 0.30693,-0.12674 0.61609,-0.24909 0.92079,-0.38022 0.68065,-0.29292 2.65134,-1.2999 1.99811,-0.95898 -12.07421,6.30156 -1.23404,0.58483 2.95405,-1.55222 1.7444,-0.79466 2.94624,-1.47753 4.83846,-0.71617 0.98022,0.77608 2.00142,1.33962 3.26461,1.61232 1.78607,0.23155 3.59822,0.21232 5.39826,0.22 1.98081,0.0696 3.73625,0.95293 5.6207,1.41607 1.71237,0.34653 3.46779,0.41788 5.21506,0.45432 1.8518,0.23001 2.7866,-0.32061 4.38081,-0.95219 -1.07766,0.55275 4.06357,-2.07919 2.80336,-1.41341 -1.86743,0.98658 -15.38166,8.05177 1.3008,-0.6733 1.54793,-0.65008 2.43154,-0.69117 4.00859,-0.17082 1.26218,0.72559 2.68347,1.00205 4.14216,1.16858 1.81808,0.0161 3.55796,-0.48675 5.32857,-0.79235 1.56075,-0.34244 2.76087,0.42449 3.93458,1.24349 0.96794,0.65036 2.00292,0.846 3.16511,0.6769 1.14932,-0.20107 2.31892,-0.24333 3.48232,-0.32715 0.49375,-0.11641 0.5855,0.25538 0.75924,0.60186 0,0 -6.66977,3.29773 -6.66977,3.29773 l 0,0 c 0.20513,0.152 0.13407,0.2077 -0.16367,0.18469 -1.16383,0.064 -2.31653,0.20665 -3.47391,0.32896 -1.27816,0.007 -2.44508,-0.387 -3.46377,-1.09535 -1.09799,-0.75007 -2.16115,-1.14229 -3.55052,-0.78526 -1.80587,0.33197 -3.61697,0.78999 -5.47744,0.60632 -1.48814,-0.22211 -2.89625,-0.60991 -4.24019,-1.24278 -1.2999,-0.31834 -2.47308,0.0113 -3.63325,0.60397 13.52536,-7.1587 0.15799,0.10769 -4.13212,2.03677 -1.49295,0.61517 -2.93782,0.88493 -4.58863,0.70992 -1.78328,-0.0678 -3.5733,-0.18793 -5.30719,-0.60051 -1.8136,-0.49721 -3.54728,-1.30519 -5.48519,-1.27698 -1.85652,-0.015 -3.74154,0.0328 -5.56425,-0.33755 -1.22665,-0.36239 -2.23631,-0.98634 -3.28776,-1.64963 -1.59233,-0.35131 -3.03692,0.49641 -4.41186,1.14688 -0.32664,0.16531 -1.30177,0.66884 -0.97991,0.49591 1.78829,-0.96083 7.17415,-3.81066 5.3795,-2.85975 -3.37394,1.78771 -6.69488,3.88001 -10.3774,5.16784 -1.86688,0.48937 -3.77648,0.61953 -5.71534,0.60781 -1.92246,0.0821 -3.846,0.2191 -5.72595,0.61791 -1.91652,0.36808 -3.86285,0.59703 -5.82454,0.61281 -1.84191,0.0829 -3.70903,0.20594 -5.42093,0.89021 -2.68633,1.20616 -1.42269,0.66023 4.74668,-2.58834 0.54727,-0.28818 -1.06068,0.62753 -1.60567,0.91931 -7.22804,3.86972 -4.68048,2.86751 -8.10138,4.15712 -1.99144,0.43109 -3.88812,0.18874 -5.23345,-1.35161 -2.08094,-2.94939 -2.57108,-6.56319 -4.00186,-9.77965 -0.87955,-2.3278 -0.98372,-2.69676 -1.99103,-4.98765 -0.52983,-1.20497 -1.44053,-3.46858 -2.39353,-4.50457 -0.0722,-0.0784 -0.2155,-0.0575 -0.32324,-0.0862 1.97667,-1.11688 3.87886,-2.3517 5.93001,-3.35065 0.26815,-0.13059 -0.35685,0.45222 -0.49021,0.70137 -0.20363,0.38045 -0.35634,0.78214 -0.5165,1.1795 -0.61552,1.52716 -1.05323,3.10818 -1.71139,4.62199 -1.19081,2.75144 -2.3513,5.52102 -3.69467,8.21317 0,0 -6.76111,3.03249 -6.76111,3.03249 z" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3602" | |||||
d="m 143.92618,682.44467 c 2.65584,-1.19892 5.30323,-2.40662 8.05899,-3.41274 2.7316,-1.16963 3.66903,-1.78228 6.50206,-0.51167 2.51199,1.14187 4.74557,2.67666 6.87008,4.33182 1.65933,1.33716 2.9811,2.92373 4.84714,4.03366 2.56807,1.21945 3.88507,1.37668 6.62007,0.59879 2.56802,-0.88425 5.09072,-1.87112 7.71028,-2.62341 1.97244,-0.73518 4.0124,-1.17263 6.1269,-1.356 2.11832,-0.11812 4.21741,-0.0398 6.30855,-0.4049 2.51036,-0.62665 4.98747,-1.34077 7.54748,-1.78289 2.79399,-0.53281 4.52708,0.45813 6.48874,2.13139 1.36678,1.35604 2.61242,2.78483 4.6444,3.242 1.76594,0.17998 3.51497,-0.0995 5.27254,0.15077 2.30886,0.52709 4.37266,1.61836 6.63534,2.27377 2.30103,0.58513 4.30549,0.64262 6.56424,-0.0745 2.35354,-1.02973 4.85289,-1.74653 7.24083,-2.69399 1.51304,-0.65864 3.16475,-0.9207 4.79455,-1.2187 1.53542,-0.48955 3.11743,-0.81383 4.68524,-1.19804 1.80244,-0.41279 3.66971,-0.44993 5.517,-0.50125 1.8726,-0.0426 3.74597,-0.0358 5.619,-0.0361 0.25304,0.033 0.50607,0.066 0.75911,0.0991 0,0 -5.01472,3.24367 -5.01472,3.24367 l 0,0 c -0.23596,-0.0182 -0.47191,-0.0364 -0.70787,-0.0546 -1.86357,-0.004 -3.72755,-0.008 -5.59053,0.0423 -1.83234,0.0667 -3.67892,0.1552 -5.452,0.62047 -1.56252,0.40407 -3.14776,0.72549 -4.69959,1.16503 -1.6063,0.32579 -3.21935,0.62607 -4.71059,1.29041 -2.42219,0.875 -4.85297,1.72883 -7.26016,2.63924 -2.28771,0.55495 -4.53382,0.46438 -6.79976,-0.19359 -2.20723,-0.69475 -4.25698,-1.7839 -6.56813,-2.18165 -1.78492,-0.14067 -3.59069,0.15929 -5.35378,-0.21913 -2.01662,-0.66661 -3.35673,-2.04201 -4.76488,-3.46779 -1.93017,-1.59553 -3.50443,-2.26435 -6.15463,-1.7063 -2.55369,0.48675 -5.02755,1.23159 -7.56578,1.77625 -2.1074,0.28893 -4.22756,0.21669 -6.34717,0.39064 -2.07379,0.2407 -4.06569,0.74483 -6.02067,1.42331 -2.61286,0.78816 -5.13049,1.80468 -7.73624,2.6128 -2.81604,0.63034 -4.3925,0.28922 -6.93004,-0.98292 -1.86308,-1.14741 -3.19522,-2.74566 -4.86395,-4.10255 -2.08966,-1.61986 -4.29262,-3.12977 -6.79361,-4.18883 -0.3439,-0.12602 -0.67398,-0.2896 -1.03168,-0.37806 -1.81963,-0.45001 -3.53163,0.6603 -5.14605,1.22937 -2.76867,1.0536 -5.43273,2.29369 -8.13332,3.47822 0,0 4.83261,-3.48332 4.83261,-3.48332 z" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3608" | |||||
d="m 131.58,629.5385 c 0.40641,-0.0886 0.8139,-0.17314 1.21923,-0.26576 1.90423,-0.43514 3.71046,-0.95078 5.48259,-1.73792 0.73544,-0.32666 2.85008,-1.46079 2.16725,-1.04997 -0.96359,0.57976 -2.00818,1.03892 -3.01227,1.55838 3.40539,-1.90834 6.82327,-3.79714 10.33938,-5.53513 0.99363,-0.49114 1.89689,-0.60017 2.95314,-0.35866 1.03645,0.71906 1.99576,1.38312 3.27775,1.66344 1.46699,0.28784 2.97675,0.15775 4.44974,0.36766 1.97805,0.32354 3.35054,1.22646 4.53208,2.67038 0.78786,1.25771 1.18897,2.47397 3.00563,2.353 1.47015,-0.41913 2.83438,-0.141 4.29168,0.13257 1.6649,0.57549 2.93104,0.83763 4.57762,0.0924 -10.41309,5.7597 -0.34556,-0.609 3.4424,-1.54194 0.82893,-0.20416 0.81752,-0.15054 1.61225,-0.10677 0.19826,0.0758 0.40881,0.1291 0.59477,0.22749 0.21674,0.11469 0.7783,0.57254 0.99681,0.70408 0.56573,0.34059 1.198,0.51578 1.84005,0.68972 -0.31066,0.72411 3.16713,-1.28849 2.28518,-0.85372 -7.31723,3.60712 -4.77403,2.79229 -3.09965,1.0761 1.44822,-1.72733 4.70695,-5.07497 6.55675,-3.20432 0.452,0.4571 0.58023,1.17021 0.7913,1.73333 0.53243,1.0816 1.88503,1.52918 3.10313,1.31014 0.21379,-0.12258 0.86305,-0.47798 0.64135,-0.36772 -1.52287,0.7574 -3.01006,1.57448 -4.54595,2.30967 -0.26195,0.12539 0.46236,-0.33969 0.71708,-0.47689 1.94471,-1.04751 3.84425,-2.17767 5.87719,-3.07508 0.50465,-0.22277 1.03222,0.71195 1.14416,0.85435 0.80817,1.4344 0.31293,3.24516 1.36034,4.56744 0.13252,-0.0107 0.28506,0.0326 0.39756,-0.0321 0.22043,-0.12691 0.78541,-0.60422 0.54566,-0.51091 -1.48391,0.57748 -2.75507,1.64228 -4.3249,1.98168 -0.55036,0.11899 0.67141,-0.83078 0.98562,-1.25972 0.34218,-0.46713 1.75442,-2.55791 2.07835,-3.03533 1.33337,-1.992 2.48138,-4.13555 4.21451,-5.87407 2.0196,-1.50323 1.74321,-1.34884 6.3167,-3.01285 0.30204,-0.1099 1.72461,1.93385 1.92649,2.21209 0.69469,1.26456 1.57995,2.19445 3.0635,2.63482 1.62446,0.20094 3.25489,0.36408 4.88414,0.56251 2.01631,0.22269 4.04901,0.25467 6.07732,0.28103 1.99626,0.0144 3.99263,0.0134 5.98894,0.0106 1.79648,-0.11631 3.55277,0.23974 5.33073,0.40091 2.27864,0.12128 4.56823,0.27357 6.80179,0.72023 1.42796,0.53866 2.79785,0.94207 4.346,0.91563 1.31361,-0.47903 2.7201,-0.55504 4.11506,-0.65344 1.69168,-0.1065 3.38767,-0.12628 5.08269,-0.13607 0.24535,-5.2e-4 0.49071,-8.7e-4 0.73606,-0.002 0,0 -4.97296,3.29738 -4.97296,3.29738 l 0,0 c -0.24422,5.2e-4 -0.48843,0.002 -0.73265,0.002 -1.68021,0.012 -3.36198,0.0341 -5.03736,0.16165 -1.41876,0.12737 -2.78703,0.41335 -4.18328,0.62723 -1.54198,-0.0684 -2.92246,-0.59022 -4.37738,-1.02441 -2.23175,-0.39326 -4.49537,-0.56207 -6.76275,-0.67534 -1.76413,-0.16646 -3.51533,-0.45866 -5.29797,-0.3524 -1.99449,-1.3e-4 -3.98911,0.006 -5.98339,-0.0262 -2.05002,-0.0354 -4.10467,-0.0698 -6.13976,-0.32161 -1.66272,-0.20978 -3.35834,-0.27922 -4.98423,-0.65377 -1.51597,-0.59001 -2.50182,-1.60106 -3.24368,-2.9411 -0.37417,-0.50308 -0.76822,-1.24851 -1.31275,-1.62868 -0.0914,-0.0638 -0.42067,-0.0477 -0.32503,-0.10606 2.97468,-1.81501 6.80494,-3.55818 4.35709,-2.43448 -1.92611,1.57949 -3.02428,3.83149 -4.3861,5.8001 -2.48313,3.66199 0.41088,-0.6146 -2.04479,3.04139 -0.29859,0.44454 -0.45189,1.00845 -0.90143,1.33045 -1.91103,1.36886 -4.00291,2.51783 -6.07896,3.66957 -0.72076,0.39986 -0.88686,0.16061 -1.47435,-0.12515 -0.9691,-1.3834 -0.72114,-3.03687 -1.33861,-4.54176 -0.0885,-0.0937 -0.13827,-0.23853 -0.26562,-0.28094 -0.12308,-0.041 -0.49773,0.12732 -0.38685,0.0637 1.51548,-0.87028 3.06162,-1.69659 4.6231,-2.49636 0.25877,-0.13254 -0.45529,0.35065 -0.70876,0.49148 -1.97572,1.09773 -3.9536,2.1942 -5.97423,3.22169 -0.23743,0.12072 -0.52082,0.14228 -0.78122,0.21342 -1.48375,-0.0651 -2.90806,-0.61387 -3.53834,-1.92262 -0.13674,-0.35473 -0.23054,-0.72335 -0.38448,-1.07218 -0.0372,-0.0843 -0.0715,-0.18674 -0.15842,-0.2311 -0.0574,-0.0293 -0.24421,0.0859 -0.1883,0.0542 5.15298,-2.91883 6.0182,-4.04173 4.41164,-2.18439 -1.97947,2.37925 -3.79146,2.74324 -7.30518,4.62297 -0.82616,0.44197 -1.65159,0.67112 -2.60685,0.49713 -0.70107,-0.22549 -1.3452,-0.46281 -1.96651,-0.84257 -0.26939,-0.16465 -0.57058,-0.43132 -0.8846,-0.54221 -0.14917,-0.0527 -0.31334,-0.0589 -0.47001,-0.0884 -0.862,0.0623 -1.58882,0.25866 -2.38442,0.58175 -0.30847,0.12526 -1.19756,0.56795 -0.90809,0.40939 1.56908,-0.85954 12.50342,-6.54807 -1.6137,0.81295 -1.67309,0.45034 -3.1701,0.17295 -4.79573,-0.34237 -1.44049,-0.25783 -2.79077,-0.27898 -4.24424,-0.0639 -1.88103,-0.27696 -2.44997,-1.33664 -3.27526,-2.77506 -1.10749,-1.32802 -2.44221,-2.07153 -4.2828,-2.28478 -1.50295,-0.13144 -3.0328,-0.0826 -4.50608,-0.4336 -1.21647,-0.35595 -2.15788,-1.03112 -3.24127,-1.61089 -0.67724,-0.0372 -0.70135,-0.0881 -1.44789,0.14337 -0.39951,0.12386 -1.51694,0.66417 -1.16478,0.45215 1.17473,-0.70725 2.42272,-1.30785 3.64462,-1.94515 1.26027,-0.65731 -5.32062,2.86371 -3.7197,2.0663 -5.38855,2.84032 -10.17803,5.75064 -16.31143,6.85681 0,0 4.88854,-3.40925 4.88854,-3.40925 z" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:#d0c9c4;fill-opacity:1;stroke:#666666;stroke-width:1.06500006000000003;stroke-miterlimit:4;stroke-dasharray:none" | |||||
id="path3637" | |||||
sodipodi:cx="446.76724" | |||||
sodipodi:cy="806.88806" | |||||
sodipodi:rx="10.129311" | |||||
sodipodi:ry="10.129311" | |||||
d="m 456.89655,806.88806 a 10.129311,10.129311 0 1 1 -20.25862,0 10.129311,10.129311 0 1 1 20.25862,0 z" | |||||
transform="matrix(0.79786056,0,0,0.79786056,-29.352526,165.93576)" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:#d0c9c4;fill-opacity:1;stroke:#b3b3b3;stroke-width:1.06500006000000003;stroke-miterlimit:4;stroke-dasharray:none" | |||||
id="path3639" | |||||
sodipodi:cx="432.6825" | |||||
sodipodi:cy="812.63739" | |||||
sodipodi:rx="3.348757" | |||||
sodipodi:ry="3.4642315" | |||||
d="m 436.03125,812.63739 a 3.348757,3.4642315 0 1 1 -6.69751,0 3.348757,3.4642315 0 1 1 6.69751,0 z" | |||||
transform="translate(-105.54412,-2.7589622)" /> | |||||
<path | |||||
style="fill:#666666;fill-opacity:1;stroke:#b3b3b3;stroke-width:0.92901093px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 327.15554,804.5324 0,4.15222" | |||||
id="path3647" | |||||
sodipodi:nodetypes="cc" /> | |||||
<flowRoot | |||||
xml:space="preserve" | |||||
id="flowRoot2837" | |||||
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
transform="translate(19.712531,534.11398)"><flowRegion | |||||
id="flowRegion2839"><rect | |||||
id="rect2841" | |||||
width="378.94736" | |||||
height="59.210526" | |||||
x="3.2894738" | |||||
y="354.60526" /></flowRegion><flowPara | |||||
id="flowPara2843" /></flowRoot> <text | |||||
xml:space="preserve" | |||||
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
x="157.23685" | |||||
y="390.78946" | |||||
id="text2845" | |||||
transform="translate(19.712531,534.11398)"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan2847" /></text> | |||||
<text | |||||
xml:space="preserve" | |||||
style="font-size:491.34445190000002412px;font-style:normal;font-weight:normal;line-height:125%;fill:url(#linearGradient3654);fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
x="29.149523" | |||||
y="1197.3451" | |||||
id="text3643" | |||||
transform="scale(1.2794953,0.78155817)" | |||||
sodipodi:linespacing="125%"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan3645" | |||||
x="29.149523" | |||||
y="1197.3451" | |||||
style="font-size:80.27507018999997968px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Arial;-inkscape-font-specification:Arial;fill-opacity:1;fill:url(#linearGradient3654)">µForum</tspan></text> | |||||
<path | |||||
sodipodi:type="star" | |||||
style="fill:url(#radialGradient3671);fill-opacity:1;stroke:none" | |||||
id="path3663" | |||||
sodipodi:sides="5" | |||||
sodipodi:cx="119.62617" | |||||
sodipodi:cy="153.97195" | |||||
sodipodi:r1="58.707661" | |||||
sodipodi:r2="13.366334" | |||||
sodipodi:arg1="0.24111768" | |||||
sodipodi:arg2="-0.07032258" | |||||
inkscape:flatsided="false" | |||||
inkscape:rounded="0" | |||||
inkscape:randomized="0" | |||||
d="m 176.63551,167.99065 -43.67605,-14.95788 -9.049,59.49031 0.72914,-46.16063 -59.374944,9.7774 44.126684,-13.57097 -27.646723,-53.44754 26.542653,37.77331 42.28832,-42.80979 -27.72242,36.91615 53.78234,26.98964 z" | |||||
transform="matrix(1.4489505,0,0,1.4094179,14.29205,492.45047)" /> | |||||
<path | |||||
style="fill:url(#linearGradient3667);fill-opacity:1;stroke:#000000;stroke-width:1.26388943000000009px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 395.07143,542.23523 -161.4278,96.02682 c 39.86364,-7.02254 6.25927,1.13166 105.53238,-15.13393 l -137.07575,75.31075 11.13295,-30.72859 -36.20618,50.05181 64.26014,-8.23606 -29.90946,-4.68537 168.3403,-94.86433 -100.81192,13.03751 132.39039,-80.34077 -16.22505,-0.43784 z" | |||||
id="path3610" | |||||
sodipodi:nodetypes="cccccccccccc" /> | |||||
</g> | |||||
</svg> |
@ -0,0 +1,489 @@ | |||||
body { | |||||
font-family: Helvetica; | |||||
font-size: 11pt; | |||||
background-color: #E5E7E9; | |||||
} | |||||
#container { | |||||
width: 900px; | |||||
background-color: lightgray; | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
border: 2px solid #551c1c; | |||||
border-collapse: collapse; | |||||
border-radius: 10px; | |||||
} | |||||
a, a:visited { | |||||
text-decoration: none; | |||||
} | |||||
img { | |||||
border: 0px; | |||||
} | |||||
a:hover { | |||||
color: #551c1c; | |||||
text-decoration: underline; | |||||
} | |||||
a { | |||||
color: #000000; | |||||
} | |||||
#container #top { | |||||
width: 100%; | |||||
background-color: lightgray; | |||||
height: 70px; | |||||
vertical-align: middle; | |||||
padding-top: 20px; | |||||
border-bottom: 1px solid #777777; | |||||
border-top-left-radius: 10px; | |||||
border-top-right-radius: 10px; | |||||
} | |||||
#container #userpanel { | |||||
text-align: right; | |||||
font-size: 0.8em; | |||||
width: 100%; | |||||
} | |||||
#container #navi_bar | |||||
{ | |||||
padding-left: 10px; | |||||
text-align: left; | |||||
width: 100%; | |||||
} | |||||
#container #top h1 | |||||
{ | |||||
margin: 0px; | |||||
position: relative; | |||||
top: 0%; | |||||
color: #551c1c; | |||||
font-size: 36pt; | |||||
font-weight: bold; | |||||
} | |||||
#container #top h2 | |||||
{ | |||||
color: #005AE5; | |||||
font-size: 20px; | |||||
text-decoration: none; | |||||
font-weight: bold; | |||||
} | |||||
#container #footer | |||||
{ | |||||
width: 100%; | |||||
background-color: #551c1c; | |||||
font-size: 8pt; | |||||
color: #FFFFFF; | |||||
height: 18px; | |||||
line-height: 18px; | |||||
border-bottom-left-radius: 5px; | |||||
border-bottom-right-radius: 5px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
#container #footer a | |||||
{ | |||||
color: #FFFFFF; | |||||
} | |||||
#contanier #footer a:visited | |||||
{ | |||||
color: #FFFFFF; | |||||
} | |||||
#container #content { | |||||
text-align: left; | |||||
min-height: 200px; | |||||
padding: 10px; | |||||
} | |||||
#container #content h3 { | |||||
margin-left: 20px; | |||||
color: gray; | |||||
font-size: 1.5em; | |||||
} | |||||
#container #content table { | |||||
border: 1px solid; | |||||
border-collapse: collapse; | |||||
} | |||||
#container #content table td { | |||||
border: 1px solid; | |||||
border-color: orange; | |||||
border-collapse: collapse; | |||||
font-size: 10pt; | |||||
background-color: #ffffbd; | |||||
text-align: center; | |||||
} | |||||
#container #content table .heading { | |||||
background-color: orange; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
} | |||||
#container #menu { | |||||
text-align: center; | |||||
margin: 0 auto; | |||||
width: 100%; | |||||
height: 50px; | |||||
background-color: #99CCFF; | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
#container #menu ul { | |||||
list-style-type: none; | |||||
margin: 0px; | |||||
padding: 0px; | |||||
} | |||||
#container #menu li { | |||||
display: inline-block; | |||||
border-right: 1px #9A9A9A solid; | |||||
height: 37px; | |||||
width: 120px; | |||||
padding-top: 13px; | |||||
margin: auto -4px auto auto; | |||||
} | |||||
#container #menu li:hover { | |||||
} | |||||
#container #menu li a { | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
font-family: Verdana; | |||||
font-size: 14px; | |||||
font-weight: bold; | |||||
} | |||||
#container #menu li:last-child { | |||||
border: 0px; | |||||
} | |||||
.sect | |||||
{ | |||||
color: #434354; | |||||
font-family: Verdana; | |||||
font-size: 10pt; | |||||
font-weight: bold; | |||||
text-decoration: none; | |||||
} | |||||
.navigation { | |||||
color: #551c1c; | |||||
text-decoration: none; | |||||
font-size: 12px; | |||||
font-weight: bold; | |||||
} | |||||
.forum_table { | |||||
display: table; | |||||
width: 100%; | |||||
border-collapse: separate; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.fsmall | |||||
{ | |||||
color: #434354; | |||||
font-size: 8pt; | |||||
text-decoration: none; | |||||
} | |||||
.row { | |||||
display: table-row; | |||||
width: 100%; | |||||
} | |||||
.row:last-child .tc1, .row:last-child .tc2, .row:last-child .tc3, .row:last-child .tc4 | |||||
{ | |||||
border-bottom: 1px solid #551c1c; | |||||
} | |||||
.rcol | |||||
{ | |||||
display: table-caption; | |||||
border: 1px solid #551c1c; | |||||
border-collapse: collapse; | |||||
background-color: #e1f0ff; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
border-top: 0px; | |||||
caption-side: bottom; | |||||
text-align: center; | |||||
font-style: italic; | |||||
} | |||||
.tc1, .tc2, .tc3, .tc4 | |||||
{ | |||||
display: table-cell; | |||||
background-color: #F0F8FF; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
word-wrap: break-word; | |||||
} | |||||
.tc1 | |||||
{ | |||||
border-left: 1px solid #551c1c; | |||||
} | |||||
.tc2, .tc3 | |||||
{ | |||||
vertical-align: middle; | |||||
text-align: center; | |||||
} | |||||
.tc4 { | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 150px; | |||||
border-right: 1px solid #551c1c; | |||||
} | |||||
.hc1, .hc2, .hc3, .hc4 | |||||
{ | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
background-color: yellow; | |||||
vertical-align: middle; | |||||
display: table-cell; | |||||
padding-left: 15px; | |||||
background-image: url('images/category_beam.gif'); | |||||
height: 30px; | |||||
border-top: 1px solid #551c1c; | |||||
word-wrap: break-word; | |||||
} | |||||
.hc1 { | |||||
border-top-left-radius: 10px; | |||||
border-left: 1px solid #551c1c; | |||||
} | |||||
.hc4 { | |||||
border-top-right-radius: 10px; | |||||
border-right: 1px solid #551c1c; | |||||
width: 150px; | |||||
} | |||||
.tab_desc { | |||||
text-align: center; | |||||
font-weight: bold; | |||||
color: #551c1c; | |||||
background-image: url('images/td_beam_top.gif'); | |||||
height: 19px; | |||||
} | |||||
.lc { | |||||
width: 30%; | |||||
text-align: right; | |||||
margin-right: 10px; | |||||
} | |||||
.rc { | |||||
width: 70%; | |||||
text-align: left; | |||||
margin-left: 10px; | |||||
} | |||||
.rc input[type="text"], input[type="password"], input[type="email"] { | |||||
width: 200px; | |||||
} | |||||
input[type="button"], input[type="reset"], input[type="submit"] { | |||||
border-radius: 5px; | |||||
background-color: #f8e3e3; | |||||
padding: 5px; | |||||
border: 1px solid #f8d6d6; | |||||
min-width: 30px; | |||||
font-size: 12px; | |||||
color: #A30000; | |||||
cursor: pointer; | |||||
} | |||||
input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover | |||||
{ | |||||
background-color: #f8f1f1; | |||||
} | |||||
#signature { | |||||
width: 490px; | |||||
height: 60px; | |||||
resize: vertical; | |||||
} | |||||
#post { | |||||
width: 490px; | |||||
height: 180px; | |||||
resize: vertical; | |||||
} | |||||
#signature, #post, input[type="text"], input[type="password"], input[type="email"], select | |||||
{ | |||||
border-radius: 5px; | |||||
border: 1px solid #C7E2FB; | |||||
min-height: 20px; | |||||
font-size: 12px; | |||||
background-color: #FFFFE8; | |||||
} | |||||
.error_form | |||||
{ | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
width: 90%; | |||||
border: 1px solid #FF0000; | |||||
background-color: #FFCC99; | |||||
padding: 10px; | |||||
color: #FF0000; | |||||
border-radius: 10px; | |||||
font-weight: bold; | |||||
} | |||||
.fadmin, .fmod | |||||
{ | |||||
font-weight: bold; | |||||
} | |||||
.fmod | |||||
{ | |||||
color: darkgreen; | |||||
} | |||||
.fadmin | |||||
{ | |||||
color: orange; | |||||
} | |||||
.btn | |||||
{ | |||||
width: 90px; | |||||
height: 30px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 1em; | |||||
background-image: url('images/button_beam.gif'); | |||||
border-radius: 10px; | |||||
line-height: 30px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.btn_small | |||||
{ | |||||
width: 60px; | |||||
height: 20px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 0.8em; | |||||
background-image: url('images/button_beam.gif'); | |||||
border-radius: 10px; | |||||
margin: 0 auto; | |||||
line-height: 20px; | |||||
margin-top: 3px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.ut | |||||
{ | |||||
padding: 0px; | |||||
border-left: 0px; | |||||
} | |||||
.tc1 .forum_table .tc1, .tc1 .forum_table .tc2, .tc1 .forum_table .tc3 { | |||||
border: 0px; | |||||
border-top: 1px solid lightgray; | |||||
} | |||||
.mod_pool | |||||
{ | |||||
margin: 0 auto; | |||||
width: 90%; | |||||
background-color: #FFFF99; | |||||
text-align: center; | |||||
padding: 5px; | |||||
border: 1px solid orange; | |||||
border-radius: 10px; | |||||
} | |||||
hr { | |||||
border: 0; | |||||
border-bottom: 1px dashed #ccc; | |||||
background: #999; | |||||
width: 50%; | |||||
margin: 0; | |||||
margin-top: 5px; | |||||
} | |||||
.hcpost | |||||
{ | |||||
height: 10px; | |||||
} | |||||
.f_hc4 | |||||
{ | |||||
text-align: right; | |||||
padding-right: 10px; | |||||
} | |||||
.post_3c | |||||
{ | |||||
width: 120px; | |||||
} | |||||
.f_tc2 | |||||
{ | |||||
width: 120px; | |||||
vertical-align: top; | |||||
height: 150px; | |||||
text-align: center; | |||||
} | |||||
.topic_mod | |||||
{ | |||||
width: 80px; | |||||
float: right; | |||||
} | |||||
.p_uinfo | |||||
{ | |||||
width: 38%; | |||||
} | |||||
.post_content | |||||
{ | |||||
vertical-align: top; | |||||
position: relative; | |||||
text-align: left; | |||||
max-width: 500px; | |||||
} | |||||
.row .hcpost a { | |||||
color: #FFFFFF; | |||||
} | |||||
.qpost | |||||
{ | |||||
background-color: #DDDAC5; | |||||
width: 95%; | |||||
font-style: italic; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} | |||||
.cpost | |||||
{ | |||||
background-color: #C5DDCC; | |||||
width: 95%; | |||||
font-family: Courier New; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} |
@ -0,0 +1,112 @@ | |||||
<? require_once('./templates/admin/overall_header.tpl.php'); ?> | |||||
<script type="text/javascript"> | |||||
function confirm_action(c_name, url) | |||||
{ | |||||
if (confirm(c_name)) | |||||
{ | |||||
document.location = url; | |||||
} | |||||
} | |||||
</script> | |||||
<div id="content"> | |||||
<span class="fsmall"> | |||||
<span style="font-weight: bold">Welcome in µForum Admin Control Panel!</span><br> | |||||
Choose option from menu to manage forum.</span> | |||||
<br><br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1" style="width: 50%">Forum statistics</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Installation date: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['installation_date']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Topics total: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['topics_total']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Posts total: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['posts_total']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Users total: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['users_total']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Logged users total (last 5 min): | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['logged_users_total']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Script version: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['script_version']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Updates: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold">in future...</span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"">Logged users (last 5 min)</div> | |||||
<div class="hc3"> </div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Username</div> | |||||
<div class="tc3 tab_desc">Rank</div> | |||||
<div class="tc4 tab_desc">IP</div> | |||||
</div> | |||||
<? | |||||
for ($i=0; $i < count($this->TPL['logged_users']); $i++) | |||||
{ | |||||
echo ' | |||||
<div class="row"> | |||||
<div class="tc1 tc2">'.$this->TPL['logged_users'][$i]['nick'].'</div> | |||||
<div class="tc3">'.$this->getRankLevel($this->TPL['logged_users'][$i]['rank']).'</div> | |||||
<div class="tc4">'.$this->TPL['logged_users'][$i]['IP'].'</div> | |||||
</div>'; | |||||
} | |||||
if (count($this->TPL['logged_users']) == 0) | |||||
echo '<div class="rcol">No logged users.</div>'; | |||||
?> | |||||
</div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,46 @@ | |||||
<!DOCTYPE html> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |||||
<title><?= $this->TPL['meta_title']; ?></title> | |||||
<meta name="author" content="Piotr Dergun" /> | |||||
<meta name="generator" content="medit/1.2.0" /> | |||||
<link rel="stylesheet" href="templates/styles.css" type="text/css" /> | |||||
<link rel="stylesheet" href="templates/admin/admin.css" type="text/css" /> | |||||
</head> | |||||
<body> | |||||
<div id="container"> | |||||
<div id="top"> | |||||
<h1>µForum ACP</h1> | |||||
</div> | |||||
<div id="menu"> | |||||
<ul> | |||||
<li><a href="index.php?mode=admin">ACP Main</a></li> | |||||
<li><a href="index.php?mode=admin&submode=config">Configuration</a></li> | |||||
<li><a href="index.php?mode=admin&submode=forums">Forums</a></li> | |||||
<li><a href="index.php?mode=admin&submode=users">Users</a></li> | |||||
<li><a href="index.php?mode=admin&submode=banlist">Banlist</a></li> | |||||
<li><a href="index.php">Go to forum</a></li> | |||||
</ul> | |||||
</div> | |||||
<br> | |||||
<div id="userpanel"> | |||||
<? if ( $this->TPL['is_logged']) { ?> | |||||
You are logged as: <span style="font-weight: bold"><?= $this->TPL['my_nick'] ?></span> | |||||
<? } else { ?> | |||||
Welcome Guest! You are not logged. | |||||
<? } ?><br> | |||||
Actual time: <span style="font-weight: bold"><?= $this->TPL['actual_time']; ?></span><br> | |||||
</div> | |||||
<br> | |||||
<div id="navi_bar"> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['nav']); $i++) | |||||
{ | |||||
echo '<a href="'.$this->TPL['nav'][$i]['url'].'" class="navigation">'.$this->TPL['nav'][$i]['name'].'</a>'; | |||||
if ($i < count($this->TPL['nav'])-1) | |||||
echo ' » '; | |||||
} | |||||
?> | |||||
</div> |
@ -0,0 +1,73 @@ | |||||
<? require_once('./templates/admin/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<br /> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Users list</div> | |||||
<div class="hc2" style="width: 180px"> </div> | |||||
<div class="hc3" style="width: 180px"> </div> | |||||
<div class="hc3" style="width: 100px"> </div> | |||||
<div class="hc3" style="width: 70px"> </div> | |||||
<div class="hc4" style="width: 70px"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Username</div> | |||||
<div class="tc2 tab_desc" style="width: 180px">Joined</div> | |||||
<div class="tc3 tab_desc" style="width: 180px">Last visit</div> | |||||
<div class="tc3 tab_desc" style="width: 100px">Posts</div> | |||||
<div class="tc3 tab_desc" style="width: 70px"></div> | |||||
<div class="tc4 tab_desc" style="width: 70px"></div> | |||||
</div> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['users_list']); $i++) | |||||
{ | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1 tc3"> | |||||
<a href="index.php?mode=viewprofile&id='.$this->TPL['users_list'][$i]['user_id'].'"> | |||||
'.$this->colorRank($this->TPL['users_list'][$i]['nick'], $this->TPL['users_list'][$i]['rank']).' | |||||
</a> | |||||
</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3">'.$this->TPL['users_list'][$i]['regdate'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3">'.(($this->TPL['users_list'][$i]['lastvisit']!= null) ? $this->TPL['users_list'][$i]['lastvisit'] : 'Never').'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3" style="width: 100px">'.$this->TPL['users_list'][$i]['post_count'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3" style="width: 70px; margin: 0 auto; text-align: center"> | |||||
<a href="index.php?mode=admin&submode=eduser&id='.$this->TPL['users_list'][$i]['user_id'].'" class="btn_small">Edit</a></div> '."\n"; | |||||
echo "\t\t\t".'<div class="tc4" style="width: 70px; margin: 0 auto; text-align: center"> | |||||
<a href="index.php?mode=admin&submode=deluser&id='.$this->TPL['users_list'][$i]['user_id'].'" class="btn_small">Delete</a></div> '."\n"; | |||||
echo "\t\t".'</div>'."\n"; | |||||
} | |||||
?> | |||||
</div> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4 hcpost">Options</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4"> | |||||
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
Sort users by: | |||||
<select name="sort_type"> | |||||
<option value="regdate" <?= $this->TPL['regdate_selected']; ?>>Registration date</option> | |||||
<option value="lastvisit" <?= $this->TPL['lastvisit_selected']; ?>>Lastvisit</option> | |||||
<option value="nick" <?= $this->TPL['username_selected']; ?>>Username</option> | |||||
<option value="post_count" <?= $this->TPL['posts_selected']; ?>>Posts count</option> | |||||
</select> | |||||
| |||||
<input type="checkbox" name="sort_desc" value="Delete avatar" <?= $this->TPL['desc_checked']; ?> />Descending | |||||
<input type="submit" value="Sort"> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4">Select only users with rank: | |||||
<a href="index.php?mode=admin&submode=users&rank=admin"><?= $this->getRankLevel(RANK_ADMIN); ?></a> • | |||||
<a href="index.php?mode=admin&submode=users&rank=mod"><?= $this->getRankLevel(RANK_MOD); ?></a> • | |||||
<a href="index.php?mode=admin&submode=users&rank=user"><?= $this->getRankLevel(RANK_USER); ?></a></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,34 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div id="content"> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4">Confirm your action</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4" style="padding-top: 20px; padding-bottom: 20px"> | |||||
<?= $this->TPL['message']; ?> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4" style="padding-top: 20px; padding-bottom: 20px"> | |||||
<input type="hidden" name="confirmed" id="confirmed" value="true"> | |||||
<input type="submit" value="Yes" style="font-weight: bold"> | |||||
<input type="submit" name="rejected" value="No"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,175 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<script type="text/javascript"> | |||||
function checkForm() | |||||
{ | |||||
value = document.getElementById('passwd').value; | |||||
value2 = document.getElementById('passwd_confirm').value; | |||||
if (value != value2) | |||||
{ | |||||
alert("Password do not match!"); | |||||
return false; | |||||
} | |||||
if (document.getElementById('nick-inuse').style.display == 'inline') | |||||
{ | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
</script> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post" onsubmit="return checkForm();" enctype="multipart/form-data"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Basic informations</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Nick: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<? if ($this->TPL['is_admin']) {?> | |||||
<input type="text" maxlength="30" name="nick" id="nick" value="<?= $this->TPL['nick']; ?>" required pattern=".{3,}" required title="3 characters minimum"> | |||||
<? } else { ?> | |||||
<span style="font-weight: bold"><?= $this->TPL['nick']; ?></span> | |||||
<input type="hidden" maxlength="30" name="nick" id="nick" value="<?= $this->TPL['nick']; ?>"> | |||||
<? } ?> | |||||
</div> | |||||
</div> | |||||
<? if (!$this->TPL['is_admin']) {?> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Old password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd_old" id="passwd_old" value=""> (type only if you want to change password or email.) | |||||
</div> | |||||
</div> | |||||
<? } ?> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
New password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd" id="passwd" value=""> (type only if you want to change it.) | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Confirm password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd_confirm" id="passwd_confirm" value=""> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Email address: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="email" name="email" id="email" value="<?= $this->TPL['email']; ?>" required> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Edit profile"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Profile informations</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Location: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="40" name="location" id="location" value="<?= $this->TPL['location']; ?>"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Signature: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<textarea name="signature" id="signature" maxlength="300"><?= $this->TPL['signature']; ?></textarea> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Avatar: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
Current avatar:<br> | |||||
<img src="<? if ($this->TPL['avatar'] == null) echo 'templates/images/no_av.gif'; else echo $this->TPL['avatar']; ?>" alt="user avatar"><br> | |||||
<? if ($this->TPL['avatar'] != null) { ?> <input type="checkbox" name="delete_avatar" value="Delete avatar" /> Delete avatar<br> <? } ?> | |||||
<input type="file" name="avatar" id="avatar" value=""> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Edit profile"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? if ($this->TPL['is_admin']) {?> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Admin options</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
User rank: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="radio" name="user_rank" value="0" <?= $this->TPL['user_selected']; ?> > | |||||
User | |||||
<input type="radio" name="user_rank" value="1" <?= $this->TPL['mod_selected']; ?>> | |||||
<span class="fmod">Mod</span> | |||||
<input type="radio" name="user_rank" value="2" <?= $this->TPL['admin_selected']; ?>> | |||||
<span class="fadmin">Admin</span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Edit profile"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? } ?> | |||||
</form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,28 @@ | |||||
<? | |||||
if ($_GET['mode'] == 'admin') | |||||
require_once('./templates/admin/overall_header.tpl.php'); | |||||
else | |||||
require_once('./templates/overall_header.tpl.php'); | |||||
?> | |||||
<? if ($this->TPL['url'] != '') { ?> | |||||
<meta http-equiv="refresh" content="<?= $this->TPL['timeout']; ?>; url=<?= $this->TPL['url']; ?>"> | |||||
<? } ?> | |||||
<div id="content"> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4">Forum message</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4" style="padding-top: 20px; padding-bottom: 20px"> | |||||
<?= $this->TPL['message']; ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,289 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="392" | |||||
height="425" | |||||
id="svg2" | |||||
version="1.1" | |||||
inkscape:version="0.47pre4 r22446" | |||||
sodipodi:docname="uf_logo.svg"> | |||||
<defs | |||||
id="defs4"> | |||||
<linearGradient | |||||
id="linearGradient3656"> | |||||
<stop | |||||
id="stop3658" | |||||
offset="0" | |||||
style="stop-color:#03006f;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3660" | |||||
offset="1" | |||||
style="stop-color:#7549b4;stop-opacity:1;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3637"> | |||||
<stop | |||||
id="stop3639" | |||||
offset="0" | |||||
style="stop-color:#ff2d00;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3641" | |||||
offset="1" | |||||
style="stop-color:#ffc200;stop-opacity:1;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3661"> | |||||
<stop | |||||
style="stop-color:#ffff0c;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3663" /> | |||||
<stop | |||||
style="stop-color:#ff411b;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop3665" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3627"> | |||||
<stop | |||||
style="stop-color:#7e4eec;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3629" /> | |||||
<stop | |||||
id="stop3651" | |||||
offset="1" | |||||
style="stop-color:#b181f9;stop-opacity:0.49803922;" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
id="linearGradient3593"> | |||||
<stop | |||||
style="stop-color:#fdfdfd;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop3619" /> | |||||
<stop | |||||
style="stop-color:#f3f3f3;stop-opacity:0;" | |||||
offset="1" | |||||
id="stop3597" /> | |||||
</linearGradient> | |||||
<inkscape:perspective | |||||
sodipodi:type="inkscape:persp3d" | |||||
inkscape:vp_x="0 : 526.18109 : 1" | |||||
inkscape:vp_y="0 : 1000 : 0" | |||||
inkscape:vp_z="744.09448 : 526.18109 : 1" | |||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | |||||
id="perspective10" /> | |||||
<inkscape:perspective | |||||
id="perspective3648" | |||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |||||
inkscape:vp_z="1 : 0.5 : 1" | |||||
inkscape:vp_y="0 : 1000 : 0" | |||||
inkscape:vp_x="0 : 0.5 : 1" | |||||
sodipodi:type="inkscape:persp3d" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3593" | |||||
id="linearGradient3617" | |||||
x1="179.83696" | |||||
y1="592.03351" | |||||
x2="470.73511" | |||||
y2="800.63373" | |||||
gradientUnits="userSpaceOnUse" | |||||
spreadMethod="pad" | |||||
gradientTransform="translate(-103.28948,-3.2894722)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3627" | |||||
id="linearGradient3633" | |||||
x1="203.92857" | |||||
y1="685.79077" | |||||
x2="373.12314" | |||||
y2="685.79077" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(-103.28948,-3.2894722)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3661" | |||||
id="linearGradient3667" | |||||
x1="175.7372" | |||||
y1="704.34076" | |||||
x2="411.27054" | |||||
y2="704.34076" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(0.65789474,-74.342105)" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3656" | |||||
id="linearGradient3654" | |||||
x1="35.421013" | |||||
y1="1176.5903" | |||||
x2="216.89119" | |||||
y2="1176.5903" | |||||
gradientUnits="userSpaceOnUse" /> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3661" | |||||
id="radialGradient3671" | |||||
cx="120.95009" | |||||
cy="158.30397" | |||||
fx="120.95009" | |||||
fy="158.30397" | |||||
r="56.21793" | |||||
gradientTransform="matrix(1,0,0,0.97391725,0,4.1290024)" | |||||
gradientUnits="userSpaceOnUse" /> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="1" | |||||
inkscape:cx="293.30863" | |||||
inkscape:cy="236.8775" | |||||
inkscape:document-units="px" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
inkscape:window-width="1400" | |||||
inkscape:window-height="998" | |||||
inkscape:window-x="0" | |||||
inkscape:window-y="0" | |||||
inkscape:window-maximized="1" /> | |||||
<metadata | |||||
id="metadata7"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title></dc:title> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-19.712531,-534.11398)"> | |||||
<path | |||||
style="fill:#c1b6af;fill-opacity:1;stroke:#333333;stroke-width:1.35215460999999992px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 38.543346,554.26267 c 121.746544,-23.52918 230.267474,-22.35482 344.838384,0 20.55724,99.4991 23.37603,191.82013 -6.32731,259.70332 -29.62138,17.3006 -216.86506,25.8575 -335.347434,2.9851 -24.41612,-83.88895 -29.30521,-170.84875 -3.16364,-262.68842 z" | |||||
id="path3614" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:url(#linearGradient3617);fill-opacity:1;stroke:#333333;stroke-width:1.06500006000000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
d="m 75.481966,584.62058 c 98.408524,-18.05257 186.126674,-17.15158 278.735104,0 16.61655,76.33986 18.89499,147.17242 -5.11442,199.25522 -23.94313,13.2738 -175.29344,19.83905 -271.063484,2.29036 C 58.303446,721.803 54.351576,655.0838 75.481966,584.62058 z" | |||||
id="path3614-6" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:#c1b6af;stroke:#1a1a1a;stroke-width:1.18485594000000005px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" | |||||
d="m 128.78534,827.71059 c 55.82779,4.00558 109.72,3.77923 161.47265,0.79576 0.25391,14.22607 1.39995,27.15853 27.82212,46.23231 -79.95656,14.53314 -159.56037,11.12398 -222.458974,-2.31576 17.682194,-10.59777 32.975424,-27.96809 33.164204,-44.71231 z" | |||||
id="path3662" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:url(#linearGradient3633);fill-opacity:1;stroke:#668000;stroke-width:0.54194838px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 100.91006,591.55796 139.43848,0 c 45.61241,83.74005 31.67333,137.30619 0,181.88663 l -139.43848,0 c 51.3425,-53.23528 29.51784,-117.00702 0,-181.88663 z" | |||||
id="path2818" | |||||
sodipodi:nodetypes="ccccc" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3598" | |||||
d="m 131.40417,737.78812 c 1.23778,-2.81789 2.5533,-5.61187 3.79115,-8.43289 0.66498,-1.48844 1.10648,-3.04589 1.67663,-4.56384 0.0502,-0.13353 0.71012,-1.85987 0.86986,-1.95947 2.18608,-1.36299 4.54115,-2.48557 6.81172,-3.72835 0.26168,0.24264 0.57099,0.44911 0.78504,0.7279 0.35077,0.45686 1.32121,2.45945 1.47912,2.80362 1.0737,2.34021 1.95087,4.75351 2.86256,7.14837 1.45643,3.11721 1.95694,6.70902 4.11567,9.52234 1.31377,1.32079 3.03783,1.21345 4.71924,0.61471 3.30002,-1.6801 -3.19164,1.67618 -4.80089,2.49251 -0.26723,0.13553 0.51533,-0.30027 0.77394,-0.44906 0.27707,-0.15942 0.54967,-0.32571 0.83308,-0.47557 7.25426,-3.83571 4.71074,-2.8128 8.09562,-4.12571 1.80565,-0.54791 3.71519,-0.62248 5.60053,-0.68206 1.94522,0.0322 3.85317,-0.33241 5.74334,-0.69977 1.90587,-0.37491 3.85767,-0.4588 5.79981,-0.52651 1.91632,0.0435 3.79344,-0.13759 5.58944,-0.75915 0.30693,-0.12674 0.61609,-0.24909 0.92079,-0.38022 0.68065,-0.29292 2.65134,-1.2999 1.99811,-0.95898 -12.07421,6.30156 -1.23404,0.58483 2.95405,-1.55222 1.7444,-0.79466 2.94624,-1.47753 4.83846,-0.71617 0.98022,0.77608 2.00142,1.33962 3.26461,1.61232 1.78607,0.23155 3.59822,0.21232 5.39826,0.22 1.98081,0.0696 3.73625,0.95293 5.6207,1.41607 1.71237,0.34653 3.46779,0.41788 5.21506,0.45432 1.8518,0.23001 2.7866,-0.32061 4.38081,-0.95219 -1.07766,0.55275 4.06357,-2.07919 2.80336,-1.41341 -1.86743,0.98658 -15.38166,8.05177 1.3008,-0.6733 1.54793,-0.65008 2.43154,-0.69117 4.00859,-0.17082 1.26218,0.72559 2.68347,1.00205 4.14216,1.16858 1.81808,0.0161 3.55796,-0.48675 5.32857,-0.79235 1.56075,-0.34244 2.76087,0.42449 3.93458,1.24349 0.96794,0.65036 2.00292,0.846 3.16511,0.6769 1.14932,-0.20107 2.31892,-0.24333 3.48232,-0.32715 0.49375,-0.11641 0.5855,0.25538 0.75924,0.60186 0,0 -6.66977,3.29773 -6.66977,3.29773 l 0,0 c 0.20513,0.152 0.13407,0.2077 -0.16367,0.18469 -1.16383,0.064 -2.31653,0.20665 -3.47391,0.32896 -1.27816,0.007 -2.44508,-0.387 -3.46377,-1.09535 -1.09799,-0.75007 -2.16115,-1.14229 -3.55052,-0.78526 -1.80587,0.33197 -3.61697,0.78999 -5.47744,0.60632 -1.48814,-0.22211 -2.89625,-0.60991 -4.24019,-1.24278 -1.2999,-0.31834 -2.47308,0.0113 -3.63325,0.60397 13.52536,-7.1587 0.15799,0.10769 -4.13212,2.03677 -1.49295,0.61517 -2.93782,0.88493 -4.58863,0.70992 -1.78328,-0.0678 -3.5733,-0.18793 -5.30719,-0.60051 -1.8136,-0.49721 -3.54728,-1.30519 -5.48519,-1.27698 -1.85652,-0.015 -3.74154,0.0328 -5.56425,-0.33755 -1.22665,-0.36239 -2.23631,-0.98634 -3.28776,-1.64963 -1.59233,-0.35131 -3.03692,0.49641 -4.41186,1.14688 -0.32664,0.16531 -1.30177,0.66884 -0.97991,0.49591 1.78829,-0.96083 7.17415,-3.81066 5.3795,-2.85975 -3.37394,1.78771 -6.69488,3.88001 -10.3774,5.16784 -1.86688,0.48937 -3.77648,0.61953 -5.71534,0.60781 -1.92246,0.0821 -3.846,0.2191 -5.72595,0.61791 -1.91652,0.36808 -3.86285,0.59703 -5.82454,0.61281 -1.84191,0.0829 -3.70903,0.20594 -5.42093,0.89021 -2.68633,1.20616 -1.42269,0.66023 4.74668,-2.58834 0.54727,-0.28818 -1.06068,0.62753 -1.60567,0.91931 -7.22804,3.86972 -4.68048,2.86751 -8.10138,4.15712 -1.99144,0.43109 -3.88812,0.18874 -5.23345,-1.35161 -2.08094,-2.94939 -2.57108,-6.56319 -4.00186,-9.77965 -0.87955,-2.3278 -0.98372,-2.69676 -1.99103,-4.98765 -0.52983,-1.20497 -1.44053,-3.46858 -2.39353,-4.50457 -0.0722,-0.0784 -0.2155,-0.0575 -0.32324,-0.0862 1.97667,-1.11688 3.87886,-2.3517 5.93001,-3.35065 0.26815,-0.13059 -0.35685,0.45222 -0.49021,0.70137 -0.20363,0.38045 -0.35634,0.78214 -0.5165,1.1795 -0.61552,1.52716 -1.05323,3.10818 -1.71139,4.62199 -1.19081,2.75144 -2.3513,5.52102 -3.69467,8.21317 0,0 -6.76111,3.03249 -6.76111,3.03249 z" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3602" | |||||
d="m 143.92618,682.44467 c 2.65584,-1.19892 5.30323,-2.40662 8.05899,-3.41274 2.7316,-1.16963 3.66903,-1.78228 6.50206,-0.51167 2.51199,1.14187 4.74557,2.67666 6.87008,4.33182 1.65933,1.33716 2.9811,2.92373 4.84714,4.03366 2.56807,1.21945 3.88507,1.37668 6.62007,0.59879 2.56802,-0.88425 5.09072,-1.87112 7.71028,-2.62341 1.97244,-0.73518 4.0124,-1.17263 6.1269,-1.356 2.11832,-0.11812 4.21741,-0.0398 6.30855,-0.4049 2.51036,-0.62665 4.98747,-1.34077 7.54748,-1.78289 2.79399,-0.53281 4.52708,0.45813 6.48874,2.13139 1.36678,1.35604 2.61242,2.78483 4.6444,3.242 1.76594,0.17998 3.51497,-0.0995 5.27254,0.15077 2.30886,0.52709 4.37266,1.61836 6.63534,2.27377 2.30103,0.58513 4.30549,0.64262 6.56424,-0.0745 2.35354,-1.02973 4.85289,-1.74653 7.24083,-2.69399 1.51304,-0.65864 3.16475,-0.9207 4.79455,-1.2187 1.53542,-0.48955 3.11743,-0.81383 4.68524,-1.19804 1.80244,-0.41279 3.66971,-0.44993 5.517,-0.50125 1.8726,-0.0426 3.74597,-0.0358 5.619,-0.0361 0.25304,0.033 0.50607,0.066 0.75911,0.0991 0,0 -5.01472,3.24367 -5.01472,3.24367 l 0,0 c -0.23596,-0.0182 -0.47191,-0.0364 -0.70787,-0.0546 -1.86357,-0.004 -3.72755,-0.008 -5.59053,0.0423 -1.83234,0.0667 -3.67892,0.1552 -5.452,0.62047 -1.56252,0.40407 -3.14776,0.72549 -4.69959,1.16503 -1.6063,0.32579 -3.21935,0.62607 -4.71059,1.29041 -2.42219,0.875 -4.85297,1.72883 -7.26016,2.63924 -2.28771,0.55495 -4.53382,0.46438 -6.79976,-0.19359 -2.20723,-0.69475 -4.25698,-1.7839 -6.56813,-2.18165 -1.78492,-0.14067 -3.59069,0.15929 -5.35378,-0.21913 -2.01662,-0.66661 -3.35673,-2.04201 -4.76488,-3.46779 -1.93017,-1.59553 -3.50443,-2.26435 -6.15463,-1.7063 -2.55369,0.48675 -5.02755,1.23159 -7.56578,1.77625 -2.1074,0.28893 -4.22756,0.21669 -6.34717,0.39064 -2.07379,0.2407 -4.06569,0.74483 -6.02067,1.42331 -2.61286,0.78816 -5.13049,1.80468 -7.73624,2.6128 -2.81604,0.63034 -4.3925,0.28922 -6.93004,-0.98292 -1.86308,-1.14741 -3.19522,-2.74566 -4.86395,-4.10255 -2.08966,-1.61986 -4.29262,-3.12977 -6.79361,-4.18883 -0.3439,-0.12602 -0.67398,-0.2896 -1.03168,-0.37806 -1.81963,-0.45001 -3.53163,0.6603 -5.14605,1.22937 -2.76867,1.0536 -5.43273,2.29369 -8.13332,3.47822 0,0 4.83261,-3.48332 4.83261,-3.48332 z" /> | |||||
<path | |||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" | |||||
id="path3608" | |||||
d="m 131.58,629.5385 c 0.40641,-0.0886 0.8139,-0.17314 1.21923,-0.26576 1.90423,-0.43514 3.71046,-0.95078 5.48259,-1.73792 0.73544,-0.32666 2.85008,-1.46079 2.16725,-1.04997 -0.96359,0.57976 -2.00818,1.03892 -3.01227,1.55838 3.40539,-1.90834 6.82327,-3.79714 10.33938,-5.53513 0.99363,-0.49114 1.89689,-0.60017 2.95314,-0.35866 1.03645,0.71906 1.99576,1.38312 3.27775,1.66344 1.46699,0.28784 2.97675,0.15775 4.44974,0.36766 1.97805,0.32354 3.35054,1.22646 4.53208,2.67038 0.78786,1.25771 1.18897,2.47397 3.00563,2.353 1.47015,-0.41913 2.83438,-0.141 4.29168,0.13257 1.6649,0.57549 2.93104,0.83763 4.57762,0.0924 -10.41309,5.7597 -0.34556,-0.609 3.4424,-1.54194 0.82893,-0.20416 0.81752,-0.15054 1.61225,-0.10677 0.19826,0.0758 0.40881,0.1291 0.59477,0.22749 0.21674,0.11469 0.7783,0.57254 0.99681,0.70408 0.56573,0.34059 1.198,0.51578 1.84005,0.68972 -0.31066,0.72411 3.16713,-1.28849 2.28518,-0.85372 -7.31723,3.60712 -4.77403,2.79229 -3.09965,1.0761 1.44822,-1.72733 4.70695,-5.07497 6.55675,-3.20432 0.452,0.4571 0.58023,1.17021 0.7913,1.73333 0.53243,1.0816 1.88503,1.52918 3.10313,1.31014 0.21379,-0.12258 0.86305,-0.47798 0.64135,-0.36772 -1.52287,0.7574 -3.01006,1.57448 -4.54595,2.30967 -0.26195,0.12539 0.46236,-0.33969 0.71708,-0.47689 1.94471,-1.04751 3.84425,-2.17767 5.87719,-3.07508 0.50465,-0.22277 1.03222,0.71195 1.14416,0.85435 0.80817,1.4344 0.31293,3.24516 1.36034,4.56744 0.13252,-0.0107 0.28506,0.0326 0.39756,-0.0321 0.22043,-0.12691 0.78541,-0.60422 0.54566,-0.51091 -1.48391,0.57748 -2.75507,1.64228 -4.3249,1.98168 -0.55036,0.11899 0.67141,-0.83078 0.98562,-1.25972 0.34218,-0.46713 1.75442,-2.55791 2.07835,-3.03533 1.33337,-1.992 2.48138,-4.13555 4.21451,-5.87407 2.0196,-1.50323 1.74321,-1.34884 6.3167,-3.01285 0.30204,-0.1099 1.72461,1.93385 1.92649,2.21209 0.69469,1.26456 1.57995,2.19445 3.0635,2.63482 1.62446,0.20094 3.25489,0.36408 4.88414,0.56251 2.01631,0.22269 4.04901,0.25467 6.07732,0.28103 1.99626,0.0144 3.99263,0.0134 5.98894,0.0106 1.79648,-0.11631 3.55277,0.23974 5.33073,0.40091 2.27864,0.12128 4.56823,0.27357 6.80179,0.72023 1.42796,0.53866 2.79785,0.94207 4.346,0.91563 1.31361,-0.47903 2.7201,-0.55504 4.11506,-0.65344 1.69168,-0.1065 3.38767,-0.12628 5.08269,-0.13607 0.24535,-5.2e-4 0.49071,-8.7e-4 0.73606,-0.002 0,0 -4.97296,3.29738 -4.97296,3.29738 l 0,0 c -0.24422,5.2e-4 -0.48843,0.002 -0.73265,0.002 -1.68021,0.012 -3.36198,0.0341 -5.03736,0.16165 -1.41876,0.12737 -2.78703,0.41335 -4.18328,0.62723 -1.54198,-0.0684 -2.92246,-0.59022 -4.37738,-1.02441 -2.23175,-0.39326 -4.49537,-0.56207 -6.76275,-0.67534 -1.76413,-0.16646 -3.51533,-0.45866 -5.29797,-0.3524 -1.99449,-1.3e-4 -3.98911,0.006 -5.98339,-0.0262 -2.05002,-0.0354 -4.10467,-0.0698 -6.13976,-0.32161 -1.66272,-0.20978 -3.35834,-0.27922 -4.98423,-0.65377 -1.51597,-0.59001 -2.50182,-1.60106 -3.24368,-2.9411 -0.37417,-0.50308 -0.76822,-1.24851 -1.31275,-1.62868 -0.0914,-0.0638 -0.42067,-0.0477 -0.32503,-0.10606 2.97468,-1.81501 6.80494,-3.55818 4.35709,-2.43448 -1.92611,1.57949 -3.02428,3.83149 -4.3861,5.8001 -2.48313,3.66199 0.41088,-0.6146 -2.04479,3.04139 -0.29859,0.44454 -0.45189,1.00845 -0.90143,1.33045 -1.91103,1.36886 -4.00291,2.51783 -6.07896,3.66957 -0.72076,0.39986 -0.88686,0.16061 -1.47435,-0.12515 -0.9691,-1.3834 -0.72114,-3.03687 -1.33861,-4.54176 -0.0885,-0.0937 -0.13827,-0.23853 -0.26562,-0.28094 -0.12308,-0.041 -0.49773,0.12732 -0.38685,0.0637 1.51548,-0.87028 3.06162,-1.69659 4.6231,-2.49636 0.25877,-0.13254 -0.45529,0.35065 -0.70876,0.49148 -1.97572,1.09773 -3.9536,2.1942 -5.97423,3.22169 -0.23743,0.12072 -0.52082,0.14228 -0.78122,0.21342 -1.48375,-0.0651 -2.90806,-0.61387 -3.53834,-1.92262 -0.13674,-0.35473 -0.23054,-0.72335 -0.38448,-1.07218 -0.0372,-0.0843 -0.0715,-0.18674 -0.15842,-0.2311 -0.0574,-0.0293 -0.24421,0.0859 -0.1883,0.0542 5.15298,-2.91883 6.0182,-4.04173 4.41164,-2.18439 -1.97947,2.37925 -3.79146,2.74324 -7.30518,4.62297 -0.82616,0.44197 -1.65159,0.67112 -2.60685,0.49713 -0.70107,-0.22549 -1.3452,-0.46281 -1.96651,-0.84257 -0.26939,-0.16465 -0.57058,-0.43132 -0.8846,-0.54221 -0.14917,-0.0527 -0.31334,-0.0589 -0.47001,-0.0884 -0.862,0.0623 -1.58882,0.25866 -2.38442,0.58175 -0.30847,0.12526 -1.19756,0.56795 -0.90809,0.40939 1.56908,-0.85954 12.50342,-6.54807 -1.6137,0.81295 -1.67309,0.45034 -3.1701,0.17295 -4.79573,-0.34237 -1.44049,-0.25783 -2.79077,-0.27898 -4.24424,-0.0639 -1.88103,-0.27696 -2.44997,-1.33664 -3.27526,-2.77506 -1.10749,-1.32802 -2.44221,-2.07153 -4.2828,-2.28478 -1.50295,-0.13144 -3.0328,-0.0826 -4.50608,-0.4336 -1.21647,-0.35595 -2.15788,-1.03112 -3.24127,-1.61089 -0.67724,-0.0372 -0.70135,-0.0881 -1.44789,0.14337 -0.39951,0.12386 -1.51694,0.66417 -1.16478,0.45215 1.17473,-0.70725 2.42272,-1.30785 3.64462,-1.94515 1.26027,-0.65731 -5.32062,2.86371 -3.7197,2.0663 -5.38855,2.84032 -10.17803,5.75064 -16.31143,6.85681 0,0 4.88854,-3.40925 4.88854,-3.40925 z" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:#d0c9c4;fill-opacity:1;stroke:#666666;stroke-width:1.06500006000000003;stroke-miterlimit:4;stroke-dasharray:none" | |||||
id="path3637" | |||||
sodipodi:cx="446.76724" | |||||
sodipodi:cy="806.88806" | |||||
sodipodi:rx="10.129311" | |||||
sodipodi:ry="10.129311" | |||||
d="m 456.89655,806.88806 a 10.129311,10.129311 0 1 1 -20.25862,0 10.129311,10.129311 0 1 1 20.25862,0 z" | |||||
transform="matrix(0.79786056,0,0,0.79786056,-29.352526,165.93576)" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:#d0c9c4;fill-opacity:1;stroke:#b3b3b3;stroke-width:1.06500006000000003;stroke-miterlimit:4;stroke-dasharray:none" | |||||
id="path3639" | |||||
sodipodi:cx="432.6825" | |||||
sodipodi:cy="812.63739" | |||||
sodipodi:rx="3.348757" | |||||
sodipodi:ry="3.4642315" | |||||
d="m 436.03125,812.63739 a 3.348757,3.4642315 0 1 1 -6.69751,0 3.348757,3.4642315 0 1 1 6.69751,0 z" | |||||
transform="translate(-105.54412,-2.7589622)" /> | |||||
<path | |||||
style="fill:#666666;fill-opacity:1;stroke:#b3b3b3;stroke-width:0.92901093px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 327.15554,804.5324 0,4.15222" | |||||
id="path3647" | |||||
sodipodi:nodetypes="cc" /> | |||||
<flowRoot | |||||
xml:space="preserve" | |||||
id="flowRoot2837" | |||||
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
transform="translate(19.712531,534.11398)"><flowRegion | |||||
id="flowRegion2839"><rect | |||||
id="rect2841" | |||||
width="378.94736" | |||||
height="59.210526" | |||||
x="3.2894738" | |||||
y="354.60526" /></flowRegion><flowPara | |||||
id="flowPara2843" /></flowRoot> <text | |||||
xml:space="preserve" | |||||
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
x="157.23685" | |||||
y="390.78946" | |||||
id="text2845" | |||||
transform="translate(19.712531,534.11398)"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan2847" /></text> | |||||
<text | |||||
xml:space="preserve" | |||||
style="font-size:491.34445190000002412px;font-style:normal;font-weight:normal;line-height:125%;fill:url(#linearGradient3654);fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | |||||
x="29.149523" | |||||
y="1197.3451" | |||||
id="text3643" | |||||
transform="scale(1.2794953,0.78155817)" | |||||
sodipodi:linespacing="125%"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan3645" | |||||
x="29.149523" | |||||
y="1197.3451" | |||||
style="font-size:80.27507018999997968px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Arial;-inkscape-font-specification:Arial;fill-opacity:1;fill:url(#linearGradient3654)">µForum</tspan></text> | |||||
<path | |||||
sodipodi:type="star" | |||||
style="fill:url(#radialGradient3671);fill-opacity:1;stroke:none" | |||||
id="path3663" | |||||
sodipodi:sides="5" | |||||
sodipodi:cx="119.62617" | |||||
sodipodi:cy="153.97195" | |||||
sodipodi:r1="58.707661" | |||||
sodipodi:r2="13.366334" | |||||
sodipodi:arg1="0.24111768" | |||||
sodipodi:arg2="-0.07032258" | |||||
inkscape:flatsided="false" | |||||
inkscape:rounded="0" | |||||
inkscape:randomized="0" | |||||
d="m 176.63551,167.99065 -43.67605,-14.95788 -9.049,59.49031 0.72914,-46.16063 -59.374944,9.7774 44.126684,-13.57097 -27.646723,-53.44754 26.542653,37.77331 42.28832,-42.80979 -27.72242,36.91615 53.78234,26.98964 z" | |||||
transform="matrix(1.4489505,0,0,1.4094179,14.29205,492.45047)" /> | |||||
<path | |||||
style="fill:url(#linearGradient3667);fill-opacity:1;stroke:#000000;stroke-width:1.26388943000000009px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||||
d="m 395.07143,542.23523 -161.4278,96.02682 c 39.86364,-7.02254 6.25927,1.13166 105.53238,-15.13393 l -137.07575,75.31075 11.13295,-30.72859 -36.20618,50.05181 64.26014,-8.23606 -29.90946,-4.68537 168.3403,-94.86433 -100.81192,13.03751 132.39039,-80.34077 -16.22505,-0.43784 z" | |||||
id="path3610" | |||||
sodipodi:nodetypes="cccccccccccc" /> | |||||
</g> | |||||
</svg> |
@ -0,0 +1,489 @@ | |||||
body { | |||||
font-family: Helvetica; | |||||
font-size: 11pt; | |||||
background-color: #E5E7E9; | |||||
} | |||||
#container { | |||||
width: 900px; | |||||
background-color: #CEE3F6; | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
border: 2px solid navy; | |||||
border-collapse: collapse; | |||||
border-radius: 10px; | |||||
} | |||||
a, a:visited { | |||||
text-decoration: none; | |||||
} | |||||
img { | |||||
border: 0px; | |||||
} | |||||
a:hover { | |||||
color: navy; | |||||
text-decoration: underline; | |||||
} | |||||
a { | |||||
color: #000000; | |||||
} | |||||
#container #top { | |||||
width: 100%; | |||||
background-color: #CEE3F6; | |||||
height: 140px; | |||||
vertical-align: middle; | |||||
padding-top: 20px; | |||||
border-bottom: 1px solid #777777; | |||||
border-top-left-radius: 10px; | |||||
border-top-right-radius: 10px; | |||||
} | |||||
#container #userpanel { | |||||
text-align: right; | |||||
font-size: 0.8em; | |||||
width: 100%; | |||||
} | |||||
#container #navi_bar | |||||
{ | |||||
padding-left: 10px; | |||||
text-align: left; | |||||
width: 100%; | |||||
} | |||||
#container #top h1 | |||||
{ | |||||
margin: 0px; | |||||
position: relative; | |||||
top: 30%; | |||||
color: navy; | |||||
font-size: 36pt; | |||||
font-weight: bold; | |||||
} | |||||
#container #top h2 | |||||
{ | |||||
color: #005AE5; | |||||
font-size: 20px; | |||||
text-decoration: none; | |||||
font-weight: bold; | |||||
} | |||||
#container #footer | |||||
{ | |||||
width: 100%; | |||||
background-color: navy; | |||||
font-size: 8pt; | |||||
color: #FFFFFF; | |||||
height: 18px; | |||||
line-height: 18px; | |||||
border-bottom-left-radius: 5px; | |||||
border-bottom-right-radius: 5px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
#container #footer a | |||||
{ | |||||
color: #FFFFFF; | |||||
} | |||||
#contanier #footer a:visited | |||||
{ | |||||
color: #FFFFFF; | |||||
} | |||||
#container #content { | |||||
text-align: left; | |||||
min-height: 200px; | |||||
padding: 10px; | |||||
} | |||||
#container #content h3 { | |||||
margin-left: 20px; | |||||
color: gray; | |||||
font-size: 1.5em; | |||||
} | |||||
#container #content table { | |||||
border: 1px solid; | |||||
border-collapse: collapse; | |||||
} | |||||
#container #content table td { | |||||
border: 1px solid; | |||||
border-color: orange; | |||||
border-collapse: collapse; | |||||
font-size: 10pt; | |||||
background-color: #ffffbd; | |||||
text-align: center; | |||||
} | |||||
#container #content table .heading { | |||||
background-color: orange; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
} | |||||
#container #menu { | |||||
text-align: center; | |||||
margin: 0 auto; | |||||
width: 100%; | |||||
height: 50px; | |||||
background-color: #99CCFF; | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
#container #menu ul { | |||||
list-style-type: none; | |||||
margin: 0px; | |||||
padding: 0px; | |||||
} | |||||
#container #menu li { | |||||
display: inline-block; | |||||
border-right: 1px #9A9A9A solid; | |||||
height: 37px; | |||||
width: 120px; | |||||
padding-top: 13px; | |||||
margin: auto -4px auto auto; | |||||
} | |||||
#container #menu li:hover { | |||||
} | |||||
#container #menu li a { | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
font-family: Verdana; | |||||
font-size: 14px; | |||||
font-weight: bold; | |||||
} | |||||
#container #menu li:last-child { | |||||
border: 0px; | |||||
} | |||||
.sect | |||||
{ | |||||
color: #434354; | |||||
font-family: Verdana; | |||||
font-size: 10pt; | |||||
font-weight: bold; | |||||
text-decoration: none; | |||||
} | |||||
.navigation { | |||||
color: navy; | |||||
text-decoration: none; | |||||
font-size: 12px; | |||||
font-weight: bold; | |||||
} | |||||
.forum_table { | |||||
display: table; | |||||
width: 100%; | |||||
border-collapse: separate; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.fsmall | |||||
{ | |||||
color: #434354; | |||||
font-size: 8pt; | |||||
text-decoration: none; | |||||
} | |||||
.row { | |||||
display: table-row; | |||||
width: 100%; | |||||
} | |||||
.row:last-child .tc1, .row:last-child .tc2, .row:last-child .tc3, .row:last-child .tc4 | |||||
{ | |||||
border-bottom: 1px solid #040074; | |||||
} | |||||
.rcol | |||||
{ | |||||
display: table-caption; | |||||
border: 1px solid #040074; | |||||
border-collapse: collapse; | |||||
background-color: #e1f0ff; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
border-top: 0px; | |||||
caption-side: bottom; | |||||
text-align: center; | |||||
font-style: italic; | |||||
} | |||||
.tc1, .tc2, .tc3, .tc4 | |||||
{ | |||||
display: table-cell; | |||||
background-color: #F0F8FF; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
word-wrap: break-word; | |||||
} | |||||
.tc1 | |||||
{ | |||||
border-left: 1px solid #040074; | |||||
} | |||||
.tc2, .tc3 | |||||
{ | |||||
vertical-align: middle; | |||||
text-align: center; | |||||
} | |||||
.tc4 { | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 150px; | |||||
border-right: 1px solid #040074; | |||||
} | |||||
.hc1, .hc2, .hc3, .hc4 | |||||
{ | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
background-color: yellow; | |||||
vertical-align: middle; | |||||
display: table-cell; | |||||
padding-left: 15px; | |||||
background-image: url('images/category_beam.gif'); | |||||
height: 30px; | |||||
border-top: 1px solid #040074; | |||||
word-wrap: break-word; | |||||
} | |||||
.hc1 { | |||||
border-top-left-radius: 10px; | |||||
border-left: 1px solid #040074; | |||||
} | |||||
.hc4 { | |||||
border-top-right-radius: 10px; | |||||
border-right: 1px solid #040074; | |||||
width: 150px; | |||||
} | |||||
.tab_desc { | |||||
text-align: center; | |||||
font-weight: bold; | |||||
color: blue; | |||||
background-image: url('images/td_beam_top.gif'); | |||||
height: 19px; | |||||
} | |||||
.lc { | |||||
width: 30%; | |||||
text-align: right; | |||||
margin-right: 10px; | |||||
} | |||||
.rc { | |||||
width: 70%; | |||||
text-align: left; | |||||
margin-left: 10px; | |||||
} | |||||
.rc input[type="text"], input[type="password"], input[type="email"] { | |||||
width: 200px; | |||||
} | |||||
input[type="button"], input[type="reset"], input[type="submit"] { | |||||
border-radius: 5px; | |||||
background-color: #C7E2FB; | |||||
padding: 5px; | |||||
border: 1px solid #AACAE8; | |||||
min-width: 30px; | |||||
font-size: 12px; | |||||
color: #204E7A; | |||||
cursor: pointer; | |||||
} | |||||
input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover | |||||
{ | |||||
background-color: #e3effb; | |||||
} | |||||
#signature { | |||||
width: 490px; | |||||
height: 60px; | |||||
resize: vertical; | |||||
} | |||||
#post { | |||||
width: 490px; | |||||
height: 180px; | |||||
resize: vertical; | |||||
} | |||||
#signature, #post, input[type="text"], input[type="password"], input[type="email"], select | |||||
{ | |||||
border-radius: 5px; | |||||
border: 1px solid #C7E2FB; | |||||
min-height: 20px; | |||||
font-size: 12px; | |||||
background-color: #FFFFE8; | |||||
} | |||||
.error_form | |||||
{ | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
width: 90%; | |||||
border: 1px solid #FF0000; | |||||
background-color: #FFCC99; | |||||
padding: 10px; | |||||
color: #FF0000; | |||||
border-radius: 10px; | |||||
font-weight: bold; | |||||
} | |||||
.fadmin, .fmod | |||||
{ | |||||
font-weight: bold; | |||||
} | |||||
.fmod | |||||
{ | |||||
color: darkgreen; | |||||
} | |||||
.fadmin | |||||
{ | |||||
color: orange; | |||||
} | |||||
.btn | |||||
{ | |||||
width: 90px; | |||||
height: 30px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 1em; | |||||
background-image: url('images/button_beam.gif'); | |||||
border-radius: 10px; | |||||
line-height: 30px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.btn_small | |||||
{ | |||||
width: 60px; | |||||
height: 20px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 0.8em; | |||||
background-image: url('images/button_beam.gif'); | |||||
border-radius: 10px; | |||||
margin: 0 auto; | |||||
line-height: 20px; | |||||
margin-top: 3px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.ut | |||||
{ | |||||
padding: 0px; | |||||
border-left: 0px; | |||||
} | |||||
.tc1 .forum_table .tc1, .tc1 .forum_table .tc2, .tc1 .forum_table .tc3 { | |||||
border: 0px; | |||||
border-top: 1px solid lightgray; | |||||
} | |||||
.mod_pool | |||||
{ | |||||
margin: 0 auto; | |||||
width: 90%; | |||||
background-color: #FFFF99; | |||||
text-align: center; | |||||
padding: 5px; | |||||
border: 1px solid orange; | |||||
border-radius: 10px; | |||||
} | |||||
hr { | |||||
border: 0; | |||||
border-bottom: 1px dashed #ccc; | |||||
background: #999; | |||||
width: 50%; | |||||
margin: 0; | |||||
margin-top: 5px; | |||||
} | |||||
.hcpost | |||||
{ | |||||
height: 10px; | |||||
} | |||||
.f_hc4 | |||||
{ | |||||
text-align: right; | |||||
padding-right: 10px; | |||||
} | |||||
.post_3c | |||||
{ | |||||
width: 120px; | |||||
} | |||||
.f_tc2 | |||||
{ | |||||
width: 120px; | |||||
vertical-align: top; | |||||
height: 150px; | |||||
text-align: center; | |||||
} | |||||
.topic_mod | |||||
{ | |||||
width: 80px; | |||||
float: right; | |||||
} | |||||
.p_uinfo | |||||
{ | |||||
width: 38%; | |||||
} | |||||
.post_content | |||||
{ | |||||
vertical-align: top; | |||||
position: relative; | |||||
text-align: left; | |||||
max-width: 500px; | |||||
} | |||||
.row .hcpost a { | |||||
color: #FFFFFF; | |||||
} | |||||
.qpost | |||||
{ | |||||
background-color: #DDDAC5; | |||||
width: 95%; | |||||
font-style: italic; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} | |||||
.cpost | |||||
{ | |||||
background-color: #C5DDCC; | |||||
width: 95%; | |||||
font-family: Courier New; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} |
@ -0,0 +1,146 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['topic_info']['forum_locked'] == false && $this->TPL['topic_info']['topic_locked'] == false) { ?> | |||||
<a href="index.php?mode=reply&id=<?= $_GET['id']; ?>"> | |||||
<div class="btn"> | |||||
Reply | |||||
</div> | |||||
</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
<br /> | |||||
<?php | |||||
for ($i=0; $i<count($this->TPL['posts_list']); $i++) | |||||
{ | |||||
echo ' | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hcpost"> </div> | |||||
<div class="hc2 hcpost"> </div> | |||||
<div id="p'.$this->TPL['posts_list'][$i]['post_id'].'" class="hc4 hcpost f_hc4 post_3c">Post <a href="index.php?mode=viewtopic&id='.$_GET['id'].'#p'.$this->TPL['posts_list'][$i]['post_id'].'">#'.($i+1).'</a></div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 f_tc2" style="width: 120px">'; | |||||
if ($this->TPL['posts_list'][$i]['nick'] != null) | |||||
echo '<a href="index.php?mode=viewprofile&id='.$this->TPL['posts_list'][$i]['user_id'].'">'.$this->colorRank($this->TPL['posts_list'][$i]['nick'], $this->TPL['posts_list'][$i]['user_rank']).'</a>'; | |||||
else | |||||
echo 'Anonymous'; | |||||
echo '<br>'; | |||||
if ($this->TPL['posts_list'][$i]['avatar'] != null) | |||||
echo '<img src="'.$this->TPL['posts_list'][$i]['avatar'].'" alt="user avatar">'; | |||||
else | |||||
echo '<img src="templates/images/no_av.gif" alt="user avatar">'; | |||||
echo ' | |||||
</div> | |||||
<div class="tc3 post_content" >'; | |||||
echo BBCode($this->TPL['posts_list'][$i]['content']); | |||||
if ($this->TPL['posts_list'][$i]['signature'] != null) | |||||
echo ' | |||||
<br><br> | |||||
<hr> | |||||
<span class="fsmall">'.BBCode($this->TPL['posts_list'][$i]['signature']).'<br><br></span>'; | |||||
echo ' | |||||
</div> | |||||
<div class="tc4 post_3c f_tc2"> | |||||
<span class="fsmall">Posted: <span style="font-weight: bold">'.$this->TPL['posts_list'][$i]['date'].'</span></span><br> | |||||
<a href="index.php?mode=quote&id='.$_GET['id'].'&q='.$this->TPL['posts_list'][$i]['post_id'].'"> | |||||
<div class="btn_small"> | |||||
Quote | |||||
</div> | |||||
</a>'; | |||||
if ($this->TPL['my_id'] == $this->TPL['posts_list'][$i]['user_id']) | |||||
echo ' | |||||
<a href="index.php?mode=editpost&id='.$this->TPL['posts_list'][$i]['post_id'].'"> | |||||
<div class="btn_small"> | |||||
Edit | |||||
</div> | |||||
</a>'; | |||||
echo '<br>'; | |||||
if ($this->TPL['my_rank'] >= RANK_MOD) | |||||
echo ' | |||||
<div class="mod_pool"> | |||||
<span style="font-weight: bold">Mod options</span><br> | |||||
<a href="index.php?mode=editpost&id='.$this->TPL['posts_list'][$i]['post_id'].'"> | |||||
<div class="btn_small"> | |||||
Edit | |||||
</div> | |||||
</a> | |||||
<a href="index.php?mode=moderate&submode=deletepost&id='.$this->TPL['posts_list'][$i]['post_id'].'"> | |||||
<div class="btn_small" style="width: 35px"> | |||||
X | |||||
</div> | |||||
</a> | |||||
</div>'; | |||||
echo ' | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 post_3c tc2"> | |||||
<span class="fsmall">Status: <img src="templates/images/'.(($this->TPL['posts_list'][$i]['user_IP']) ? 'online' : 'offline').'.gif" alt="user status"></span> | |||||
</div> | |||||
<div class="tc1 ut"> | |||||
<div class="forum_table" style="box-shadow: none"> | |||||
<div class="tc2 "> | |||||
<span class="fsmall">Posts: <span style="font-weight: bold">'.$this->TPL['posts_list'][$i]['user_post_count'].'</span></span> | |||||
</div> | |||||
<div class="tc2 p_uinfo"> | |||||
<span class="fsmall">Joined: <span style="font-weight: bold">'.$this->TPL['posts_list'][$i]['regdate'].'</span></span> | |||||
</div> | |||||
<div class="tc3 p_uinfo"> | |||||
<span class="fsmall">Last visit: <span style="font-weight: bold">'.(($this->TPL['posts_list'][$i]['lastvisit']!= null) ? $this->TPL['posts_list'][$i]['lastvisit'] : 'Never').'</span></span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="tc4 post_3c"><span class="fsmall">Rank: '.$this->getRankLevel($this->TPL['posts_list'][$i]['user_rank']).'</span></div> | |||||
</div> | |||||
</div> | |||||
<br>'; | |||||
} | |||||
?> | |||||
<? if ($this->TPL['topic_info']['forum_locked'] == false && $this->TPL['topic_info']['topic_locked'] == false) { ?> | |||||
<a href="index.php?mode=reply&id=<?= $_GET['id']; ?>"> | |||||
<div class="btn"> | |||||
Reply | |||||
</div> | |||||
</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
<? if ($this->TPL['my_rank'] >= RANK_MOD) { ?> | |||||
<div class="forum_table topic_mod" style=""> | |||||
<div class="row"> | |||||
<div class="hc1 hc4 hcpost" style="padding: 0px; text-align: center">Actions</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4"> | |||||
<a href="index.php?mode=moderate&submode=deletetopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/delete.gif" alt="delete"> | |||||
</a> | |||||
<a href="index.php?mode=moderate&submode=locktopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/<? if ($this->TPL['topic_info']['topic_locked']) echo 'un'; ?>lock.gif" alt="lock"> | |||||
</a> | |||||
<a href="index.php?mode=moderate&submode=movetopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/move.gif" alt="move"> | |||||
</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? } ?> | |||||
<div style="clear: both"> </div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,54 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<script type="text/javascript" src="templates/scripts/chkcookie.js"> | |||||
</script> | |||||
<script type="text/javascript"> | |||||
create_cookie("checkcookie", "testvalue", 0); | |||||
</script> | |||||
<p id="js_msg" style="color: red; font-weight: bold">You must enable cookies if you want log in</p> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Log in</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Nick: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="30" name="nick" id="nick" value="<?= $this->TPL['nick']; ?>" required> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd" id="passwd" value="" required> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Log in"> | |||||
</div> | |||||
</div> | |||||
</div></form> | |||||
</div> | |||||
<script type="text/javascript"> | |||||
if (read_cookie("checkcookie") == "testvalue") | |||||
document.getElementById('js_msg').style.display = 'none'; | |||||
erase_cookie("checkcookie"); | |||||
</script> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,81 @@ | |||||
#container { | |||||
background-color: #CEE3F6; | |||||
border: 2px solid navy; | |||||
} | |||||
a:hover { | |||||
color: navy; | |||||
} | |||||
#container #top { | |||||
background-color: #CEE3F6; | |||||
height: 140px; | |||||
} | |||||
#container #top h1 { | |||||
top: 30%; | |||||
color: navy; | |||||
} | |||||
#container #footer { | |||||
background-color: navy; | |||||
} | |||||
#container #menu { | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
.navigation { | |||||
color: navy; | |||||
} | |||||
.row:last-child .tc1, .row:last-child .tc2, .row:last-child .tc3, .row:last-child .tc4 { | |||||
border-bottom: 1px solid #040074; | |||||
} | |||||
.rcol { | |||||
border: 1px solid #040074; | |||||
} | |||||
.tc1 { | |||||
border-left: 1px solid #040074; | |||||
} | |||||
.tc4 { | |||||
border-right: 1px solid #040074; | |||||
} | |||||
.hc1, .hc2, .hc3, .hc4 { | |||||
background-image: url('images/category_beam.gif'); | |||||
border-top: 1px solid #040074; | |||||
} | |||||
.hc1 { | |||||
border-left: 1px solid #040074; | |||||
} | |||||
.hc4 { | |||||
border-right: 1px solid #040074; | |||||
} | |||||
.tab_desc { | |||||
color: blue; | |||||
} | |||||
input[type="button"], input[type="reset"], input[type="submit"] { | |||||
background-color: #C7E2FB; | |||||
border: 1px solid #AACAE8; | |||||
color: #204E7A; | |||||
} | |||||
input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover { | |||||
background-color: #e3effb; | |||||
} | |||||
.btn { | |||||
background-image: url('images/button_beam.gif'); | |||||
} | |||||
.btn_small { | |||||
background-image: url('images/button_beam.gif'); | |||||
} |
@ -0,0 +1,123 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<script type="text/javascript"> | |||||
function confirm_action(c_name, url) | |||||
{ | |||||
if (confirm(c_name)) | |||||
{ | |||||
document.location = url; | |||||
} | |||||
} | |||||
</script> | |||||
<div id="content"> | |||||
<? | |||||
$items = 0; | |||||
for ($i=0; $i<count($this->TPL['forums_list']); $i++) | |||||
{ | |||||
if ($this->TPL['forums_list'][$i]['forum_id'] != null) | |||||
{ | |||||
if ($i > 0) | |||||
{ | |||||
if ($this->TPL['forums_list'][$i-1]['category_id'] != $this->TPL['forums_list'][$i]['category_id']) | |||||
echo '</div><br><div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">'.$this->TPL['forums_list'][$i]['category_name'].'</div> | |||||
<div class="hc2" style="width: 80px"> </div> | |||||
<div class="hc3" style="width: 80px"> </div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Forum name</div> | |||||
<div class="tc2 tab_desc" style="width: 80px">Topics</div> | |||||
<div class="tc3 tab_desc" style="width: 80px">Posts</div> | |||||
<div class="tc4 tab_desc">Last Post</div> | |||||
</div>'; | |||||
} | |||||
else | |||||
{ | |||||
echo '<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">'.$this->TPL['forums_list'][$i]['category_name'].'</div> | |||||
<div class="hc2" style="width: 80px"> </div> | |||||
<div class="hc3" style="width: 80px"> </div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Forum name</div> | |||||
<div class="tc2 tab_desc" style="width: 80px">Topics</div> | |||||
<div class="tc3 tab_desc" style="width: 80px">Posts</div> | |||||
<div class="tc4 tab_desc">Last Post</div> | |||||
</div>'; | |||||
} | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1"><a href="index.php?mode=viewforum&id='.$this->TPL['forums_list'][$i]['forum_id'].'" class="sect">'.$this->TPL['forums_list'][$i]['forum_name'].'</a><br><span class="fsmall">'.$this->TPL['forums_list'][$i]['forum_desc'].'</span></div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc2" style="width: 80px">'.$this->TPL['forums_list'][$i]['topic_count'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3" style="width: 80px">'.$this->TPL['forums_list'][$i]['post_count'].'</div>'."\n"; | |||||
if ($this->TPL['forums_list'][$i]['lastpost_post_id'] != null) | |||||
{ | |||||
$lastpost = '<span class="fsmall"><span style="font-weight: bold">'.$this->TPL['forums_list'][$i]['lastpost_date'].'</span><br><a href="index.php?mode=viewtopic&id='.$this->TPL['forums_list'][$i]['lastpost_topic_id'].'#p'.$this->TPL['forums_list'][$i]['lastpost_post_id'].'" style="font-weight: bold">Topic #'.$this->TPL['forums_list'][$i]['lastpost_topic_id'].'</a>: '; | |||||
if ($this->TPL['forums_list'][$i]['lastpost_user_id'] != null) | |||||
$lastpost .= '<a href="index.php?mode=viewprofile&id='.$this->TPL['forums_list'][$i]['lastpost_user_id'].'">'.$this->colorRank($this->TPL['forums_list'][$i]['lastpost_nick'], $this->TPL['forums_list'][$i]['lastpost_user_rank']).'</a>'; | |||||
else | |||||
$lastpost .= 'Anonymous'; | |||||
$lastpost .= '</span>'; | |||||
} | |||||
else | |||||
{ | |||||
$lastpost = 'No posts'; | |||||
} | |||||
echo "\t\t\t".'<div class="tc4">'.$lastpost.'</div>'."\n"; | |||||
echo "\t\t".'</div>'."\n"; | |||||
$items++; | |||||
} | |||||
} | |||||
if ($items > 0) | |||||
echo '</div>'; | |||||
else | |||||
{ | |||||
echo '<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4">Forum message</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4">No forums</div> | |||||
</div> | |||||
</div>'; | |||||
} | |||||
?> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4">Statistics</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4" style="text-align: left"> | |||||
Our users have written <span style="font-weight: bold"><?= $this->TPL['posts_count']; ?></span> posts.<br> | |||||
We have <span style="font-weight: bold"><?= $this->TPL['users_count']; ?></span> unique users.<br> | |||||
Last registered user: <a href="index.php?mode=viewprofile&id=<?= $this->TPL['last_user']['user_id']; ?>" style="font-weight: bold"><?= $this->TPL['last_user']['nick']; ?></a><br> | |||||
Users ranks: <a href="index.php?mode=userlist&rank=admin"><span class="fadmin">Admin</span></a> • <a href="index.php?mode=userlist&rank=mod"><span class="fmod">Mod</span></a> • User<br> | |||||
This forum is browsing by <span style="font-weight: bold"><?= $this->TPL['logged_users_count']; ?></span> logged users(list):<br> | |||||
<? | |||||
if ($this->TPL['logged_users_count'] == 0) echo 'none.'; | |||||
else | |||||
for ($i=0; $i<count($this->TPL['logged_users']); $i++) | |||||
{ | |||||
echo '<a href="index.php?mode=viewprofile&id='.$this->TPL['logged_users'][$i]['user_id'].'">'.$this->colorRank($this->TPL['logged_users'][$i]['nick'], $this->TPL['logged_users'][$i]['rank']).'</a>'; | |||||
if ($i<count($this->TPL['logged_users'])-1) | |||||
echo ', '; | |||||
} | |||||
?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,67 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<div id="content"> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Move topic to another forum</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Topic title: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['topic_info']['topic_title']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Topic is in forum: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<span style="font-weight: bold"><?= $this->TPL['topic_info']['forum_name']; ?></span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Select a new forum: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<select name="forum_id"> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['forums_list']); $i++) | |||||
{ | |||||
$sel = ($this->TPL['forums_list'][$i]['forum_id'] == $this->TPL['topic_info']['forum_id']) ? 'selected="selected"' : ''; | |||||
echo '<option value="'.$this->TPL['forums_list'][$i]['forum_id'].'" '.$sel.'>'.$this->TPL['forums_list'][$i]['name'].'</option>'; | |||||
} | |||||
?> | |||||
</select> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="hidden" name="confirmed" id="confirmed" value="true"> | |||||
<input type="submit" value="Move" style="font-weight: bold"> | |||||
<input type="submit" name="rejected" value="Cancel"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,6 @@ | |||||
<div id="footer"> | |||||
Powered by <span style="font-weight:bold">µForum ©</span> 2007-2015 <a href="http://www.pioder.pl" style="font-weight: bold">PioDer</a> | |||||
</div> | |||||
</div> | |||||
</body> | |||||
</html> |
@ -0,0 +1,56 @@ | |||||
<!DOCTYPE html> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |||||
<title><?= $this->TPL['meta_title']; ?></title> | |||||
<meta name="author" content="Piotr Dergun" /> | |||||
<meta name="generator" content="medit/1.2.0" /> | |||||
<link rel="stylesheet" href="templates/styles.css" type="text/css" /> | |||||
<link rel="stylesheet" href="templates/main.css" type="text/css" /> | |||||
</head> | |||||
<body> | |||||
<div id="container"> | |||||
<div id="top"> | |||||
<div style="width: 30%; float:left"><img src="templates/images/uf_logo.svg" height="130" alt="µF logo"></div> | |||||
<div style="width: 70%; float: left"> | |||||
<h1><?= $this->TPL['forum_name']; ?></h1> | |||||
<h2><?= $this->TPL['forum_desc']; ?></h2> | |||||
</div> | |||||
</div> | |||||
<div id="menu"> | |||||
<ul> | |||||
<li><a href="index.php">Main Page</a></li> | |||||
<li><a href="index.php?mode=userlist">Userlist</a></li> | |||||
<? if ( $this->TPL['is_logged']) { ?> | |||||
<li><a href="index.php?mode=myprofile">Profile</a></li> | |||||
<li><a href="index.php?mode=logout">Log out</a></li> | |||||
<? } else { ?> | |||||
<li><a href="index.php?mode=register">Register</a></li> | |||||
<li><a href="index.php?mode=login">Log in</a></li> | |||||
<? } ?> | |||||
</ul> | |||||
</div> | |||||
<br> | |||||
<div id="userpanel"> | |||||
<? if ( $this->TPL['is_logged']) { ?> | |||||
You are logged as: <span style="font-weight: bold"><?= $this->TPL['my_nick'] ?></span> | |||||
<? } else { ?> | |||||
Welcome Guest! You are not logged. | |||||
<? } ?><br> | |||||
Actual time: <span style="font-weight: bold"><?= $this->TPL['actual_time']; ?></span><br> | |||||
<? IF ($this->TPL['my_rank'] == RANK_ADMIN ) { ?> | |||||
<a href="index.php?mode=admin" style="font-weight: bold">Go to ACP »</a> | |||||
<? } ?> | |||||
</div> | |||||
<br> | |||||
<div id="navi_bar"> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['nav']); $i++) | |||||
{ | |||||
echo '<a href="'.$this->TPL['nav'][$i]['url'].'" class="navigation">'.$this->TPL['nav'][$i]['name'].'</a>'; | |||||
if ($i < count($this->TPL['nav'])-1) | |||||
echo ' » '; | |||||
} | |||||
?> | |||||
</div> |
@ -0,0 +1,126 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<script type="text/javascript" src="templates/scripts/posting.js"> | |||||
</script> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<? if (isset($this->TPL['preview'])) { ?> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4">Post preview</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 post_content tc4" style="height: 150px"> | |||||
<?= BBCode($this->TPL['preview']); ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<br> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
<? if (isset($this->TPL['topic'])) { ?> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Topic information</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Title: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="100" name="topic" id="topic" value="<?= $this->TPL['topic']; ?>" required pattern=".{3,}" required title="3 characters minimum" style="width: 490px"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<br> | |||||
<? } ?> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Post information</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc2"> | |||||
Emoticons: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<p id="js_msg" style="color: red; font-weight: bold"> | |||||
Turn on JavaScript to enable BBCode and emoticons buttons. | |||||
</p> | |||||
<div id="bbcode_buttons" style="display:none"> | |||||
<input type="button" style="font-weight: bold" onClick="bbTag(0)" value="B"> | |||||
<input type="button" style="font-style: italic"onClick="bbTag(2)" value="I"> | |||||
<input type="button" style="text-decoration: underline"onClick="bbTag(4)" value="U"> | |||||
<input type="button" style="text-decoration: line-through" onClick="bbTag(6)" value="S"> | |||||
<input type="button" onClick="bbTag(8)" value="URL"> | |||||
<input type="button" onClick="bbTag(10)" value="Center"> | |||||
<input type="button" onClick="bbTag(12)" value="Quote"> | |||||
<input type="button" onClick="bbTag(14)" value="Code"> | |||||
<input type="button" onClick="bbTag(16)" value="List"> | |||||
<input type="button" onClick="bbTag(18)" value="Color"> | |||||
<input type="color" id="text_color"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc2"> | |||||
<div id="emoticons_buttons" style="display: none"> | |||||
<img src="images/smiles/smile.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':)')" alt=":)"> | |||||
<img src="images/smiles/cry.png" onmouseover="this.style.cursor='hand';" onclick="insertSmile(';(')" alt=";("> | |||||
<img src="images/smiles/sad.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':(')" alt=":("> | |||||
<img src="images/smiles/curve.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':curve:')" alt=":/"> | |||||
<br> | |||||
<img src="images/smiles/neutral.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':|')" alt=":|"> | |||||
<img src="images/smiles/lol.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':lol:')" alt=":lol:"> | |||||
<img src="images/smiles/wink.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(';)')" alt=";)"> | |||||
<img src="images/smiles/cool.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':cool:')" alt=":cool:"> | |||||
<br> | |||||
<img src="images/smiles/exclaim.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':!:')" alt=":!:"> | |||||
<img src="images/smiles/tongue.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':P')" alt=":P"> | |||||
<img src="images/smiles/roll.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':roll:')" alt=":roll:"> | |||||
<img src="images/smiles/big_smile.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':D')" alt=":>"> | |||||
<br> | |||||
<img src="images/smiles/evil.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':evil:')" alt=":evil:"> | |||||
<img src="images/smiles/yikes.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':o')" alt=":o"> | |||||
<img src="images/smiles/mad.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':mad:')" alt=":mad:"> | |||||
<img src="images/smiles/redface.gif" onmouseover="this.style.cursor='hand';" onclick="insertSmile(':redface:')" alt=":redface:"> | |||||
</div> | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<textarea name="post" id="post" maxlength="5000" required title="3 characters minimum"><?= $this->TPL['post']; ?></textarea> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="reset" value="Reset"> | |||||
<input type="submit" name="preview" value="Preview"> | |||||
<input type="submit" value="Submit"> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
<script type="text/javascript"> | |||||
document.getElementById('js_msg').style.display = 'none'; | |||||
document.getElementById('bbcode_buttons').style.display = 'block'; | |||||
document.getElementById('emoticons_buttons').style.display = 'block'; | |||||
</script> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,83 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<script src="templates/scripts/nick.js" type="text/javascript"></script> | |||||
<script type="text/javascript"> | |||||
function checkForm() | |||||
{ | |||||
value = document.getElementById('passwd').value; | |||||
value2 = document.getElementById('passwd_confirm').value; | |||||
if (value != value2) | |||||
{ | |||||
alert("Password do not match!"); | |||||
return false; | |||||
} | |||||
if (document.getElementById('nick-inuse').style.display == 'inline') | |||||
{ | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
</script> | |||||
<div id="content"> | |||||
<? if ($this->TPL['error_msg'] != '') { ?> | |||||
<div class="error_form"> | |||||
<?= $this->TPL['error_msg']; ?> | |||||
</div> | |||||
<? } ?> | |||||
<br><form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post" onsubmit="return checkForm();"> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Register</div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Nick: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="text" maxlength="30" name="nick" id="nick" value="<?= $this->TPL['nick']; ?>" required pattern=".{3,}" title="3 characters minimum" onblur="checkNick()"> | |||||
<span id="nick-inuse" style="display: none; color: red; font-weight: bold">Nick is in use. Type another one.</span> | |||||
<span id="nick-free" style="display: none; color: green; font-weight: bold">Nick is free.</span> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd" id="passwd" value="" required pattern=".{8,}" title="8 characters minimum"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Confirm password: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="password" name="passwd_confirm" id="passwd_confirm" value="" required pattern=".{8,}" title="8 characters minimum"> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
Email address: | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="email" name="email" id="email" value="<?= $this->TPL['email']; ?>" required> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
| |||||
</div> | |||||
<div class="tc4 rc"> | |||||
<input type="submit" value="Create account"> | |||||
</div> | |||||
</div> | |||||
</div></form> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,33 @@ | |||||
function create_cookie(name, value, days) | |||||
{ | |||||
if (days) | |||||
{ | |||||
var date = new Date(); | |||||
date.setTime(date.getTime()+(days*24*3600*1000)); | |||||
var expires ="; expires="+date.toGMTString(); | |||||
} | |||||
else | |||||
var expires = ""; | |||||
document.cookie += name+"="+value+expires+"; path=/"; | |||||
} | |||||
function read_cookie(name) | |||||
{ | |||||
var nameEQ = name + "="; | |||||
var ca = document.cookie.split(';'); | |||||
for (var i=0; i< ca.length; i++) | |||||
{ | |||||
var c = ca[i]; | |||||
while (c.charAt(0) == ' ') c = c.substring(1, c.length); | |||||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); | |||||
} | |||||
return null; | |||||
} | |||||
function erase_cookie(name) | |||||
{ | |||||
create_cookie(name, "", -1); | |||||
} |
@ -0,0 +1,62 @@ | |||||
var ajax; | |||||
function init() { | |||||
initAjax(); | |||||
} | |||||
function initAjax() { | |||||
try | |||||
{ | |||||
ajax = new XMLHttpRequest(); | |||||
} | |||||
catch(e) // IE <= 6 | |||||
{ | |||||
var XmlHttpVersions = [ | |||||
'MSXML2.XMLHTTP.6.0', | |||||
'MSXML2.XMLHTTP.5.0', | |||||
'MSXML2.XMLHTTP.4.0', | |||||
'MSXML2.XMLHTTP.3.0', | |||||
'MSXML2.XMLHTTP', | |||||
'Microsoft.XMLHTTP' | |||||
]; | |||||
for (var i=0; i < XmlHttpVersions.length && null === ajax; i++) | |||||
{ | |||||
try | |||||
{ | |||||
ajax = new ActiveXObject(XmlHttpVersions[i]); | |||||
} catch (e) {} | |||||
} | |||||
if (null === ajax) | |||||
{ | |||||
throw new Error('AJAX Error'); | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
function response() { | |||||
if (ajax.readyState != 4 || ajax.status != 200) | |||||
return; | |||||
if (ajax.responseText == 'true') | |||||
{ | |||||
document.getElementById('nick-inuse').style.display = 'inline'; | |||||
document.getElementById('nick-free').style.display = 'none'; | |||||
} | |||||
else | |||||
{ | |||||
document.getElementById('nick-inuse').style.display = 'none'; | |||||
document.getElementById('nick-free').style.display = 'inline'; | |||||
} | |||||
} | |||||
function checkNick() { | |||||
if (ajax == null) | |||||
init(); | |||||
if (document.getElementById('nick').value == '') return 0; | |||||
ajax.onreadystatechange = response; | |||||
ajax.open('GET', 'index.php?mode=checknick&nick=' + document.getElementById('nick').value); | |||||
ajax.send(null); | |||||
} |
@ -0,0 +1,70 @@ | |||||
var bbcode = ['[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]', '[s]', '[/s]', '[url]', '[/url]', '[center]', '[/center]', '[quote]', '[/quote]', '[code]', '[/code]']; | |||||
function insertTag(first, second) | |||||
{ | |||||
postArea = document.getElementById('post'); | |||||
if (document.selection) // IE | |||||
{ | |||||
postArea.focus(); | |||||
sel = document.selection.createRange(); | |||||
sel.text = first + sel.text + second; | |||||
} | |||||
else if (postArea.selectionStart || postArea.selectionStart == '0') | |||||
{ | |||||
var startPos = postArea.selectionStart; | |||||
var endPos = postArea.selectionEnd; | |||||
if (startPos == endPos) | |||||
{ | |||||
if (first == bbcode[8]) | |||||
{ | |||||
var link = prompt('Type hyperlink address', 'http://'); | |||||
if (startPos != 0) | |||||
{ | |||||
postArea.value = postArea.value.substring(0, startPos) + '[url=' + link + '] ' + postArea.value.substring(startPos, endPos) + second + postArea.value.substring(endPos, postArea.value.length); | |||||
} | |||||
else | |||||
{ | |||||
postArea.value += '[url=' + link + '][/url]'; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
postArea.value += ' ' + first + second; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
postArea.value = postArea.value.substring(0, startPos) + first + postArea.value.substring(startPos, endPos) + second + postArea.value.substring(endPos, postArea.value.length); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
postArea.value += ' ' + first + second; | |||||
} | |||||
} | |||||
function bbTag(item) | |||||
{ | |||||
if(item < bbcode.length -1) | |||||
{ | |||||
insertTag(bbcode[item], bbcode[item+1]); | |||||
} | |||||
else | |||||
{ | |||||
switch(item) | |||||
{ | |||||
case 16: | |||||
var firstItem = prompt('Type first item list'); | |||||
document.getElementById('post').value += "[list]\n[*]"+firstItem+"\n[/list]"; | |||||
break; | |||||
case 18: | |||||
var color = document.getElementById('text_color').value;//prompt('Type font color', 'black'); | |||||
insertTag('[color='+color+']', '[/color]'); | |||||
} | |||||
} | |||||
} | |||||
function insertSmile(smile) | |||||
{ | |||||
document.getElementById('post').value += ' ' + smile; | |||||
} |
@ -0,0 +1,415 @@ | |||||
body { | |||||
font-family: Helvetica; | |||||
font-size: 11pt; | |||||
background-color: #E5E7E9; | |||||
} | |||||
#container { | |||||
width: 900px; | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
border-collapse: collapse; | |||||
border-radius: 10px; | |||||
} | |||||
a, a:visited { | |||||
text-decoration: none; | |||||
} | |||||
img { | |||||
border: 0px; | |||||
} | |||||
a:hover { | |||||
text-decoration: underline; | |||||
} | |||||
a { | |||||
color: #000000; | |||||
} | |||||
#container #top { | |||||
width: 100%; | |||||
vertical-align: middle; | |||||
padding-top: 20px; | |||||
border-bottom: 1px solid #777777; | |||||
border-top-left-radius: 10px; | |||||
border-top-right-radius: 10px; | |||||
} | |||||
#container #userpanel { | |||||
text-align: right; | |||||
font-size: 0.8em; | |||||
width: 100%; | |||||
} | |||||
#container #navi_bar { | |||||
padding-left: 10px; | |||||
text-align: left; | |||||
width: 98%; | |||||
word-wrap: break-word; | |||||
max-width: 98%; | |||||
} | |||||
#container #top h1 { | |||||
margin: 0px; | |||||
position: relative; | |||||
font-size: 36pt; | |||||
font-weight: bold; | |||||
} | |||||
#container #top h2 { | |||||
color: #005AE5; | |||||
font-size: 20px; | |||||
text-decoration: none; | |||||
font-weight: bold; | |||||
} | |||||
#container #footer { | |||||
width: 100%; | |||||
font-size: 8pt; | |||||
color: #FFFFFF; | |||||
height: 18px; | |||||
line-height: 18px; | |||||
border-bottom-left-radius: 5px; | |||||
border-bottom-right-radius: 5px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
#container #footer a { | |||||
color: #FFFFFF; | |||||
} | |||||
#contanier #footer a:visited { | |||||
color: #FFFFFF; | |||||
} | |||||
#container #content { | |||||
text-align: left; | |||||
min-height: 200px; | |||||
padding: 10px; | |||||
} | |||||
#container #content h3 { | |||||
margin-left: 20px; | |||||
color: gray; | |||||
font-size: 1.5em; | |||||
} | |||||
#container #menu { | |||||
text-align: center; | |||||
margin: 0 auto; | |||||
width: 100%; | |||||
height: 50px; | |||||
background-color: #99CCFF; | |||||
} | |||||
#container #menu ul { | |||||
list-style-type: none; | |||||
margin: 0px; | |||||
padding: 0px; | |||||
} | |||||
#container #menu li { | |||||
display: inline-block; | |||||
border-right: 1px #9A9A9A solid; | |||||
height: 37px; | |||||
width: 120px; | |||||
padding-top: 13px; | |||||
margin: auto -4px auto auto; | |||||
} | |||||
#container #menu li a { | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
font-family: Verdana; | |||||
font-size: 14px; | |||||
font-weight: bold; | |||||
} | |||||
#container #menu li:last-child { | |||||
border: 0px; | |||||
} | |||||
.sect { | |||||
color: #434354; | |||||
font-family: Verdana; | |||||
font-size: 10pt; | |||||
font-weight: bold; | |||||
text-decoration: none; | |||||
} | |||||
.navigation { | |||||
text-decoration: none; | |||||
font-size: 12px; | |||||
font-weight: bold; | |||||
} | |||||
.forum_table { | |||||
display: table; | |||||
width: 100%; | |||||
border-collapse: separate; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.fsmall { | |||||
color: #434354; | |||||
font-size: 8pt; | |||||
text-decoration: none; | |||||
} | |||||
.row { | |||||
display: table-row; | |||||
width: 100%; | |||||
} | |||||
.rcol { | |||||
display: table-caption; | |||||
border-collapse: collapse; | |||||
background-color: #e1f0ff; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
border-top: 0px; | |||||
caption-side: bottom; | |||||
text-align: center; | |||||
font-style: italic; | |||||
} | |||||
.tc1, .tc2, .tc3, .tc4 { | |||||
display: table-cell; | |||||
background-color: #F0F8FF; | |||||
padding: 3px; | |||||
vertical-align: middle; | |||||
word-wrap: break-word; | |||||
} | |||||
.tc1 { | |||||
max-width: 150px; | |||||
} | |||||
.tc2, .tc3 { | |||||
vertical-align: middle; | |||||
text-align: center; | |||||
max-width: 150px; | |||||
} | |||||
.tc4 { | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 150px; | |||||
max-width: 150px; | |||||
} | |||||
.hc1, .hc2, .hc3, .hc4 { | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
background-color: yellow; | |||||
vertical-align: middle; | |||||
display: table-cell; | |||||
padding-left: 15px; | |||||
height: 30px; | |||||
word-wrap: break-word; | |||||
} | |||||
.hc1 { | |||||
border-top-left-radius: 10px; | |||||
max-width: 150px; | |||||
} | |||||
.hc4 { | |||||
border-top-right-radius: 10px; | |||||
width: 150px; | |||||
} | |||||
.tab_desc { | |||||
text-align: center; | |||||
font-weight: bold; | |||||
background-image: url('images/td_beam_top.gif'); | |||||
height: 19px; | |||||
} | |||||
.lc { | |||||
width: 30%; | |||||
text-align: right; | |||||
margin-right: 10px; | |||||
} | |||||
.rc { | |||||
width: 70%; | |||||
text-align: left; | |||||
margin-left: 10px; | |||||
} | |||||
.rc input[type="text"], input[type="password"], input[type="email"] { | |||||
width: 200px; | |||||
} | |||||
input[type="button"], input[type="reset"], input[type="submit"] { | |||||
border-radius: 5px; | |||||
padding: 5px; | |||||
min-width: 30px; | |||||
font-size: 12px; | |||||
cursor: pointer; | |||||
} | |||||
#signature { | |||||
width: 490px; | |||||
height: 60px; | |||||
resize: vertical; | |||||
} | |||||
#post { | |||||
width: 490px; | |||||
height: 180px; | |||||
resize: vertical; | |||||
} | |||||
#signature, #post, input[type="text"], input[type="password"], input[type="email"], select { | |||||
border-radius: 5px; | |||||
border: 1px solid #C7E2FB; | |||||
min-height: 20px; | |||||
font-size: 12px; | |||||
background-color: #FFFFE8; | |||||
} | |||||
.error_form { | |||||
margin: 0 auto; | |||||
text-align: center; | |||||
width: 90%; | |||||
border: 1px solid #FF0000; | |||||
background-color: #FFCC99; | |||||
padding: 10px; | |||||
color: #FF0000; | |||||
border-radius: 10px; | |||||
font-weight: bold; | |||||
} | |||||
.fadmin, .fmod { | |||||
font-weight: bold; | |||||
} | |||||
.fmod { | |||||
color: darkgreen; | |||||
} | |||||
.fadmin { | |||||
color: orange; | |||||
} | |||||
.btn { | |||||
display: block; | |||||
width: 90px; | |||||
height: 30px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 1em; | |||||
border-radius: 10px; | |||||
line-height: 30px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.btn:hover, .btn_small:hover { | |||||
color: #FFFFFF; | |||||
} | |||||
.btn_small { | |||||
display: block; | |||||
width: 60px; | |||||
height: 20px; | |||||
color: #FFFFFF; | |||||
font-weight: bold; | |||||
text-align: center; | |||||
font-size: 0.8em; | |||||
border-radius: 10px; | |||||
margin: 0 auto; | |||||
line-height: 20px; | |||||
margin-bottom: 5px; | |||||
box-shadow: 0 8px 6px -6px black; | |||||
} | |||||
.ut { | |||||
padding: 0px; | |||||
border-left: 0px; | |||||
} | |||||
.tc2 .forum_table .tc1, .tc2 .forum_table .tc2, .tc2 .forum_table .tc3 { | |||||
border-bottom: 0px !important; | |||||
border-top: 1px solid lightgray; | |||||
} | |||||
.mod_pool { | |||||
margin: 0 auto; | |||||
width: 90%; | |||||
background-color: #FFFF99; | |||||
text-align: center; | |||||
padding: 5px; | |||||
border: 1px solid orange; | |||||
border-radius: 10px; | |||||
} | |||||
hr { | |||||
border: 0; | |||||
border-bottom: 1px dashed #ccc; | |||||
background: #999; | |||||
width: 50%; | |||||
margin: 0; | |||||
margin-top: 5px; | |||||
} | |||||
.hcpost { | |||||
height: 10px; | |||||
} | |||||
.f_hc4 { | |||||
text-align: right; | |||||
padding-right: 10px; | |||||
} | |||||
.post_3c { | |||||
width: 120px; | |||||
} | |||||
.f_tc2 { | |||||
width: 120px; | |||||
vertical-align: top; | |||||
height: 150px; | |||||
text-align: center; | |||||
} | |||||
.topic_mod { | |||||
width: 80px; | |||||
float: right; | |||||
} | |||||
.p_uinfo { | |||||
width: 38%; | |||||
} | |||||
.post_content { | |||||
vertical-align: top; | |||||
position: relative; | |||||
text-align: left; | |||||
max-width: 500px; | |||||
} | |||||
.row .hcpost a { | |||||
color: #FFFFFF; | |||||
} | |||||
.qpost { | |||||
background-color: #DDDAC5; | |||||
width: 95%; | |||||
font-style: italic; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} | |||||
.cpost { | |||||
background-color: #C5DDCC; | |||||
width: 95%; | |||||
font-family: Courier New; | |||||
box-shadow: 7px 8px 6px -3px gray; | |||||
padding: 5px; | |||||
} |
@ -0,0 +1,65 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<br /> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1">Users list</div> | |||||
<div class="hc2" style="width: 180px"> </div> | |||||
<div class="hc3" style="width: 180px"> </div> | |||||
<div class="hc4" style="width: 100px"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Username</div> | |||||
<div class="tc3 tab_desc" style="width: 180px">Joined</div> | |||||
<div class="tc3 tab_desc" style="width: 180px">Last visit</div> | |||||
<div class="tc4 tab_desc" style="width: 100px">Posts</div> | |||||
</div> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['users_list']); $i++) | |||||
{ | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1 tc3"> | |||||
<a href="index.php?mode=viewprofile&id='.$this->TPL['users_list'][$i]['user_id'].'"> | |||||
'.$this->colorRank($this->TPL['users_list'][$i]['nick'], $this->TPL['users_list'][$i]['rank']).' | |||||
</a> | |||||
</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3">'.$this->TPL['users_list'][$i]['regdate'].'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3">'.(($this->TPL['users_list'][$i]['lastvisit']!= null) ? $this->TPL['users_list'][$i]['lastvisit'] : 'Never').'</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc4" style="width: 100px">'.$this->TPL['users_list'][$i]['post_count'].'</div>'."\n"; | |||||
echo "\t\t".'</div>'."\n"; | |||||
} | |||||
?> | |||||
</div> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4 hcpost">Options</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4"> | |||||
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post"> | |||||
Sort users by: | |||||
<select name="sort_type"> | |||||
<option value="regdate" <?= $this->TPL['regdate_selected']; ?>>Registration date</option> | |||||
<option value="lastvisit" <?= $this->TPL['lastvisit_selected']; ?>>Lastvisit</option> | |||||
<option value="nick" <?= $this->TPL['username_selected']; ?>>Username</option> | |||||
<option value="post_count" <?= $this->TPL['posts_selected']; ?>>Posts count</option> | |||||
</select> | |||||
| |||||
<input type="checkbox" name="sort_desc" value="Delete avatar" <?= $this->TPL['desc_checked']; ?> />Descending | |||||
<input type="submit" value="Sort"> | |||||
</form> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4">Select only users with rank: | |||||
<a href="index.php?mode=userlist&rank=admin"><?= $this->getRankLevel(RANK_ADMIN); ?></a> • | |||||
<a href="index.php?mode=userlist&rank=mod"><?= $this->getRankLevel(RANK_MOD); ?></a> • | |||||
<a href="index.php?mode=userlist&rank=user"><?= $this->getRankLevel(RANK_USER); ?></a></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,74 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['forum_info']['locked'] == false) { ?> | |||||
<a href="index.php?mode=newtopic&id=<?= $_GET['id']; ?>" class="btn">New Topic</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
<br /> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"><?= $this->TPL['f_name']; ?></div> | |||||
<div class="hc2" style="width: 150px"> </div> | |||||
<div class="hc3" style="width: 80px"> </div> | |||||
<div class="hc4"> </div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tab_desc">Topic name</div> | |||||
<div class="tc2 tab_desc" style="width: 150px">Author</div> | |||||
<div class="tc3 tab_desc" style="width: 80px">Replies</div> | |||||
<div class="tc4 tab_desc">Last Post</div> | |||||
</div> | |||||
<? | |||||
for ($i=0; $i<count($this->TPL['topics_list']); $i++) | |||||
{ | |||||
echo '<div class="row">'."\n"; | |||||
echo "\t\t\t".'<div class="tc1"><a href="index.php?mode=viewtopic&id='.$this->TPL['topics_list'][$i]['topic_id'].'" class="sect">'.$this->TPL['topics_list'][$i]['topic_title'].'</a></div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc2" style="width: 150px">'; | |||||
if ($this->TPL['topics_list'][$i]['user_id'] != null) | |||||
echo '<a href="index.php?mode=viewprofile&id='.$this->TPL['topics_list'][$i]['user_id'].'">'.$this->colorRank($this->TPL['topics_list'][$i]['user_nick'], $this->TPL['topics_list'][$i]['user_rank']).'</a>'; | |||||
else | |||||
echo 'Anonymous'; | |||||
echo '</div>'."\n"; | |||||
echo "\t\t\t".'<div class="tc3" style="width: 80px">'.($this->TPL['topics_list'][$i]['post_count']-1).'</div>'."\n"; | |||||
if ($this->TPL['topics_list'][$i]['lastpost_post_id'] != null) | |||||
{ | |||||
$lastpost = '<span class="fsmall"> <span style="font-weight: bold">'.$this->TPL['topics_list'][$i]['lastpost_date'].'</span><br><a href="index.php?mode=viewtopic&id='.$this->TPL['topics_list'][$i]['topic_id'].'#p'.$this->TPL['topics_list'][$i]['lastpost_post_id'].'" style="font-weight: bold">Post #'.$this->TPL['topics_list'][$i]['lastpost_post_id'].'</a>: '; | |||||
if ($this->TPL['topics_list'][$i]['lastpost_user_id'] != null) | |||||
$lastpost .= '<a href="index.php?mode=viewprofile&id='.$this->TPL['topics_list'][$i]['lastpost_user_id'].'">'.$this->colorRank($this->TPL['topics_list'][$i]['lastpost_user_nick'], $this->TPL['topics_list'][$i]['lastpost_user_rank']).'</a>'; | |||||
else | |||||
$lastpost .= 'Anonymous'; | |||||
$lastpost .= '</span>'; | |||||
} | |||||
else | |||||
{ | |||||
$lastpost = 'No posts.'; | |||||
} | |||||
echo "\t\t\t".'<div class="tc4">'.$lastpost.'</div>'."\n"; | |||||
echo "\t\t".'</div>'."\n"; | |||||
} | |||||
?> | |||||
<? | |||||
if (count($this->TPL['topics_list']) == 0) | |||||
{ | |||||
echo '<div class="rcol">No topics in this forum.</div>'; | |||||
} | |||||
?> | |||||
</div> | |||||
<br> | |||||
<? if ($this->TPL['forum_info']['locked'] == false) { ?> | |||||
<a href="index.php?mode=newtopic&id=<?= $_GET['id']; ?>" class="btn">New Topic</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,65 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<script src="templates/scripts/nick.js" type="text/javascript"></script> | |||||
<div id="content"> | |||||
<br> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1"><?= $this->TPL['user_info']['nick']; ?></div> | |||||
<div class="hc4 hcpost f_hc4"> | |||||
<? if ($_GET['id'] == $this->TPL['logged_id']) {?> | |||||
<a href="index.php?mode=editprofile">Edit my profile »</a> | |||||
<? } else { ?> <? } ?> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc2"> | |||||
<? | |||||
if ($this->TPL['user_info']['avatar'] != null) | |||||
echo '<img src="'.$this->TPL['user_info']['avatar'].'" alt="user avatar">'; | |||||
else | |||||
echo '<img src="templates/images/no_av.gif" alt="user avatar">'; | |||||
?> | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
Joined: <span style="font-weight: bold"><?= $this->TPL['user_info']['regdate']; ?></span><br> | |||||
Last visit: <span style="font-weight: bold"><?= (($this->TPL['user_info']['lastvisit']!= null) ? $this->TPL['user_info']['lastvisit'] : 'Never') ?></span><br> | |||||
Posts: <span style="font-weight: bold"><?= $this->TPL['user_info']['post_count']; ?></span>; <span style="font-weight: bold"><?= $this->TPL['post_ratio']; ?>%</span> of total.<br> | |||||
Location: <span style="font-weight: bold"><?= $this->TPL['user_info']['location']; ?></span><br> | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 lc"> | |||||
<a href="mailto:<?= $this->TPL['user_info']['email']; ?>" class="btn_small">Email</a> | |||||
</div> | |||||
<div class="tc4 rc"> | |||||
Status: <img src="templates/images/<? echo (($this->TPL['user_info']['user_IP']) ? 'online' : 'offline'); ?>.gif" alt="user status"><br> | |||||
Rank: <span style="font-weight: bold"><?= $this->getRankLevel($this->TPL['user_info']['rank']); ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<br> | |||||
<? if ($this->TPL['user_info']['signature'] != null) { ?> | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hc4"><?= $this->TPL['user_info']['nick']; ?>'s signature</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4" style="text-align: left; max-width: 870px"> | |||||
<span class="fsmall"><?= BBCode($this->TPL['user_info']['signature']); ?></span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? } ?> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |
@ -0,0 +1,127 @@ | |||||
<? require_once('./templates/overall_header.tpl.php'); ?> | |||||
<div id="content"> | |||||
<? if ($this->TPL['topic_info']['forum_locked'] == false && $this->TPL['topic_info']['topic_locked'] == false) { ?> | |||||
<a href="index.php?mode=reply&id=<?= $_GET['id']; ?>" class="btn">Reply</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
<br /> | |||||
<?php | |||||
for ($i=0; $i<count($this->TPL['posts_list']); $i++) | |||||
{ | |||||
echo ' | |||||
<div class="forum_table"> | |||||
<div class="row"> | |||||
<div class="hc1 hcpost" style="width: 120px"> </div> | |||||
<div class="hc2 hcpost"> </div> | |||||
<div id="p'.$this->TPL['posts_list'][$i]['post_id'].'" class="hc4 hcpost f_hc4 post_3c">Post <a href="index.php?mode=viewtopic&id='.$_GET['id'].'#p'.$this->TPL['posts_list'][$i]['post_id'].'">#'.($i+1).'</a></div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 f_tc2" style="width: 120px">'; | |||||
if ($this->TPL['posts_list'][$i]['nick'] != null) | |||||
echo '<a href="index.php?mode=viewprofile&id='.$this->TPL['posts_list'][$i]['user_id'].'">'.$this->colorRank($this->TPL['posts_list'][$i]['nick'], $this->TPL['posts_list'][$i]['user_rank']).'</a>'; | |||||
else | |||||
echo 'Anonymous'; | |||||
echo '<br>'; | |||||
if ($this->TPL['posts_list'][$i]['avatar'] != null) | |||||
echo '<img src="'.$this->TPL['posts_list'][$i]['avatar'].'" alt="user avatar">'; | |||||
else | |||||
echo '<img src="templates/images/no_av.gif" alt="user avatar">'; | |||||
echo ' | |||||
</div> | |||||
<div class="tc3 post_content" >'; | |||||
echo BBCode($this->TPL['posts_list'][$i]['content']); | |||||
if ($this->TPL['posts_list'][$i]['signature'] != null) | |||||
echo ' | |||||
<br><br> | |||||
<hr> | |||||
<span class="fsmall">'.BBCode($this->TPL['posts_list'][$i]['signature']).'<br><br></span>'; | |||||
echo ' | |||||
</div> | |||||
<div class="tc4 post_3c f_tc2" style="width: 120px"> | |||||
<span class="fsmall">Posted: <span style="font-weight: bold">'.$this->TPL['posts_list'][$i]['date'].'</span></span><br> | |||||
<a href="index.php?mode=quote&id='.$_GET['id'].'&q='.$this->TPL['posts_list'][$i]['post_id'].'" class="btn_small">Quote</a>'; | |||||
if ($this->TPL['my_id'] == $this->TPL['posts_list'][$i]['user_id'] && $this->TPL['posts_list'][$i]['user_id'] != null) | |||||
echo ' | |||||
<a href="index.php?mode=editpost&id='.$this->TPL['posts_list'][$i]['post_id'].'" class="btn_small">Edit</a>'; | |||||
echo '<br>'; | |||||
if ($this->TPL['my_rank'] >= RANK_MOD) | |||||
{ | |||||
echo ' | |||||
<div class="mod_pool"> | |||||
<span style="font-weight: bold" class="fsmall">Mod options<br><br></span> | |||||
<a href="index.php?mode=editpost&id='.$this->TPL['posts_list'][$i]['post_id'].'" class="btn_small">Edit</a>'; | |||||
if ($this->TPL['topic_info']['post_count'] > 1) | |||||
echo ' | |||||
<a href="index.php?mode=moderate&submode=deletepost&id='.$this->TPL['posts_list'][$i]['post_id'].'" class="btn_small" style="width: 35px">X</a>'; | |||||
echo '</div>'; | |||||
} | |||||
echo ' | |||||
</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 post_3c tc2"> | |||||
<span class="fsmall">Status: <img src="templates/images/'.(($this->TPL['posts_list'][$i]['user_IP']) ? 'online' : 'offline').'.gif" alt="user status"></span> | |||||
</div> | |||||
<div class="tc2 ut"> | |||||
<div class="forum_table" style="box-shadow: none"> | |||||
<div class="tc2 "> | |||||
<span class="fsmall">Posts: <span style="font-weight: bold">'.(($this->TPL['posts_list'][$i]['user_post_count']!== null) ? $this->TPL['posts_list'][$i]['user_post_count'] : '0').'</span></span> | |||||
</div> | |||||
<div class="tc2 p_uinfo"> | |||||
<span class="fsmall">Joined: <span style="font-weight: bold">'.(($this->TPL['posts_list'][$i]['regdate']!= null) ? $this->TPL['posts_list'][$i]['regdate'] : 'Never').'</span></span> | |||||
</div> | |||||
<div class="tc3 p_uinfo"> | |||||
<span class="fsmall">Last visit: <span style="font-weight: bold">'.(($this->TPL['posts_list'][$i]['lastvisit']!= null) ? $this->TPL['posts_list'][$i]['lastvisit'] : 'Never').'</span></span> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="tc4 post_3c"><span class="fsmall">Rank: '.$this->getRankLevel($this->TPL['posts_list'][$i]['user_rank']).'</span></div> | |||||
</div> | |||||
</div> | |||||
<br>'; | |||||
} | |||||
?> | |||||
<? if ($this->TPL['topic_info']['forum_locked'] == false && $this->TPL['topic_info']['topic_locked'] == false) { ?> | |||||
<a href="index.php?mode=reply&id=<?= $_GET['id']; ?>" class="btn">Reply</a> | |||||
<? } else { ?> | |||||
<div class="btn"> | |||||
Locked | |||||
</div> | |||||
<? } ?> | |||||
<? if ($this->TPL['my_rank'] >= RANK_MOD) { ?> | |||||
<div class="forum_table topic_mod" style=""> | |||||
<div class="row"> | |||||
<div class="hc1 hc4 hcpost" style="padding: 0px; text-align: center">Actions</div> | |||||
</div> | |||||
<div class="row"> | |||||
<div class="tc1 tc4"> | |||||
<a href="index.php?mode=moderate&submode=deletetopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/delete.gif" alt="delete"> | |||||
</a> | |||||
<a href="index.php?mode=moderate&submode=locktopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/<? if ($this->TPL['topic_info']['topic_locked']) echo 'un'; ?>lock.gif" alt="lock"> | |||||
</a> | |||||
<a href="index.php?mode=moderate&submode=movetopic&id=<?= $_GET['id']; ?>"> | |||||
<img src="templates/images/move.gif" alt="move"> | |||||
</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<? } ?> | |||||
<div style="clear: both"> </div> | |||||
</div> | |||||
<? require_once('./templates/overall_footer.tpl.php'); ?> |