X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMailing%2FForm%2FGroup.php;h=dcca8afc628cb1b941050c7f877170465f823089;hb=63f63f5a548ec1293e4daf26fd84349f72e2e6c4;hp=0eabfee791fd2ed0633e225d1ce822cfd35a7886;hpb=06de146ebc52906d0c9805c75bb8dbfdc4a6aa8a;p=civicrm-core.git
diff --git a/CRM/Mailing/Form/Group.php b/CRM/Mailing/Form/Group.php
index 0eabfee791..dcca8afc62 100644
--- a/CRM/Mailing/Form/Group.php
+++ b/CRM/Mailing/Form/Group.php
@@ -1,9 +1,9 @@
default mailbox has not been configured. You will find more info in our online user and administrator guide.', array(1 => CRM_Utils_System::url('civicrm/admin/mailSettings', 'reset=1'), 2 => "http://book.civicrm.org/user/advanced-configuration/email-system-configuration/")));
+ CRM_Core_Error::fatal(ts('The default mailbox has not been configured. You will find more info in our online user and administrator guide.', array(
+ 1 => CRM_Utils_System::url('civicrm/admin/mailSettings', 'reset=1'),
+ 2 => "http://book.civicrm.org/user/advanced-configuration/email-system-configuration/",
+ )));
}
$this->_mailingID = CRM_Utils_Request::retrieve('mid', 'Integer', $this, FALSE, NULL);
@@ -89,21 +91,19 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
/**
- * This function sets the default values for the form.
+ * Set default values for the form.
* the default values are retrieved from the database
*
- * @access public
*
* @return void
*/
- function setDefaultValues() {
+ public function setDefaultValues() {
$continue = CRM_Utils_Request::retrieve('continue', 'String', $this, FALSE, NULL);
$defaults = array();
$defaults['dedupe_email'] = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME,
'dedupe_email_default', NULL, FALSE
);
-
if ($this->_mailingID) {
// check that the user has permission to access mailing id
CRM_Mailing_BAO_Mailing::checkPermission($this->_mailingID);
@@ -124,12 +124,14 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$defaults['campaign_id'] = $mailing->campaign_id;
$defaults['dedupe_email'] = $mailing->dedupe_email;
+ $defaults['location_type_id'] = $mailing->location_type_id;
+ $defaults['email_selection_method'] = $mailing->email_selection_method;
$dao = new CRM_Mailing_DAO_MailingGroup();
$mailingGroups = array(
- 'civicrm_group' => array( ),
- 'civicrm_mailing' => array( )
+ 'civicrm_group' => array(),
+ 'civicrm_mailing' => array(),
);
$dao->mailing_id = $this->_mailingID;
$dao->find();
@@ -157,8 +159,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$showGroupSelector = TRUE;
if ($this->_searchBasedMailing) {
$showGroupSelector = FALSE;
- $formElements = array('includeGroups', 'excludeGroups', 'includeMailings', 'excludeMailings');
- $formValues = $this->controller->exportValues($this->_name);
+ $formElements = array('includeGroups', 'excludeGroups', 'includeMailings', 'excludeMailings');
+ $formValues = $this->controller->exportValues($this->_name);
foreach ($formElements as $element) {
if (!empty($formValues[$element])) {
$showGroupSelector = TRUE;
@@ -181,10 +183,9 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
/**
- * Function to actually build the form
+ * Build the form object.
*
* @return void
- * @access public
*/
public function buildQuickForm() {
@@ -213,11 +214,18 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
//dedupe on email option
$this->addElement('checkbox', 'dedupe_email', ts('Remove duplicate emails?'));
+ // location types
+ $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', array('id' => 'display_name'));
+ $this->addElement('select', 'location_type_id', ts("Location Type"), array('' => ts('Automatic')) + $locationTypes);
+
+ $methods = CRM_Core_SelectValues::emailSelectMethods();
+ $this->addElement('select', 'email_selection_method', ts("Email Selection Method"), $methods);
+
//get the mailing groups.
$groups = CRM_Core_PseudoConstant::nestedGroup('Mailing');
if ($hiddenMailingGroup) {
- $groups[$hiddenMailingGroup] =
- CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $hiddenMailingGroup, 'title');
+ $groups[$hiddenMailingGroup]
+ = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $hiddenMailingGroup, 'title');
}
$mailings = CRM_Mailing_PseudoConstant::completed();
@@ -230,12 +238,13 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
//when the context is search add base group's.
if ($this->_searchBasedMailing) {
- //get the static groups
- $staticGroups = CRM_Core_PseudoConstant::staticGroup(FALSE, 'Mailing');
+ //CRM-16600 Include Smart Groups in Unsubscribe list as that matches
+ //all other practices in CiviMail
$this->add('select', 'baseGroup',
ts('Unsubscription Group'),
array(
- '' => ts('- select -')) + CRM_Contact_BAO_Group::getGroupsHierarchy($staticGroups, NULL, ' ', TRUE),
+ '' => ts('- select -'),
+ ) + $groups,
TRUE,
array('class' => 'crm-select2 huge')
);
@@ -278,8 +287,9 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$this->addFormRule(array('CRM_Mailing_Form_Group', 'formRule'));
$buttons = array(
- array('type' => 'next',
- 'name' => ts('Next >>'),
+ array(
+ 'type' => 'next',
+ 'name' => ts('Next'),
'spacing' => ' ',
'isDefault' => TRUE,
),
@@ -297,7 +307,7 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$this->assign('groupCount', count($groups));
$this->assign('mailingCount', count($mailings));
- if(count($groups) == 0 && count($mailings) == 0 && !$this->_searchBasedMailing) {
+ if (count($groups) == 0 && count($mailings) == 0 && !$this->_searchBasedMailing) {
CRM_Core_Error::statusBounce("To send a mailing, you must have a valid group of recipients - either at least one group that's a Mailing List or at least one previous mailing or start from a search");
}
}
@@ -314,9 +324,9 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
if ($this->_resultSelectOption == 'ts_sel') {
// create a static grp if only a subset of result set was selected:
- $randID = md5(time());
+ $randID = md5(time());
$grpTitle = "Hidden Group {$randID}";
- $grpID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $grpTitle, 'id', 'title');
+ $grpID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $grpTitle, 'id', 'title');
if (!$grpID) {
$groupParams = array(
@@ -333,8 +343,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$newGroupTitle = "Hidden Group {$grpID}";
$groupParams = array(
- 'id' => $grpID,
- 'name' => CRM_Utils_String::titleToVar($newGroupTitle),
+ 'id' => $grpID,
+ 'name' => CRM_Utils_String::titleToVar($newGroupTitle),
'title' => $newGroupTitle,
'group_type' => array('2' => 1),
);
@@ -347,7 +357,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
else {
//get the hidden smart group id.
$ssId = $this->get('ssID');
- $hiddenSmartParams = array('group_type' => array('2' => 1),
+ $hiddenSmartParams = array(
+ 'group_type' => array('2' => 1),
'form_values' => $this->get('formValues'),
'saved_search_id' => $ssId,
'search_custom_id' => $this->get('customSearchID'),
@@ -373,20 +384,28 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
foreach (
- array('name', 'group_id', 'search_id', 'search_args', 'campaign_id', 'dedupe_email') as $n
+ array(
+ 'name',
+ 'group_id',
+ 'search_id',
+ 'search_args',
+ 'campaign_id',
+ 'dedupe_email',
+ 'location_type_id',
+ 'email_selection_method',
+ ) as $n
) {
if (!empty($values[$n])) {
$params[$n] = $values[$n];
}
}
-
$qf_Group_submit = $this->controller->exportValue($this->_name, '_qf_Group_submit');
$this->set('name', $params['name']);
- $inGroups = $values['includeGroups'];
- $outGroups = $values['excludeGroups'];
- $inMailings = $values['includeMailings'];
+ $inGroups = $values['includeGroups'];
+ $outGroups = $values['excludeGroups'];
+ $inMailings = $values['includeMailings'];
$outMailings = $values['excludeMailings'];
if (is_array($inGroups)) {
@@ -420,8 +439,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
}
- $session = CRM_Core_Session::singleton();
- $params['groups'] = $groups;
+ $session = CRM_Core_Session::singleton();
+ $params['groups'] = $groups;
$params['mailings'] = $mailings;
$ids = array();
if ($this->get('mailing_id')) {
@@ -434,8 +453,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
// delete previous includes/excludes, if mailing already existed
foreach (array('groups', 'mailings') as $entity) {
- $mg = new CRM_Mailing_DAO_MailingGroup();
- $mg->mailing_id = $ids['mailing_id'];
+ $mg = new CRM_Mailing_DAO_MailingGroup();
+ $mg->mailing_id = $ids['mailing_id'];
$mg->entity_table = ($entity == 'groups') ? $groupTableName : $mailingTableName;
$mg->find();
while ($mg->fetch()) {
@@ -449,7 +468,6 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$params['created_id'] = $session->get('userID');
$params['created_date'] = date('YmdHis');
}
-
$mailing = CRM_Mailing_BAO_Mailing::create($params, $ids);
$this->set('mailing_id', $mailing->id);
@@ -465,8 +483,6 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
CRM_Mailing_BAO_Mailing::getRecipients(
$mailing->id,
$mailing->id,
- NULL,
- NULL,
TRUE,
$dedupeEmail
);
@@ -523,9 +539,8 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
/**
- * Display Name of the form
+ * Display Name of the form.
*
- * @access public
*
* @return string
*/
@@ -534,15 +549,15 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
}
/**
- * global validation rules for the form
+ * Global validation rules for the form.
*
- * @param array $fields posted values of the form
+ * @param array $fields
+ * Posted values of the form.
*
- * @return array list of errors to be posted back to the form
- * @static
- * @access public
+ * @return array
+ * list of errors to be posted back to the form
*/
- static function formRule($fields) {
+ public static function formRule($fields) {
$errors = array();
if (isset($fields['includeGroups']) &&
is_array($fields['includeGroups']) &&
@@ -580,7 +595,16 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task {
$errors['search_id'] = ts('You must select a search to filter');
}
+ if (!empty($fields['location_type_id'])) {
+ if ($fields['email_selection_method'] == 'automatic') {
+ $errors['location_type_id'] = ts("If 'Email Selection Method' is automatic, you are not allowed to choose any 'Location Type'");
+ }
+ }
+ elseif ($fields['email_selection_method'] != 'automatic') {
+ $errors['email_selection_method'] = ts("If 'Location Type' is not selected, you must set the 'Email Selection Method' to automatic as well.");
+ }
+
return empty($errors) ? TRUE : $errors;
}
-}
+}