/**
  * Adding credentials from role
  * @param NsmRole $role
  */
 private function addCredentialsFromRole(NsmRole &$role)
 {
     $targets = $role->getTargets('credential');
     if ($targets === null) {
         return;
     }
     foreach ($targets as $credential) {
         $this->addCredential($credential->get('target_name'));
     }
 }
 /**
  * @todo: this is not really nice
  *
  * @param NsmRole $role
  */
 public function removeRole(NsmRole &$role)
 {
     $targets = $role->getTargets();
     if ($targets === null) {
         return;
     }
     foreach ($targets as $target) {
         $vals = $role->getTargetValues($target->get("target_name"));
         foreach ($vals as $value) {
             $value->delete();
         }
     }
     $principals = $role->NsmPrincipal;
     if (!$principals instanceof NsmPrincipal) {
         foreach ($principals as $pr) {
             if ($pr->NsmPrincipalTarget) {
                 foreach ($pr->NsmPrincipalTarget as $pr_t) {
                     $pr_t->delete();
                 }
             }
             $pr->delete();
         }
     } else {
         if ($principals->NsmPrincipalTarget) {
             foreach ($principals->NsmPrincipalTarget as $pr_t) {
                 $pr_t->delete();
             }
         }
         $principals->delete();
     }
     $this->rechainChildren($role);
     $role->delete();
 }