diff --git a/install/sql/mysql.sql b/install/sql/mysql.sql index affd2ecc5..bda589e8f 100644 --- a/install/sql/mysql.sql +++ b/install/sql/mysql.sql @@ -1270,6 +1270,7 @@ CREATE TABLE `bb_topics` ( `topic_reported` tinyint(1) NOT NULL default '0', `topic_dl_type` tinyint(1) NOT NULL default '0', `topic_last_post_time` int(11) NOT NULL default '0', + `topic_show_first_post` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (`topic_id`), KEY `forum_id` (`forum_id`), KEY `topic_last_post_id` (`topic_last_post_id`), diff --git a/upload/config.php b/upload/config.php index f709d5cd0..a7a115723 100644 --- a/upload/config.php +++ b/upload/config.php @@ -53,8 +53,8 @@ $bb_cfg = $tr_cfg = $page_cfg = array(); // Increase number of revision after update $bb_cfg['tp_version'] = '2.2 Beta'; -$bb_cfg['tp_release_state'] = 'R307'; -$bb_cfg['tp_release_date'] = '10-11-2011'; +$bb_cfg['tp_release_state'] = 'R308'; +$bb_cfg['tp_release_date'] = '12-11-2011'; // Database $charset = 'utf8'; diff --git a/upload/language/lang_english/lang_main.php b/upload/language/lang_english/lang_main.php index b6ac1436f..4210dd886 100644 --- a/upload/language/lang_english/lang_main.php +++ b/upload/language/lang_english/lang_main.php @@ -1693,3 +1693,9 @@ $lang['DL_ULR'] = 'ULR'; $lang['DL_STOPPED'] = 'stopped'; $lang['DL_UPD'] = 'upd: '; $lang['DL_INFO'] = 'shows data only for the current session'; + +// Post PIN +$lang['POST_PIN'] = 'Pin first post'; +$lang['POST_UNPIN'] = 'Unpin first post'; +$lang['POST_PINNED'] = 'First post pinned'; +$lang['POST_UNPINNED'] = 'First post unpinned'; diff --git a/upload/language/lang_russian/lang_main.php b/upload/language/lang_russian/lang_main.php index abdd638bd..324e0bdff 100644 --- a/upload/language/lang_russian/lang_main.php +++ b/upload/language/lang_russian/lang_main.php @@ -1701,3 +1701,9 @@ $lang['DL_ULR'] = 'ULR'; $lang['DL_STOPPED'] = 'Остановил Скачивание/Раздачу'; $lang['DL_UPD'] = 'Подключён: '; $lang['DL_INFO'] = 'показаны данные только за текущую сессию'; + +// Post PIN +$lang['POST_PIN'] = 'Закрепить первый пост'; +$lang['POST_UNPIN'] = 'Открепить первый пост'; +$lang['POST_PINNED'] = 'Первый пост закреплён'; +$lang['POST_UNPINNED'] = 'Первый пост откреплён'; diff --git a/upload/modcp.php b/upload/modcp.php index 20eade094..6d32ab552 100644 --- a/upload/modcp.php +++ b/upload/modcp.php @@ -194,6 +194,8 @@ switch ($mode) case 'unlock': case 'set_download': case 'unset_download': + case 'post_stick': + case 'post_unstick': if (empty($_POST['topic_id_list']) && empty($topic_id)) { @@ -743,6 +745,80 @@ switch ($mode) $template->set_filenames(array('body' => 'modcp.tpl')); break; + case 'post_pin': + case 'post_unpin': + $pin = ($mode == 'post_pin'); + $new_topic_status = ($pin) ? 1 : 0; + + if(count($topic_csv)) + { + $sql = " + SELECT topic_id, topic_title + FROM ". BB_TOPICS ." + WHERE topic_id IN($topic_csv) + AND forum_id = $forum_id + AND topic_show_first_post != ". TOPIC_MOVED ." + AND topic_show_first_post != $new_topic_status + "; + + $topic_csv = array(); + + foreach (DB()->fetch_rowset($sql) as $row) + { + $topic_csv[] = $row['topic_id']; + $log_topics[$row['topic_id']] = $row['topic_title']; + } + + if (!$topic_csv = get_id_csv($topic_csv)) + { + message_die(GENERAL_MESSAGE, $lang['NONE_SELECTED']); + } + + DB()->query(" + UPDATE ". BB_TOPICS ." SET + topic_show_first_post = $new_topic_status + WHERE topic_id IN($topic_csv) + "); + + $msg = ($pin) ? $lang['POST_PINNED'] : $lang['POST_UNPINNED']; + message_die(GENERAL_MESSAGE, return_msg_mcp($msg)); + } + elseif ($topic_id) + { + $sql = " + SELECT topic_id, topic_title + FROM ". BB_TOPICS ." + WHERE topic_id = $topic_id + AND forum_id = $forum_id + AND topic_show_first_post != ". TOPIC_MOVED ." + AND topic_show_first_post != $new_topic_status + LIMIT 1 + "; + + $topic_csv = array(); + + foreach (DB()->fetch_rowset($sql) as $row) + { + $topic_csv[] = $row['topic_id']; + $log_topics[$row['topic_id']] = $row['topic_title']; + } + + if (!$topic_csv = get_id_csv($topic_csv)) + { + message_die(GENERAL_MESSAGE, $lang['NONE_SELECTED']); + } + + DB()->query(" + UPDATE ". BB_TOPICS ." SET + topic_show_first_post = $new_topic_status + WHERE topic_id IN($topic_csv) + "); + + $msg = ($pin) ? $lang['POST_PINNED'] : $lang['POST_UNPINNED']; + message_die(GENERAL_MESSAGE, return_msg_mcp($msg)); + } + break; + default: bb_die('invalid action'); break; diff --git a/upload/templates/default/viewtopic.tpl b/upload/templates/default/viewtopic.tpl index 03af24ba4..9e9dc4b2e 100644 --- a/upload/templates/default/viewtopic.tpl +++ b/upload/templates/default/viewtopic.tpl @@ -115,6 +115,8 @@ function set_hid_chbox (id)