/** * Remove all principals from a cronk * @param Cronk $cronk */ private function dropGroupPrincipals(Cronk $cronk) { $principals = AppKitDoctrineUtil::createQuery()->select('p.principal_id')->from('NsmPrincipal p')->innerJoin('p.cronks c WITH c.cronk_id=?', $cronk->cronk_id)->andWhere('p.principal_type=?', array(NsmPrincipal::TYPE_ROLE))->execute(); $pids = array(); foreach ($principals as $principal) { $pids[] = $principal->principal_id; } if (count($pids) > 0) { AppKitDoctrineUtil::createQuery()->delete('CronkPrincipalCronk cpc')->andWhere('cpc.cpc_cronk_id=?', array($cronk->cronk_id))->andWhereIn('cpc.cpc_principal_id', $pids)->execute(); } $cronk->refresh(true); }