private function removeUsers(array $users, $page = false, $trackerIds = [], $files = false) { global $user; foreach ($users as $deleteuser) { if ($deleteuser != 'admin') { // remove the user's objects, wiki page first if ($page) { global $prefs; $page = $prefs['feature_wiki_userpage_prefix'] . $deleteuser; Services_Exception_Denied::checkObject('remove', 'wiki page', $page); $tikilib = TikiLib::lib('tiki'); $res = $tikilib->remove_all_versions($page); if ($res !== true) { throw new Services_Exception_NotFound(tr('An error occurred. User %0 could not be deleted', $deleteuser)); } } // then tracker items "owner" by the user if (!empty($trackerIds)) { $trklib = TikiLib::lib('trk'); $items = $trklib->get_user_items($deleteuser, false); foreach ($items as $item) { if (in_array($item['trackerId'], $trackerIds)) { $trklib->remove_tracker_item($item['itemId'], true); } } } // then tracker items "owner" by the user if ($files) { $filegallib = TikiLib::lib('filegal'); $galleryId = $filegallib->get_user_file_gallery($deleteuser); if ($galleryId) { $filegallib->remove_file_gallery($galleryId); } } // and finally remove the actual user (and other associated data) $res = $this->lib->remove_user($deleteuser); if ($res === true) { $logslib = TikiLib::lib('logs'); $logslib->add_log('adminusers', sprintf(tra('Deleted account %s'), $deleteuser), $user); } else { throw new Services_Exception_NotFound(tr('An error occurred. User %0 could not be deleted', $deleteuser)); } } } return true; }