1<?php 2/** 3 * @package tikiwiki 4 */ 5// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 6// 7// All Rights Reserved. See copyright.txt for details and a complete list of authors. 8// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 9// $Id$ 10 11include_once('tiki-setup.php'); 12$categlib = TikiLib::lib('categ'); 13$access->check_feature('feature_group_watches'); 14$access->check_permission(['tiki_p_admin_users']); 15if (! isset($_REQUEST['objectId']) || ! isset($_REQUEST['watch_event'])) { 16 Feedback::errorPage(tr('Not enough information to display this page')); 17} 18 19$objectType = isset($_REQUEST['objectType']) ? $_REQUEST['objectType'] : null; 20 21$auto_query_args = ['objectId', 'objectType', 'objectName', 'watch_event', 'referer', 'objectHref']; 22$all_groups = $userlib->list_all_groups(); 23$smarty->assign_by_ref('all_groups', $all_groups); 24if ($objectType == 'Category') { 25 $smarty->assign('cat', 'y'); 26 $categoryIdentifier = $_REQUEST['objectId']; 27 if ($categoryIdentifier) { 28 $category = $categlib->get_category($_REQUEST['objectId']); 29 $extendedTargets = $category['descendants']; 30 $smarty->assign('isTop', 'n'); 31 } else { 32 $extendedTargets = $categlib->getCategories(); 33 $smarty->assign('isTop', 'y'); 34 } 35 if (count($extendedTargets) > 0) { 36 $smarty->assign('desc', 'y'); 37 } 38} 39 40if (! isset($_REQUEST['referer']) && isset($_SERVER['HTTP_REFERER'])) { 41 $_REQUEST['referer'] = $_SERVER['HTTP_REFERER']; 42} 43if (isset($_REQUEST['referer'])) { 44 $smarty->assign('referer', $_REQUEST['referer']); 45} 46 47if (isset($_REQUEST['assign']) && $access->checkCsrf()) { 48 $objectName = isset($_REQUEST['objectName']) ? $_REQUEST['objectName'] : null; 49 $objectHref = isset($_REQUEST['objectHref']) ? $_REQUEST['objectHref'] : null; 50 $addedGroups = []; 51 $deletedGroups = []; 52 if (! isset($_REQUEST['checked'])) { 53 $_REQUEST['checked'] = []; 54 } 55 $old_watches = $tikilib->get_groups_watching($_REQUEST['objectId'], $_REQUEST['watch_event'], $objectType); 56 foreach ($all_groups as $g) { 57 if (in_array($g, $_REQUEST['checked']) && ! in_array($g, $old_watches)) { 58 $tikilib->add_group_watch($g, $_REQUEST['watch_event'], $_REQUEST['objectId'], $objectType, $objectName, $objectHref); 59 $addedGroups[] = $g; 60 } elseif (! in_array($g, $_REQUEST['checked']) && in_array($g, $old_watches)) { 61 $tikilib->remove_group_watch($g, $_REQUEST['watch_event'], $_REQUEST['objectId'], $objectType); 62 $deletedGroups[] = $g; 63 } 64 $smarty->assign_by_ref('addedGroups', $addedGroups); 65 $smarty->assign_by_ref('deletedGroups', $deletedGroups); 66 $group_watches = $_REQUEST['checked']; 67 } 68 if ($objectType == 'Category') { 69 $addedGroupsDesc = []; 70 $deletedGroupsDesc = []; 71 $catTreeNodes = []; 72 foreach ($all_groups as $g) { 73 if (isset($_REQUEST[$g]) && $_REQUEST[$g] == 'cat_add_desc') { 74 $categlib->group_watch_category_and_descendants($g, $_REQUEST['objectId'], $objectName, false); 75 if ($g != 'Anonymous') { 76 $addedGroupsDesc[] = $g; 77 } 78 } 79 if (isset($_REQUEST[$g]) && $_REQUEST[$g] == 'cat_remove_desc') { 80 $categlib->group_unwatch_category_and_descendants($g, $_REQUEST['objectId'], false); 81 if ($g != 'Anonymous') { 82 $deletedGroupsDesc[] = $g; 83 } 84 } 85 } 86 $smarty->assign_by_ref('addedGroupsDesc', $addedGroupsDesc); 87 $smarty->assign_by_ref('deletedGroupsDesc', $deletedGroupsDesc); 88 89 if (! empty($addedGroupsDesc) || ! empty($deletedGroupsDesc)) { 90 foreach ($extendedTargets as $d) { 91 $catinfo = $categlib->get_category($d); 92 $catTreeNodes[] = [ 93 'id' => $catinfo['categId'], 94 'parent' => $catinfo['parentId'], 95 'data' => $catinfo['name'], 96 ]; 97 } 98 include_once('lib/tree/BrowseTreeMaker.php'); 99 $tm = new BrowseTreeMaker('categ'); 100 $res = $tm->make_tree($catTreeNodes[0]['parent'], $catTreeNodes); 101 $smarty->assign('tree', $res); 102 } 103 } 104} else { 105 $group_watches = $tikilib->get_groups_watching($_REQUEST['objectId'], $_REQUEST['watch_event'], $objectType); 106} 107 108$smarty->assign_by_ref('group_watches', $group_watches); 109$smarty->assign('mid', 'tiki-object_watches.tpl'); 110$smarty->display('tiki.tpl'); 111