/** * Populate the sub-filters (if any) for the * given parent filter. * @param $parentFilter PersistableFilter */ function _populateSubFilters(&$parentFilter) { if (!is_a($parentFilter, 'CompositeFilter')) { // Nothing to do. Only composite filters // can have sub-filters. return; } // Retrieve the sub-filters from the database. $parentFilterId = $parentFilter->getId(); $result =& $this->retrieve('SELECT * FROM filters WHERE parent_filter_id = ? ORDER BY seq', $parentFilterId); $daoResultFactory = new DAOResultFactory($result, $this, '_fromRow', array('filter_id')); // Add sub-filters. while (!$daoResultFactory->eof()) { // Retrieve the sub filter. // NB: This recursively loads sub-filters // of this filter via _fromRow(). $subFilter =& $daoResultFactory->next(); // Add the sub-filter to the filter list // of its parent filter. $parentFilter->addFilter($subFilter); unset($subFilter); } }
/** * Remove all user group assignments in a given context * @param int $contextId * @param int $userId */ function deleteAssignmentsByContextId($contextId, $userId = null) { $params = array($contextId); if ($userId) { $params[] = $userId; } $result =& $this->retrieve('SELECT uug.user_group_id, uug.user_id FROM user_groups ug JOIN user_user_groups uug ON ug.user_group_id = uug.user_group_id WHERE ug.context_id = ? ' . ($userId ? ' AND uug.user_id = ?' : ''), $params); $assignments = new DAOResultFactory($result, $this, '_returnFromRow'); while (!$assignments->eof()) { $assignment =& $assignments->next(); $this->deleteByUserId($assignment->getUserId(), $assignment->getUserGroupId()); unset($assignment); } return $assignments; }