?
Path : /home/admin/domains/happytokorea.com/public_html_bk/happyezystyle/board/Sources/ |
Current File : /home/admin/domains/happytokorea.com/public_html_bk/happyezystyle/board/Sources/LockTopic.php |
<?php /********************************************************************************** * LockTopic.php * *********************************************************************************** * SMF: Simple Machines Forum * * Open-Source Project Inspired by Zef Hemel (zef@zefhemel.com) * * =============================================================================== * * Software Version: SMF 2.0 RC1 * * Software by: Simple Machines (http://www.simplemachines.org) * * Copyright 2006-2009 by: Simple Machines LLC (http://www.simplemachines.org) * * 2001-2006 by: Lewis Media (http://www.lewismedia.com) * * Support, News, Updates at: http://www.simplemachines.org * *********************************************************************************** * This program is free software; you may redistribute it and/or modify it under * * the terms of the provided license as published by Simple Machines LLC. * * * * This program is distributed in the hope that it is and will be useful, but * * WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY * * or FITNESS FOR A PARTICULAR PURPOSE. * * * * See the "license.txt" file for details of the Simple Machines license. * * The latest version can always be found at http://www.simplemachines.org. * **********************************************************************************/ if (!defined('SMF')) die('Hacking attempt...'); /* This file only takes care of two things - locking and stickying. void LockTopic() - locks a topic, toggles between locked/unlocked/admin locked. - only admins can unlock topics locked by other admins. - requires the lock_own or lock_any permission. - logs the action to the moderator log. - returns to the topic after it is done. - accessed via ?action=lock. void Sticky() - stickies a topic - toggles between sticky and normal. - requires the make_sticky permission. - adds an entry to the moderator log. - when done, sends the user back to the topic. - accessed via ?action=sticky. */ // Locks a topic... either by way of a moderator or the topic starter. function LockTopic() { global $topic, $user_info, $sourcedir, $board, $smcFunc; // Just quit if there's no topic to lock. if (empty($topic)) fatal_lang_error('not_a_topic', false); checkSession('get'); // Get Subs-Post.php for sendNotifications. require_once($sourcedir . '/Subs-Post.php'); // Find out who started the topic - in case User Topic Locking is enabled. $request = $smcFunc['db_query']('', ' SELECT id_member_started, locked FROM {db_prefix}topics WHERE id_topic = {int:current_topic} LIMIT 1', array( 'current_topic' => $topic, ) ); list ($starter, $locked) = $smcFunc['db_fetch_row']($request); $smcFunc['db_free_result']($request); // Can you lock topics here, mister? $user_lock = !allowedTo('lock_any'); if ($user_lock && $starter == $user_info['id']) isAllowedTo('lock_own'); else isAllowedTo('lock_any'); // Locking with high privileges. if ($locked == '0' && !$user_lock) $locked = '1'; // Locking with low privileges. elseif ($locked == '0') $locked = '2'; // Unlocking - make sure you don't unlock what you can't. elseif ($locked == '2' || ($locked == '1' && !$user_lock)) $locked = '0'; // You cannot unlock this! else fatal_lang_error('locked_by_admin', 'user'); // Actually lock the topic in the database with the new value. $smcFunc['db_query']('', ' UPDATE {db_prefix}topics SET locked = {int:locked} WHERE id_topic = {int:current_topic}', array( 'current_topic' => $topic, 'locked' => $locked, ) ); // If they are allowed a "moderator" permission, log it in the moderator log. if (!$user_lock) logAction($locked ? 'lock' : 'unlock', array('topic' => $topic, 'board' => $board)); // Notify people that this topic has been locked? sendNotifications($topic, empty($locked) ? 'unlock' : 'lock'); // Back to the topic! redirectexit('topic=' . $topic . '.' . $_REQUEST['start'] . (WIRELESS ? ';moderate' : '')); } // Sticky a topic. Can't be done by topic starters - that would be annoying! function Sticky() { global $modSettings, $topic, $board, $sourcedir, $smcFunc; // Make sure the user can sticky it, and they are stickying *something*. isAllowedTo('make_sticky'); // You shouldn't be able to (un)sticky a topic if the setting is disabled. if (empty($modSettings['enableStickyTopics'])) fatal_lang_error('cannot_make_sticky', false); // You can't sticky a board or something! if (empty($topic)) fatal_lang_error('not_a_topic', false); checkSession('get'); // We need Subs-Post.php for the sendNotifications() function. require_once($sourcedir . '/Subs-Post.php'); // Is this topic already stickied, or no? $request = $smcFunc['db_query']('', ' SELECT is_sticky FROM {db_prefix}topics WHERE id_topic = {int:current_topic} LIMIT 1', array( 'current_topic' => $topic, ) ); list ($is_sticky) = $smcFunc['db_fetch_row']($request); $smcFunc['db_free_result']($request); // Toggle the sticky value.... pretty simple ;). $smcFunc['db_query']('', ' UPDATE {db_prefix}topics SET is_sticky = {int:is_sticky} WHERE id_topic = {int:current_topic}', array( 'current_topic' => $topic, 'is_sticky' => empty($is_sticky) ? 1 : 0, ) ); // Log this sticky action - always a moderator thing. logAction(empty($is_sticky) ? 'sticky' : 'unsticky', array('topic' => $topic, 'board' => $board)); // Notify people that this topic has been stickied? if (empty($is_sticky)) sendNotifications($topic, 'sticky'); // Take them back to the now stickied topic. redirectexit('topic=' . $topic . '.' . $_REQUEST['start'] . (WIRELESS ? ';moderate' : '')); } ?>