<?php
/*
* Copyright 2003 Mark O'Sullivan
* This file is part of Vanilla.
* Vanilla is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
* Vanilla is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with Vanilla; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
* The latest source code for Vanilla is available at www.lussumo.com
* Contact Mark O'Sullivan at mark [at] lussumo [dot] com
*
* Description: File used by Dynamic Data Management object to handle any type of boolean switch
*/

include('../appg/settings.php');
include('../appg/init_ajax.php');

$PostBackKey = ForceIncomingString('PostBackKey', '');
$ExtensionKey = ForceIncomingString('ExtensionKey', '');
if ($PostBackKey != '' && $PostBackKey == $Context->Session->GetVariable('SessionPostBackKey', 'string')) {
	$Type = ForceIncomingString('Type', '');
	$Switch = ForceIncomingBool('Switch', 0);
	$DiscussionID = ForceIncomingInt('DiscussionID', 0);
	$CommentID = ForceIncomingInt('CommentID', 0);

	// Don't create unnecessary objects
	if (in_array($Type, array('Active', 'Closed', 'Sticky', 'Sink'))) {
		$dm = $Context->ObjectFactory->NewContextObject($Context, 'DiscussionManager');
	} elseif ($Type == 'Comment') {
		$cm = $Context->ObjectFactory->NewContextObject($Context, 'CommentManager');
	} else {
		// This will allow the switch class to be used to add new custom user settings
		$um = $Context->ObjectFactory->NewContextObject($Context, 'UserManager');
	}
	// Handle the switches
	if ($Type == 'Bookmark' && $DiscussionID > 0) {
		if ($Context->Session->UserID == 0) die();
		if ($Switch) {
			$um->AddBookmark($Context->Session->UserID, $DiscussionID);
		} else {
			$um->RemoveBookmark($Context->Session->UserID, $DiscussionID);
		}
	} elseif ($DiscussionID > 0 && (
		($Type == 'Active' && $Context->Session->User->Permission('PERMISSION_HIDE_DISCUSSIONS'))
		|| ($Type == 'Closed' && $Context->Session->User->Permission('PERMISSION_CLOSE_DISCUSSIONS'))
		|| ($Type == 'Sticky' && $Context->Session->User->Permission('PERMISSION_STICK_DISCUSSIONS'))
		|| ($Type == 'Sink' && $Context->Session->User->Permission('PERMISSION_SINK_DISCUSSIONS'))
		)) {
		$dm->SwitchDiscussionProperty($DiscussionID, $Type, $Switch);
	} elseif ($Type == 'Comment' && $CommentID > 0 && $DiscussionID > 0 && $Context->Session->User->Permission('PERMISSION_HIDE_COMMENTS')) {
		$cm->SwitchCommentProperty($CommentID, $DiscussionID, $Switch);
	} elseif ($Type == 'SendNewApplicantNotifications') {
		$um->SwitchUserProperty($Context->Session->UserID, $Type, $Switch);
	} elseif ($Type != '') {
		$um->SwitchUserPreference($Type, $Switch);
	}

	echo 'Complete';
} else {
	echo $Context->GetDefinition('ErrPostBackKeyInvalid');
}
$Context->Unload();
?>