function repetitive_event_related($event,$action,$type_related = "",$event_data = array()){ //I find all those related to the event to find out if the original $event_related = ProjectEvents::findByRelated($event->getObjectId()); if(!$event_related){ //is not the original as the original look plus other related if($event->getOriginalEventId() != "0"){ $event_related = ProjectEvents::findByEventAndRelated($event->getObjectId(),$event->getOriginalEventId()); } } if($event_related){ switch($action){ case "edit": foreach ($event_related as $e_rel){ if($type_related == "news"){ if($event->getStart() <= $e_rel->getStart()){ $this->repetitive_event_related_edit($e_rel,$event_data); } }else{ $this->repetitive_event_related_edit($e_rel,$event_data); } } break; case "delete": $delete_event = array(); foreach ($event_related as $e_rel){ $event_rel = Objects::findObject($e_rel->getId()); if($type_related == "news"){ if($event->getStart() <= $e_rel->getStart()){ $delete_event[] = $e_rel->getId(); $event_rel->trash(); } }else{ $delete_event[] = $e_rel->getId(); $event_rel->trash(); } } return $delete_event; break; case "archive": $archive_event = array(); foreach ($event_related as $e_rel){ $event_rel = Objects::findObject($e_rel->getId()); if($type_related == "news"){ if($event->getStart() <= $e_rel->getStart()){ $archive_event[] = $e_rel->getId(); $e_rel->archive(); } }else{ $archive_event[] = $e_rel->getId(); $e_rel->archive(); } } return $archive_event; break; } } }