/**
  * Clean criteria data which no long exist in the current criteriagroup
  *
  * @param array $neededCriteria
  * @param array $existingCriteria
  * @param Criteriagroup $criteriagroup
  * @return PublishingManager
  */
 protected function cleanCriteria(array $neededCriteria = array(), array $existingCriteria = array(), Criteriagroup $criteriagroup)
 {
     //echo "inside cleanCriteria<br>\n";
     $toRemove = array_filter($existingCriteria, function (Criterion $current) use($neededCriteria) {
         //echo "inside cleanCriteria closure<br>\n";
         $removeCriterion = true;
         foreach ($neededCriteria as $data) {
             if ($current->getId() == $data->getId()) {
                 $removeCriterion = false;
                 break;
             }
         }
         return $removeCriterion;
     });
     foreach ($toRemove as $criterionToRemove) {
         $criteriagroup->removeCriterion($criterionToRemove);
         $this->om->remove($criterionToRemove);
     }
     return $this;
 }
 /**
  * Clean Criteria which no longer exist in the current Group.
  *
  * @param \Innova\PathBundle\Entity\Criteriagroup $group
  * @param array                                   $neededCriteria
  * @param array                                   $existingCriteria
  *
  * @return \Innova\PathBundle\Manager\Condition\CriteriaManager
  */
 public function cleanCriteria(Criteriagroup $group, array $neededCriteria = [], array $existingCriteria = [])
 {
     $toRemove = array_filter($existingCriteria, function (Criterion $current) use($neededCriteria) {
         $removeCriterion = true;
         foreach ($neededCriteria as $criterion) {
             if ($current->getId() == $criterion->getId()) {
                 $removeCriterion = false;
                 break;
             }
         }
         return $removeCriterion;
     });
     foreach ($toRemove as $criterionToRemove) {
         $group->removeCriterion($criterionToRemove);
         $this->om->remove($criterionToRemove);
     }
     return $this;
 }