/** * This function checks if there was any registraion for related event ids, * and returns array of ids with no regsitrations * * @param string or int or object... $eventID * * @return array */ public static function checkRegistrationForEvents($eventID) { $eventIdsWithNoRegistration = array(); if ($eventID) { $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($eventID, 'civicrm_event', TRUE); $participantDetails = CRM_Event_Form_ManageEvent_Repeat::getParticipantCountforEvent($getRelatedEntities); //Check if participants exists for events foreach ($getRelatedEntities as $key => $value) { if (!CRM_Utils_Array::value($value['id'], $participantDetails['countByID']) && $value['id'] != $eventID) { //CRM_Event_BAO_Event::del($value['id']); $eventIdsWithNoRegistration[] = $value['id']; } } } CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted = $eventIdsWithNoRegistration; return CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted; }
/** * Run the basic page (run essentially starts execution for that page). */ public function run() { $parentEventId = $startDate = $endDate = NULL; $dates = $original = array(); $formValues = $_REQUEST; if (!empty($formValues['entity_table'])) { $startDateColumnName = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['dateColumns'][0]; $endDateColumnName = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['intervalDateColumns'][0]; $recursion = new CRM_Core_BAO_RecurringEntity(); if (CRM_Utils_Array::value('dateColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) { $recursion->dateColumns = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['dateColumns']; } $recursion->scheduleFormValues = $formValues; if (!empty($formValues['exclude_date_list'])) { $recursion->excludeDates = explode(',', $formValues['exclude_date_list']); } if (CRM_Utils_Array::value('excludeDateRangeColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) { $recursion->excludeDateRangeColumns = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['excludeDateRangeColumns']; } if (!empty($formValues['entity_id'])) { $parentEventId = CRM_Core_BAO_RecurringEntity::getParentFor($formValues['entity_id'], $formValues['entity_table']); } // Get original entity $original[$startDateColumnName] = CRM_Utils_Date::processDate($formValues['repetition_start_date']); $daoName = CRM_Core_BAO_RecurringEntity::$_tableDAOMapper[$formValues['entity_table']]; if ($parentEventId) { $startDate = $original[$startDateColumnName] = CRM_Core_DAO::getFieldValue($daoName, $parentEventId, $startDateColumnName); $endDate = $original[$startDateColumnName] = $endDateColumnName ? CRM_Core_DAO::getFieldValue($daoName, $parentEventId, $endDateColumnName) : NULL; } //Check if there is any enddate column defined to find out the interval between the two range if (CRM_Utils_Array::value('intervalDateColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) { if ($endDate) { $interval = $recursion->getInterval($startDate, $endDate); $recursion->intervalDateColumns = array($endDateColumnName => $interval); } } $dates = array_merge(array($original), $recursion->generateRecursiveDates()); foreach ($dates as $key => &$value) { if ($startDateColumnName) { $value['start_date'] = CRM_Utils_Date::customFormat($value[$startDateColumnName]); } if ($endDateColumnName && !empty($value[$endDateColumnName])) { $value['end_date'] = CRM_Utils_Date::customFormat($value[$endDateColumnName]); $endDates = TRUE; } } //Show the list of participants registered for the events if any if ($formValues['entity_table'] == "civicrm_event" && !empty($parentEventId)) { $getConnectedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesForParent($parentEventId, 'civicrm_event', TRUE); if ($getConnectedEntities) { $participantDetails = CRM_Event_Form_ManageEvent_Repeat::getParticipantCountforEvent($getConnectedEntities); if (!empty($participantDetails['countByName'])) { $this->assign('participantData', $participantDetails['countByName']); } } } } $this->assign('dates', $dates); $this->assign('endDates', !empty($endDates)); return parent::run(); }