From fd1abec42b3908670ebf1ade285ba3bdd79e4aa2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 5 Sep 2014 12:47:12 +0100 Subject: [PATCH] validation on ajax request-show error in dialog, setdefaults correction and moved the function to BAO/RecurringEntity --- CRM/Core/BAO/RecurringEntity.php | 29 ++++++++++++- CRM/Core/Form/RecurringEntity.php | 30 +------------- CRM/Core/Page/AJAX/RecurringEntity.php | 46 +++++++++------------ CRM/Event/Form/ManageEvent/Repeat.php | 8 +--- templates/CRM/Core/Form/RecurringEntity.tpl | 28 +++++++++---- 5 files changed, 70 insertions(+), 71 deletions(-) diff --git a/CRM/Core/BAO/RecurringEntity.php b/CRM/Core/BAO/RecurringEntity.php index 99959d0bcf..5703dc98f6 100644 --- a/CRM/Core/BAO/RecurringEntity.php +++ b/CRM/Core/BAO/RecurringEntity.php @@ -312,6 +312,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { if($scheduleReminderDetails['repetition_frequency_interval']){ $r->interval($scheduleReminderDetails['repetition_frequency_interval']); + }else{ + $r->errors[] = 'Repeats every: is a required field'; } //week @@ -369,11 +371,34 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { } if(!$scheduleReminderDetails['start_action_offset'] && !$scheduleReminderDetails['absolute_date']){ - CRM_Core_Error::fatal("Could not find end limit for repeat configuration"); + $r->errors[] = 'Ends: is a required field'; } + }else{ + $r->errors[] = 'Repeats: is a required field'; } return $r; } + /* + * Get Reminder id based on event id + */ + static public function getReminderDetailsByEventId($eventId, $used_for){ + if($eventId){ + $query = " + SELECT * + FROM civicrm_action_schedule + WHERE entity_value = %1"; + if($used_for){ + $query .= " AND used_for = %2"; + } + $params = array( + 1 => array($eventId, 'Integer'), + 2 => array($used_for, 'String') + ); + $dao = CRM_Core_DAO::executeQuery($query, $params); + $dao->fetch(); + } + return $dao; + } - } +} diff --git a/CRM/Core/Form/RecurringEntity.php b/CRM/Core/Form/RecurringEntity.php index 5156d6c87d..af46f98218 100644 --- a/CRM/Core/Form/RecurringEntity.php +++ b/CRM/Core/Form/RecurringEntity.php @@ -366,35 +366,7 @@ class CRM_Core_Form_RecurringEntity { } } } - - /* - * Get Reminder id based on event id - */ - static public function getReminderDetailsByEventId($eventId=''){ - if(!empty($eventId)){ - $query = " - SELECT * - FROM civicrm_action_schedule - WHERE entity_value = '".$eventId."'"; - $dao = CRM_Core_DAO::executeQuery($query); - $dao->fetch(); - } - return $dao; - } - - //It is a repeating event if, there exists a parent for an event - static public function checkParentExistsForThisId($currentEventId){ - if(!empty($currentEventId)){ - $query = " - SELECT parent_id - FROM civicrm_recurring_entity - WHERE entity_id = ".$currentEventId; - $dao = CRM_Core_DAO::executeQuery($query); - $dao->fetch(); - } - return $dao; - } - + static public function getAllConnectedEvents($parentId=''){ if(!empty($parentId)){ $query = " diff --git a/CRM/Core/Page/AJAX/RecurringEntity.php b/CRM/Core/Page/AJAX/RecurringEntity.php index a90eb0f720..9af2a244d5 100644 --- a/CRM/Core/Page/AJAX/RecurringEntity.php +++ b/CRM/Core/Page/AJAX/RecurringEntity.php @@ -39,37 +39,31 @@ class CRM_Core_Page_AJAX_RecurringEntity { $params = $formValues = $recurDates = array(); $formValues = $_REQUEST; if(!empty($formValues)){ - //Check for mandatory fields -// if(!CRM_Utils_Array::value('repetition_frequency_unit', $formValues)){ -// $recurDates['errors']['repetition_frequency_unit'] = 'Repeats is a required field'; -// } -// if(!CRM_Utils_Array::value('repetition_frequency_interval', $formValues)){ -// $recurDates['errors']['repetition_frequency_interval'] = 'Repeats every is a required field'; -// } -// if(!CRM_Utils_Array::value('start_action_offset', $formValues) && !CRM_Utils_Array::value('repeat_absolute_date', $formValues)){ -// $recurDates['errors']['start_action_offset'] = 'Ends is a required field'; -// } - $dbParams = CRM_Core_BAO_RecurringEntity::mapFormValuesToDB($formValues); if(!empty($dbParams)){ $recursionObject = CRM_Core_BAO_RecurringEntity::getRecursionFromReminderByDBParams($dbParams); - if(CRM_Utils_Array::value('event_id', $formValues)){ - $parent_event_id = CRM_Core_BAO_RecurringEntity::getParentFor($formValues['event_id'], 'civicrm_event'); - if(!$parent_event_id){ - $parent_event_id = $formValues['event_id']; + // Check if there were any errors + if($recursionObject->errors){ + $recurDates['errors'] = $recursionObject->errors; + }else{ + if(CRM_Utils_Array::value('event_id', $formValues)){ + $parent_event_id = CRM_Core_BAO_RecurringEntity::getParentFor($formValues['event_id'], 'civicrm_event'); + if(!$parent_event_id){ + $parent_event_id = $formValues['event_id']; + } + $params['parent_event_id'] = $parent_event_id; + $params['parent_event_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['parent_event_id'], 'start_date'); + $params['parent_event_end_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['parent_event_id'], 'end_date'); } - $params['parent_event_id'] = $parent_event_id; - $params['parent_event_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['parent_event_id'], 'start_date'); - $params['parent_event_end_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['parent_event_id'], 'end_date'); - } - $recurResult = CRM_Core_Form_RecurringEntity::generateRecursions($recursionObject, $params); - $count = 1; - foreach ($recurResult as $key => $value) { - $recurDates[$count]['start_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value['start_date'])); - if($value['end_date']){ - $recurDates[$count]['end_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value['end_date'])); + $recurResult = CRM_Core_Form_RecurringEntity::generateRecursions($recursionObject, $params); + $count = 1; + foreach ($recurResult as $key => $value) { + $recurDates[$count]['start_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value['start_date'])); + if($value['end_date']){ + $recurDates[$count]['end_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value['end_date'])); + } + $count++; } - $count++; } } } diff --git a/CRM/Event/Form/ManageEvent/Repeat.php b/CRM/Event/Form/ManageEvent/Repeat.php index 680bb13347..7d8546e930 100644 --- a/CRM/Event/Form/ManageEvent/Repeat.php +++ b/CRM/Event/Form/ManageEvent/Repeat.php @@ -55,7 +55,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { $checkParentExistsForThisId; //If this ID has parent, send parent id if($checkParentExistsForThisId){ - $this->_scheduleReminderDetails = CRM_Core_Form_RecurringEntity::getReminderDetailsByEventId($checkParentExistsForThisId); + $this->_scheduleReminderDetails = CRM_Core_BAO_RecurringEntity::getReminderDetailsByEventId($checkParentExistsForThisId, 'event'); $this->_parentEventId = $checkParentExistsForThisId; /** @@ -87,7 +87,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { } }else{ //ELse send this id as parent - $this->_scheduleReminderDetails = CRM_Core_Form_RecurringEntity::getReminderDetailsByEventId($this->_id); + $this->_scheduleReminderDetails = CRM_Core_BAO_RecurringEntity::getReminderDetailsByEventId($this->_id, 'event'); $this->_parentEventId = $this->_id; } //Assign this to hide summary @@ -184,10 +184,6 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { $url = 'civicrm/event/manage/repeat'; $urlParams = "action=update&reset=1&id={$this->_id}"; - //Check if isChangeInRepeatConfiguration is set in params -// if($params['isChangeInRepeatConfiguration'] == 1){ -// CRM_Core_Form_RecurringEntity::updateRecurCriterias($this->_id); -// } CRM_Core_Form_RecurringEntity::postProcess($params, 'event'); CRM_Utils_System::redirect(CRM_Utils_System::url($url, $urlParams)); //CRM_Core_Error::debug_var('Event Recursion'); diff --git a/templates/CRM/Core/Form/RecurringEntity.tpl b/templates/CRM/Core/Form/RecurringEntity.tpl index b8cc38be8a..e15adae26c 100644 --- a/templates/CRM/Core/Form/RecurringEntity.tpl +++ b/templates/CRM/Core/Form/RecurringEntity.tpl @@ -297,20 +297,32 @@ data: formData, url: ajaxurl, success: function (result) { + var errors = []; var html = 'Based on your repeat configuration here is the list of event dates, Do you wish to proceed creating events for these dates?
'; var count = 1; for(var i in result) { - var start_date = result[i].start_date; - var end_date = result[i].end_date; - - var end_date_text = ''; - if(end_date !== undefined){ - end_date_text = ''; + if(i != 'errors'){ + var start_date = result[i].start_date; + var end_date = result[i].end_date; + + var end_date_text = ''; + if(end_date !== undefined){ + end_date_text = ''; + } + html += ''+end_date_text+''; + count = count + 1; + }else{ + errors = result.errors; } - html += ''+end_date_text+''; - count = count + 1; } html += '
Sr NoStart dateEnd date
'+end_date+''+end_date+'
'+count+''+start_date+'
'+count+''+start_date+'
'; + if(errors.length > 0){ + alert('hey'); + html = ''; + for (var j = 0; j < errors.length; j++) { + html += '* ' + errors[j] + '
'; + } + } cj('#generated_dates').html(html); if(end_date_text == ""){ cj('#th-end-date').hide(); -- 2.25.1