$task = 'list_sites'; break; } $mainframe->redirect('index.php?option=com_community_acl&task=' . $task); } function deleteItem($table, $cid) { global $mainframe; // Check for request forgeries JRequest::checkToken() or die('Invalid Token'); // Initialize variables $db =& JFactory::getDBO(); JArrayHelper::toInteger($cid); if (count($cid) < 1) { JError::raiseError(500, JText::_('Select a item to delete', true)); } if (count($cid)) { $cids = implode(',', $cid); $query = 'DELETE FROM `' . $table . '`' . ' WHERE `id` IN ( ' . $cids . ' )'; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } switch ($table) { case '#__community_acl_groups': $query = 'SELECT `id` FROM `#__community_acl_roles`' . ' WHERE `group_id` IN ( ' . $cids . ' )'; $db->setQuery($query); $rid = $db->loadResultArray(); $query = 'DELETE FROM `#__community_acl_roles`' . ' WHERE `group_id` IN ( ' . $cids . ' )'; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = 'DELETE FROM `#__community_acl_access`' . ' WHERE `group_id` IN ( ' . $cids . ' ) ' . (count($rid) > 0 ? ' OR `role_id` IN ( ' . implode(',', $rid) . ' )' : ''); $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = 'DELETE FROM `#__community_acl_users`' . ' WHERE `group_id` IN ( ' . $cids . ' ) ' . (count($rid) > 0 ? ' OR `role_id` IN ( ' . implode(',', $rid) . ' )' : ''); $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = "SELECT `id` FROM `#__community_acl_sites` WHERE `is_main` = '1'"; $db->setQuery($query); $sid = (int) $db->loadResult(); if ($sid > 0) { $main = new CACL_site($db); $main->load($sid); $config = new CACL_config($main->_site_db); $config->load(); if ($config->synchronize && $config->cacl_grf) { $sync = new CACL_syncronize($main); foreach ($cid as $tid) { $sync->syncronize($tid, 'cacl_group_delete'); } } } break; case '#__community_acl_roles': $query = 'DELETE FROM `#__community_acl_access`' . ' WHERE `role_id` IN ( ' . $cids . ' ) '; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = 'DELETE FROM `#__community_acl_users`' . ' WHERE `role_id` IN ( ' . $cids . ' ) '; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = "SELECT `id` FROM `#__community_acl_sites` WHERE `is_main` = '1'"; $db->setQuery($query); $sid = (int) $db->loadResult(); if ($sid > 0) { $main = new CACL_site($db); $main->load($sid); $config = new CACL_config($main->_site_db); $config->load(); if ($config->synchronize && $config->cacl_grf) { $sync = new CACL_syncronize($main); foreach ($cid as $tid) { $sync->syncronize($tid, 'cacl_role_delete'); } } } break; case '#__community_acl_functions': $query = 'DELETE FROM `#__community_acl_function_access`' . ' WHERE `func_id` IN ( ' . $cids . ' ) '; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = 'DELETE FROM `#__community_acl_users`' . ' WHERE `function_id` IN ( ' . $cids . ' ) '; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->stderr()); return false; } $query = "SELECT `id` FROM `#__community_acl_sites` WHERE `is_main` = '1'"; $db->setQuery($query); $sid = (int) $db->loadResult(); if ($sid > 0) { $main = new CACL_site($db); $main->load($sid); $config = new CACL_config($main->_site_db); $config->load(); if ($config->synchronize && $config->cacl_grf) { $sync = new CACL_syncronize($main); foreach ($cid as $tid) { $sync->syncronize($tid, 'cacl_func_delete'); } } } break; case '#__community_acl_sites': $task = 'list_sites'; break; } } $task = ''; switch ($table) { case '#__community_acl_groups': $task = 'list_groups'; break; case '#__community_acl_roles': $task = 'list_roles'; break; case '#__community_acl_functions': $task = 'list_functions'; break; case '#__community_acl_sites':
function _syncCBContact() { require_once JPATH_SITE . '/administrator/components/com_community_acl/community_acl.class.php'; $db =& JFactory::getDBO(); $query = "SELECT `id` FROM `#__community_acl_sites` WHERE `is_main` = '1'"; $db->setQuery($query); $sid = (int) $db->loadResult(); $main = new CACL_site($db); $main->load($sid); $config = new CACL_config($main->_site_db); $config->load(); if (!$config->synchronize || !$config->cb_contact) { return; } $sync = new CACL_syncronize($main); $sync->syncronize(0, 'cb_contact'); }
/** * Disables the user account */ function block() { // Check for request forgeries JRequest::checkToken() or die('Invalid Token'); $db =& JFactory::getDBO(); $acl =& JFactory::getACL(); $currentUser =& JFactory::getUser(); $cid = JRequest::getVar('cid', array(), '', 'array'); $block = $this->getTask() == 'block' ? 1 : 0; JArrayHelper::toInteger($cid); if (count($cid) < 1) { JError::raiseError(500, JText::_('Select a User to ' . $this->getTask(), true)); } foreach ($cid as $id) { // check for a super admin ... can't delete them $objectID = $acl->get_object_id('users', $id, 'ARO'); $groups = $acl->get_object_groups($objectID, 'ARO'); $this_group = strtolower($acl->get_group_name($groups[0], 'ARO')); $success = false; if ($this_group == 'super administrator') { $msg = JText::_('You cannot block a Super Administrator'); } else { if ($id == $currentUser->get('id')) { $msg = JText::_('You cannot block Yourself!'); } else { if ($this_group == 'administrator' && $currentUser->get('gid') == 24) { $msg = JText::_('WARNBLOCK'); } else { $user =& JUser::getInstance((int) $id); $count = 2; if ($user->get('gid') == 25) { // count number of active super admins $query = 'SELECT COUNT( id )' . ' FROM #__users' . ' WHERE gid = 25' . ' AND block = 0'; $db->setQuery($query); $count = $db->loadResult(); } if ($count <= 1 && $user->get('gid') == 25) { // cannot delete Super Admin where it is the only one that exists $msg = "You cannot block this Super Administrator as it is the only active Super Administrator for your site"; } else { $user =& JUser::getInstance((int) $id); $user->block = $block; $user->save(); if ($block) { JRequest::setVar('task', 'block'); JRequest::setVar('cid', array($id)); $query = "SELECT `id` FROM `#__community_acl_sites` WHERE `is_main` = '1'"; $db->setQuery($query); $sid = (int) $db->loadResult(); if ($sid > 0) { $main = new CACL_site($db); $main->load($sid); $config = new CACL_config($main->_site_db); $config->load(); if ($config->synchronize && $config->users_and_cb) { $sync = new CACL_syncronize($main); $sync->syncronize($user->get('id'), 'user'); } } // delete user acounts active sessions $this->logout(); } } } } } } $this->setRedirect('index.php?option=com_community_acl&mode=manage_users', $msg); }