📄 notification_update.php
字号:
<?php
// $Id: notification_update.php 2 2005-11-02 18:23:29Z skalpa $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <http://www.xoops.org/> //
// ------------------------------------------------------------------------ //
// This program 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. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program 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 this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// RMV-NOTIFY
// This module expects the following arguments:
//
// not_submit
// not_redirect (to return back after update)
// not_mid (TODO)
// not_uid (TODO)
// not_list[1][params] = {category},{itemid},{event}
// not_list[1][status] = 1 if selected; 0 or missing if not selected
// etc...
// TODO: can we put arguments in the not_redirect argument??? do we need
// to specially encode them first???
// TODO: allow 'GET' also so we can process 'unsubscribe' requests??
if (!defined('XOOPS_ROOT_PATH') || !is_object($xoopsModule)) {
exit();
}
include_once XOOPS_ROOT_PATH.'/include/notification_constants.php';
include_once XOOPS_ROOT_PATH.'/include/notification_functions.php';
include_once XOOPS_ROOT_PATH.'/language/'.$xoopsConfig['language'].'/notification.php';
if (!isset($_POST['not_submit'])) {
exit();
}
if (!$GLOBALS['xoopsSecurity']->check()) {
redirect_header($_POST['not_redirect'], 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
exit();
}
// NOTE: in addition to the templates provided in the block and view
// modes, we can have buttons, etc. which load the arguments to be
// read by this script. That way a module can really customize its
// look as to where/how the notification options are made available.
$update_list = $_POST['not_list'];
$module_id = $xoopsModule->getVar('mid');
$user_id = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
// For each event, update the notification depending on the status.
// If status=1, subscribe to the event; otherwise, unsubscribe.
// FIXME: right now I just ignore database errors (e.g. if already
// subscribed)... deal with this more gracefully?
$notification_handler =& xoops_gethandler('notification');
foreach ($update_list as $update_item) {
list($category, $item_id, $event) = split (',', $update_item['params']);
$status = !empty($update_item['status']) ? 1 : 0;
if (!$status) {
$notification_handler->unsubscribe($category, $item_id, $event, $module_id, $user_id);
} else {
$notification_handler->subscribe($category, $item_id, $event);
}
}
// TODO: something like grey box summary of actions (like multiple comment
// deletion), with a button to return back... NOTE: we need some arguments
// to help us get back to where we were...
// TODO: finish integration with comments... i.e. need calls to
// notifyUsers at appropriate places... (need to figure out where
// comment submit occurs and where comment approval occurs)...
include_once XOOPS_ROOT_PATH . '/include/notification_functions.php';
$redirect_args = array();
foreach ($update_list as $update_item) {
list($category,$item_id,$event) = split(',',$update_item['params']);
$category_info =& notificationCategoryInfo($category);
if (!empty($category_info['item_name'])) {
$redirect_args[$category_info['item_name']] = $item_id;
}
}
// TODO: write a central function to put together args with '?' and '&'
// symbols...
$argstring = '';
$first_arg = 1;
foreach (array_keys($redirect_args) as $arg) {
if ($first_arg) {
$argstring .= "?" . $arg . "=" . $redirect_args[$arg];
$first_arg = 0;
} else {
$argstring .= "&" . $arg . "=" . $redirect_args[$arg];
}
}
redirect_header ($_POST['not_redirect'].$argstring, 3, _NOT_UPDATEOK);
exit();
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -