[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/ -> notifications.php (source)

   1  <?php
   2  // $Id: notifications.php 2 2005-11-02 18:23:29Z skalpa $

   3  //  ------------------------------------------------------------------------ //

   4  //                XOOPS - PHP Content Management System                      //

   5  //                    Copyright (c) 2000 XOOPS.org                           //

   6  //                       <http://www.xoops.org/>                             //

   7  //  ------------------------------------------------------------------------ //

   8  //  This program is free software; you can redistribute it and/or modify     //

   9  //  it under the terms of the GNU General Public License as published by     //

  10  //  the Free Software Foundation; either version 2 of the License, or        //

  11  //  (at your option) any later version.                                      //

  12  //                                                                           //

  13  //  You may not change or alter any portion of this comment or credits       //

  14  //  of supporting developers from this source code or any supporting         //

  15  //  source code which is considered copyrighted (c) material of the          //

  16  //  original comment or credit authors.                                      //

  17  //                                                                           //

  18  //  This program is distributed in the hope that it will be useful,          //

  19  //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

  20  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

  21  //  GNU General Public License for more details.                             //

  22  //                                                                           //

  23  //  You should have received a copy of the GNU General Public License        //

  24  //  along with this program; if not, write to the Free Software              //

  25  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

  26  //  ------------------------------------------------------------------------ //

  27  
  28  $xoopsOption['pagetype'] = 'notification';
  29  include  'mainfile.php';
  30  
  31  if (empty($xoopsUser)) {
  32      redirect_header('index.php', 3, _NOT_NOACCESS);
  33      exit();
  34  }
  35  
  36  $uid = $xoopsUser->getVar('uid');
  37  
  38  $op = 'list';
  39  
  40  if (isset($_POST['op'])) {
  41      $op = trim($_POST['op']);
  42  } elseif (isset($_GET['op'])) {
  43      $op = trim($_GET['op']);
  44  }
  45  if (isset($_POST['delete'])) {
  46      $op = 'delete';
  47  } elseif (isset($_GET['delete'])) {
  48      $op = 'delete';
  49  }
  50  if (isset($_POST['delete_ok'])) {
  51      $op = 'delete_ok';
  52  }
  53  if (isset($_POST['delete_cancel'])) {
  54      $op = 'cancel';
  55  }
  56  
  57  switch ($op) {
  58  
  59  case 'cancel':
  60  
  61      // FIXME: does this always go back to correct location??

  62      redirect_header ('index.php');
  63      break;
  64  
  65  case 'list':
  66  
  67  // Do we allow other users to see our notifications?  Nope, but maybe

  68  // see who else is monitoring a particular item (or at least how many)?

  69  // Well, maybe admin can see all...

  70  
  71  // TODO: need to span over multiple pages...???

  72  
  73      // Get an array of all notifications for the selected user

  74  
  75      $criteria = new Criteria ('not_uid', $uid);
  76      $criteria->setSort ('not_modid,not_category,not_itemid');
  77      $notification_handler =& xoops_gethandler('notification');
  78      $notifications =& $notification_handler->getObjects($criteria);
  79  
  80      // Generate the info for the template

  81  
  82      $module_handler =& xoops_gethandler('module');
  83      include_once  XOOPS_ROOT_PATH . '/include/notification_functions.php';
  84  
  85      $modules = array();
  86      $prev_modid = -1;
  87      $prev_category = -1;
  88      $prev_item = -1;
  89      foreach ($notifications as $n) {
  90          $modid = $n->getVar('not_modid');
  91          if ($modid != $prev_modid) {
  92              $prev_modid = $modid;
  93              $prev_category = -1;
  94              $prev_item = -1;
  95              $module =& $module_handler->get($modid);
  96              $modules[$modid] = array ('id'=>$modid, 'name'=>$module->getVar('name'), 'categories'=>array());
  97              // TODO: note, we could auto-generate the url from the id

  98              // and category info... (except when category has multiple

  99              // subscription scripts defined...)

 100              // OR, add one more option to xoops_version 'view_from'

 101              // which tells us where to redirect... BUT, e.g. forums, it

 102              // still wouldn't give us all the required info... e.g. the

 103              // topic ID doesn't give us the ID of the forum which is

 104              // a required argument...

 105  
 106              // Get the lookup function, if exists

 107              $not_config = $module->getInfo('notification');
 108              $lookup_func = '';
 109              if (!empty($not_config['lookup_file'])) {
 110                  $lookup_file = XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname') . '/' . $not_config['lookup_file'];
 111                  if (file_exists($lookup_file)) {
 112                      include_once $lookup_file;
 113                      if (!empty($not_config['lookup_func']) && function_exists($not_config['lookup_func'])) {
 114                          $lookup_func = $not_config['lookup_func'];
 115                      }
 116                  }
 117              }
 118          }
 119          $category = $n->getVar('not_category');
 120          if ($category != $prev_category) {
 121              $prev_category = $category;
 122              $prev_item = -1;
 123              $category_info =& notificationCategoryInfo($category, $modid);
 124              $modules[$modid]['categories'][$category] = array ('name'=>$category, 'title'=>$category_info['title'], 'items'=>array());
 125          }
 126          $item = $n->getVar('not_itemid');
 127          if ($item != $prev_item) {
 128              $prev_item = $item;
 129              if (!empty($lookup_func)) {
 130                  $item_info = $lookup_func($category, $item);
 131              } else {
 132                  $item_info = array ('name'=>'['._NOT_NAMENOTAVAILABLE.']', 'url'=>'');
 133              }
 134              $modules[$modid]['categories'][$category]['items'][$item] = array ('id'=>$item, 'name'=>$item_info['name'], 'url'=>$item_info['url'], 'notifications'=>array());
 135          }
 136          $event_info =& notificationEventInfo($category, $n->getVar('not_event'), $n->getVar('not_modid'));
 137          $modules[$modid]['categories'][$category]['items'][$item]['notifications'][] = array ('id'=>$n->getVar('not_id'), 'module_id'=>$n->getVar('not_modid'), 'category'=>$n->getVar('not_category'), 'category_title'=>$category_info['title'], 'item_id'=>$n->getVar('not_itemid'), 'event'=>$n->getVar('not_event'), 'event_title'=>$event_info['title'], 'user_id'=>$n->getVar('not_uid'));
 138      }
 139      $xoopsOption['template_main'] = 'system_notification_list.html';
 140      include  XOOPS_ROOT_PATH.'/header.php';
 141      $xoopsTpl->assign ('modules', $modules);
 142      $user_info = array ('uid' => $xoopsUser->getVar('uid'));
 143      $xoopsTpl->assign ('user', $user_info);
 144      $xoopsTpl->assign ('lang_cancel', _CANCEL);
 145      $xoopsTpl->assign ('lang_clear', _NOT_CLEAR);
 146      $xoopsTpl->assign ('lang_delete', _DELETE);
 147      $xoopsTpl->assign ('lang_checkall', _NOT_CHECKALL);
 148      $xoopsTpl->assign ('lang_module', _NOT_MODULE);
 149      $xoopsTpl->assign ('lang_event', _NOT_EVENT);
 150      $xoopsTpl->assign ('lang_events', _NOT_EVENTS);
 151      $xoopsTpl->assign ('lang_category', _NOT_CATEGORY);
 152      $xoopsTpl->assign ('lang_itemid', _NOT_ITEMID);
 153      $xoopsTpl->assign ('lang_itemname', _NOT_ITEMNAME);
 154      $xoopsTpl->assign ('lang_activenotifications', _NOT_ACTIVENOTIFICATIONS);
 155      $xoopsTpl->assign ('notification_token', $GLOBALS['xoopsSecurity']->createToken());
 156      include  XOOPS_ROOT_PATH.'/footer.php';
 157  
 158  // TODO: another display mode... instead of one notification per line,

 159  // show one line per item_id, with checkboxes for the available options...

 160  // and an update button to change them...  And still have the delete box

 161  // to delete all notification for that item

 162  
 163  // How about one line per ID, showing category, name, id, and list of

 164  // events...

 165  
 166  // TODO: it would also be useful to provide links to other available

 167  // options so we can say switch from new_message to 'bookmark' if we

 168  // are receiving too many emails.  OR, if we click on 'change options'

 169  // we get a form for that page...

 170  
 171  // TODO: option to specify one-time??? or other modes??

 172  
 173      break;
 174  
 175  //case 'delete':

 176  case 'delete_ok':
 177  
 178      if (empty($_POST['del_not'])) {
 179          redirect_header('notifications.php', 2, _NOT_NOTHINGTODELETE);
 180      }
 181      include  XOOPS_ROOT_PATH.'/header.php';
 182      $hidden_vars = array('uid'=>$uid, 'delete_ok'=>1, 'del_not'=>$_POST['del_not']);
 183      print '<h4>'._NOT_DELETINGNOTIFICATIONS.'</h4>';
 184      xoops_confirm($hidden_vars, xoops_getenv('PHP_SELF'), _NOT_RUSUREDEL);
 185      include  XOOPS_ROOT_PATH.'/footer.php';
 186  
 187  // FIXME: There is a problem here... in xoops_confirm it treats arrays as

 188  // optional radio arguments on the confirmation page... change this or

 189  // write new function...

 190  
 191      break;
 192  
 193  //case 'delete_ok':

 194  case 'delete':
 195      if (!$GLOBALS['xoopsSecurity']->check()) {
 196          redirect_header('notifications.php', 2, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
 197      }
 198      if (empty($_POST['del_not'])) {
 199          redirect_header('notifications.php', 2, _NOT_NOTHINGTODELETE);
 200      }
 201      $notification_handler =& xoops_gethandler('notification');
 202      foreach ($_POST['del_not'] as $n_array) {
 203          foreach ($n_array as $n) {
 204              $notification =& $notification_handler->get($n);
 205              if ($notification->getVar('not_uid') == $uid) {
 206                  $notification_handler->delete($notification);
 207              }
 208          }
 209      }
 210      redirect_header('notifications.php', 2, _NOT_DELETESUCCESS);
 211      break;
 212  default:
 213      break;
 214  }
 215  
 216  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics