added feature: stick/unstick topic

This commit is contained in:
2015-02-15 17:27:06 +01:00
parent bf23339cfe
commit 9bae4628a0
9 changed files with 40 additions and 4 deletions

View File

@@ -164,6 +164,7 @@ class MainController extends Controller
{
case 'deletetopic':
case 'locktopic':
case 'sticktopic':
case 'movetopic':
$t = $this->getModel('PostsModel')->getTopic($_GET['id']);
@@ -232,6 +233,19 @@ class MainController extends Controller
}
$lockv = true;
break;
case 'sticktopic':
if ($t['topic_sticky'] == false)
{
$this->getModel('PostsModel')->stickTopic($_GET['id']);
$this->getView('MainView')->forum_message('Topic sticked. Redirecting...', buildURL('index.php?mode=viewtopic&id='.$_GET['id']));
}
else
{
$this->getModel('PostsModel')->stickTopic($_GET['id'], false);
$this->getView('MainView')->forum_message('Topic unsticked. Redirecting...', buildURL('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!', buildURL('index.php?mode=viewtopic&id='.$_GET['id']));
@@ -251,6 +265,7 @@ class MainController extends Controller
{
case 'deletetopic':
case 'locktopic':
case 'sticktopic':
case 'movetopic':
$this->forward(buildURL('index.php?mode=viewtopic&id='.$_GET['id']));
break;
@@ -276,6 +291,12 @@ class MainController extends Controller
else
$this->getView('MainView')->confirm_action('Do you want unlock topic <span style="font-weight: bold">#'.$_GET['id'].'</span>?');
break;
case 'sticktopic':
if ($t['topic_sticky'] == false)
$this->getView('MainView')->confirm_action('Do you want stick topic <span style="font-weight: bold">#'.$_GET['id'].'</span>?');
else
$this->getView('MainView')->confirm_action('Do you want unstick 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();

View File

@@ -45,7 +45,7 @@ class ForumsModel extends Model
public function getTopics($forum_id)
{
$out = $this->select(TOPICS_VIEW, '*', 'forum_id=\''.$forum_id.'\'', 'lastpost_post_id DESC');
$out = $this->select(TOPICS_VIEW, '*', 'forum_id=\''.$forum_id.'\'', 'sticky DESC,lastpost_post_id DESC');
if (count($out) > 0)
return $out;
else

View File

@@ -18,7 +18,7 @@ class PostsModel extends Model
{
$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
t.topic_id as topic_id, t.title as topic_title, t.sticky as topic_sticky, 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
@@ -82,6 +82,13 @@ class PostsModel extends Model
$this->db->query($query);
}
public function stickTopic($topic_id, $sticky = true)
{
$query = 'UPDATE '.TOPICS_TABLE.' SET sticky=\''.$sticky.'\' 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.'\';';