128 lines
3.6 KiB
PHP
128 lines
3.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This class generates form components for Address Format by Country
|
|
*/
|
|
class CRM_AddressFormat_Form_Address extends CRM_Core_Form {
|
|
|
|
/**
|
|
* Set variables up before form is built.
|
|
*/
|
|
public function preProcess() {
|
|
parent::preProcess();
|
|
}
|
|
|
|
/**
|
|
* Build the form object.
|
|
*/
|
|
public function buildQuickForm() {
|
|
parent::buildQuickForm();
|
|
$this->setPageTitle(ts('Country - Address Format'));
|
|
|
|
$this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
|
|
if ($this->_action & CRM_Core_Action::DELETE) {
|
|
$this->addButtons([
|
|
[
|
|
'type' => 'next',
|
|
'name' => ts('Delete'),
|
|
'isDefault' => TRUE,
|
|
],
|
|
[
|
|
'type' => 'cancel',
|
|
'name' => ts('Cancel'),
|
|
],
|
|
]);
|
|
return;
|
|
}
|
|
|
|
//get the tokens for Mailing Label field
|
|
$tokens = CRM_Core_SelectValues::contactTokens();
|
|
$this->assign('tokens', CRM_Utils_Token::formatTokensForDisplay($tokens));
|
|
$this->applyFilter('__ALL__', 'trim');
|
|
$countryList = CRM_AddressFormat_BAO_CountryAddressFormat::getCountryList($this->_id);
|
|
$this->add('select', 'country_id', ts('Country'),
|
|
['' => '- select -'] + $countryList, TRUE, ['class' => 'crm-select2 huge']
|
|
);
|
|
$this->add('textarea',
|
|
'format',
|
|
ts('Address Format'),
|
|
NULL,
|
|
TRUE
|
|
);
|
|
$this->addButtons([
|
|
[
|
|
'type' => 'next',
|
|
'name' => ts('Save'),
|
|
'isDefault' => TRUE,
|
|
],
|
|
[
|
|
'type' => 'next',
|
|
'name' => ts('Save and New'),
|
|
'subName' => 'new',
|
|
],
|
|
[
|
|
'type' => 'cancel',
|
|
'name' => ts('Cancel'),
|
|
],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Set the default values for the form.
|
|
*/
|
|
public function setDefaultValues() {
|
|
$defaults = [];
|
|
if ($this->_id) {
|
|
$result = civicrm_api3('Country', 'getsingle', [
|
|
'return' => ["id", "address_format_id.format"],
|
|
'address_format_id' => $this->_id,
|
|
]);
|
|
$defaults = [
|
|
'country_id' => $result['id'],
|
|
'format' => $result['address_format_id.format'],
|
|
];
|
|
}
|
|
return $defaults;
|
|
}
|
|
|
|
/**
|
|
* Process the form submission.
|
|
*/
|
|
public function postProcess() {
|
|
if ($this->_action & CRM_Core_Action::DELETE) {
|
|
$result = CRM_AddressFormat_BAO_CountryAddressFormat::deleteAddressFormat($this->_id);
|
|
if (!empty($result['is_error'])) {
|
|
CRM_Core_Error::statusBounce($result['error_message'], CRM_Utils_System::url('civicrm/country/addressformat', "reset=1&action=browse"), ts('Cannot Delete'));
|
|
}
|
|
CRM_Core_Session::setStatus(ts('Selected Address Format by Country has been deleted.'), ts('Record Deleted'), 'success');
|
|
}
|
|
else {
|
|
// store the submitted values in an array
|
|
$params = $this->exportValues();
|
|
try {
|
|
CRM_AddressFormat_BAO_CountryAddressFormat::processForm($params, $this->_id);
|
|
CRM_Core_Session::setStatus(ts('The Address format for the country has been saved.'), ts('Saved'), 'success');
|
|
}
|
|
catch (CRM_Core_Exception $e) {
|
|
CRM_Core_Error::statusBounce($e->getMessage());
|
|
}
|
|
|
|
$buttonName = $this->controller->getButtonName();
|
|
$session = CRM_Core_Session::singleton();
|
|
|
|
if ($buttonName == $this->getButtonName('next', 'new')) {
|
|
CRM_Core_Session::setStatus(ts(' You can add another Address format for a country.'));
|
|
$session->replaceUserContext(CRM_Utils_System::url('civicrm/country/addressformat',
|
|
"reset=1&action=add")
|
|
);
|
|
}
|
|
else {
|
|
$session->replaceUserContext(CRM_Utils_System::url('civicrm/country/addressformat',
|
|
"reset=1&action=browse")
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|