X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FEvent%2FForm%2FManageEvent%2FEventInfo.php;h=db2d950951b2ac5886cbf4c2570df6b160f824de;hb=8c605c27ff34fbbbcbb9c75caf8303941c1934db;hp=6fc7fac1c2644f32fb19c585c19bd8e22b2eec53;hpb=832f3e1f078d2ae5fcd1ea70276f16716080af6d;p=civicrm-core.git diff --git a/CRM/Event/Form/ManageEvent/EventInfo.php b/CRM/Event/Form/ManageEvent/EventInfo.php index 6fc7fac1c2..db2d950951 100644 --- a/CRM/Event/Form/ManageEvent/EventInfo.php +++ b/CRM/Event/Form/ManageEvent/EventInfo.php @@ -37,6 +37,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { /** * Event type. + * @var int */ protected $_eventType = NULL; @@ -47,10 +48,11 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { parent::preProcess(); $this->assign('selectedChild', 'settings'); - if ($this->_id) { - $this->assign('entityID', $this->_id); + $entityID = $this->_id ?: $this->_templateId; + if ($entityID) { + $this->assign('entityID', $entityID); $eventType = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', - $this->_id, + $entityID, 'event_type_id' ); } @@ -126,7 +128,6 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { if ($this->_eventType) { $this->assign('customDataSubType', $this->_eventType); } - $this->assign('entityId', $this->_id); $this->_first = TRUE; $this->applyFilter('__ALL__', 'trim'); @@ -139,11 +140,11 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { if ($this->_action & CRM_Core_Action::ADD) { $eventTemplates = CRM_Event_PseudoConstant::eventTemplates(); if (CRM_Utils_System::isNull($eventTemplates) && !$this->_isTemplate) { - $url = CRM_Utils_System::url('civicrm/admin/eventTemplate', array('reset' => 1)); - CRM_Core_Session::setStatus(ts('If you find that you are creating multiple events with similar settings, you may want to use the Event Templates feature to streamline your workflow.', array(1 => $url)), ts('Tip'), 'info'); + $url = CRM_Utils_System::url('civicrm/admin/eventTemplate', ['reset' => 1]); + CRM_Core_Session::setStatus(ts('If you find that you are creating multiple events with similar settings, you may want to use the Event Templates feature to streamline your workflow.', [1 => $url]), ts('Tip'), 'info'); } if (!CRM_Utils_System::isNull($eventTemplates)) { - $this->add('select', 'template_id', ts('From Template'), array('' => ts('- select -')) + $eventTemplates, FALSE, array('class' => 'crm-select2 huge')); + $this->add('select', 'template_id', ts('From Template'), ['' => ts('- select -')] + $eventTemplates, FALSE, ['class' => 'crm-select2 huge']); } // Make sure this form redirects properly $this->preventAjaxSubmit(); @@ -153,7 +154,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $this->add('text', 'title', ts('Event Title'), $attributes['event_title'], !$this->_isTemplate); $this->addSelect('event_type_id', - array('onChange' => "CRM.buildCustomData( 'Event', this.value );"), + ['onChange' => "CRM.buildCustomData( 'Event', this.value );"], TRUE ); @@ -164,12 +165,12 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { } CRM_Campaign_BAO_Campaign::addCampaign($this, $campaignId); - $this->addSelect('default_role_id', array(), TRUE); + $this->addSelect('default_role_id', [], TRUE); - $this->addSelect('participant_listing_id', array('placeholder' => ts('Disabled'), 'option_url' => NULL)); + $this->addSelect('participant_listing_id', ['placeholder' => ts('Disabled'), 'option_url' => NULL]); $this->add('textarea', 'summary', ts('Event Summary'), $attributes['summary']); - $this->add('wysiwyg', 'description', ts('Complete Description'), $attributes['event_description'] + array('preset' => 'civievent')); + $this->add('wysiwyg', 'description', ts('Complete Description'), $attributes['event_description'] + ['preset' => 'civievent']); $this->addElement('checkbox', 'is_public', ts('Public Event')); $this->addElement('checkbox', 'is_share', ts('Allow sharing through social media?')); $this->addElement('checkbox', 'is_map', ts('Include Map to Event Location')); @@ -178,14 +179,14 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $this->add('datepicker', 'end_date', ts('End'), [], FALSE, ['time' => TRUE]); $this->add('number', 'max_participants', ts('Max Number of Participants'), - array('onchange' => "if (this.value != '') {cj('#id-waitlist').show(); showHideByValue('has_waitlist','0','id-waitlist-text','table-row','radio',false); showHideByValue('has_waitlist','0','id-event_full','table-row','radio',true); return;} else {cj('#id-event_full, #id-waitlist, #id-waitlist-text').hide(); return;}") + ['onchange' => "if (this.value != '') {cj('#id-waitlist').show(); showHideByValue('has_waitlist','0','id-waitlist-text','table-row','radio',false); showHideByValue('has_waitlist','0','id-event_full','table-row','radio',true); return;} else {cj('#id-event_full, #id-waitlist, #id-waitlist-text').hide(); return;}"] ); $this->addRule('max_participants', ts('Max participants should be a positive number'), 'positiveInteger'); $participantStatuses = CRM_Event_PseudoConstant::participantStatus(); $waitlist = 0; if (in_array('On waitlist', $participantStatuses) and in_array('Pending from waitlist', $participantStatuses)) { - $this->addElement('checkbox', 'has_waitlist', ts('Offer a Waitlist?'), NULL, array('onclick' => "showHideByValue('has_waitlist','0','id-event_full','table-row','radio',true); showHideByValue('has_waitlist','0','id-waitlist-text','table-row','radio',false);")); + $this->addElement('checkbox', 'has_waitlist', ts('Offer a Waitlist?'), NULL, ['onclick' => "showHideByValue('has_waitlist','0','id-event_full','table-row','radio',true); showHideByValue('has_waitlist','0','id-waitlist-text','table-row','radio',false);"]); $this->add('textarea', 'waitlist_text', ts('Waitlist Message'), $attributes['waitlist_text']); $waitlist = 1; } @@ -195,7 +196,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $this->addElement('checkbox', 'is_active', ts('Is this Event Active?')); - $this->addFormRule(array('CRM_Event_Form_ManageEvent_EventInfo', 'formRule')); + $this->addFormRule(['CRM_Event_Form_ManageEvent_EventInfo', 'formRule']); parent::buildQuickForm(); } @@ -209,7 +210,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { * list of errors to be posted back to the form */ public static function formRule($values) { - $errors = array(); + $errors = []; if (!empty($values['end_date']) && ($values['end_date'] < $values['start_date'])) { $errors['end_date'] = ts('End date should be after Start date.'); @@ -227,7 +228,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { * Process the form submission. */ public function postProcess() { - $params = $this->controller->exportValues($this->_name); + $params = array_merge($this->controller->exportValues($this->_name), $this->_submitValues); //format params $params['start_date'] = CRM_Utils_Array::value('start_date', $params); @@ -240,19 +241,23 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $params['default_role_id'] = CRM_Utils_Array::value('default_role_id', $params, FALSE); $params['id'] = $this->_id; - $customFields = CRM_Core_BAO_CustomField::getFields('Event', FALSE, FALSE, - CRM_Utils_Array::value('event_type_id', $params) - ); - $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, - $this->_id, - 'Event' - ); - //merge params with defaults from templates if (!empty($params['template_id'])) { $params = array_merge(CRM_Event_BAO_Event::getTemplateDefaultValues($params['template_id']), $params); + foreach ($params as $key => $value) { + $customFieldInfo = CRM_Core_BAO_CustomField::getKeyID($key, TRUE); + if (!empty($customFieldInfo[1])) { + $params[str_replace($customFieldInfo[1], '-' . $customFieldInfo[1], $key)] = $value; + unset($params[$key]); + } + } } + $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, + $this->_id, + 'Event' + ); + // now that we have the event’s id, do some more template-based stuff if (!empty($params['template_id'])) { $event = CRM_Event_BAO_Event::copy($params['template_id'], $params); @@ -273,7 +278,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $url = 'civicrm/event/manage'; $urlParams = 'reset=1'; CRM_Core_Session::setStatus(ts("'%1' information has been saved.", - array(1 => $this->getTitle()) + [1 => $this->getTitle()] ), ts('Saved'), 'success'); }