<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.6 |
+ | CiviCRM version 4.7 |
+--------------------------------------------------------------------+
- | Copyright (C) 2011 Marty Wright |
- | Licensed to CiviCRM under the Academic Free License version 3.0. |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
*
* @package CRM
* @copyright CiviCRM LLC (c) 2004-2015
- * $Id$
- *
*/
/**
- * This class generates form components for Scheduling Reminders
- *
+ * This class generates form components for Scheduling Reminders.
*/
class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
/**
* Build the form object.
- *
- * @return void
*/
public function buildQuickForm() {
parent::buildQuickForm();
$providersCount = CRM_SMS_BAO_Provider::activeProviderCount();
$this->_context = CRM_Utils_Request::retrieve('context', 'String', $this);
+ //CRM-16777: Don't provide access to administer schedule reminder page, with user that does not have 'administer CiviCRM' permission
+ if (empty($this->_context) && !CRM_Core_Permission::check('administer CiviCRM')) {
+ CRM_Core_Error::fatal(ts('You do not have permission to access this page.'));
+ }
+ //CRM-16777: When user have ACLs 'edit' permission for specific event, do not give access to add, delete & updtae
+ //schedule reminder for other events.
+ else {
+ $this->_compId = CRM_Utils_Request::retrieve('compId', 'Integer', $this);
+ if (!CRM_Event_BAO_Event::checkPermission($this->_compId, CRM_Core_Permission::EDIT)) {
+ CRM_Core_Error::fatal(ts('You do not have permission to access this page.'));
+ }
+ }
+
if ($this->_action & (CRM_Core_Action::DELETE)) {
$reminderName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_ActionSchedule', $this->_id, 'title');
if ($this->_context == 'event') {
CRM_Core_PseudoConstant::nestedGroup('Mailing'), FALSE, array('class' => 'crm-select2 huge')
);
+ // multilingual only options
+ $multilingual = CRM_Core_I18n::isMultilingual();
+ if ($multilingual) {
+ $smarty = CRM_Core_Smarty::singleton();
+ $smarty->assign('multilingual', $multilingual);
+
+ $languages = CRM_Core_I18n::languages(TRUE);
+ $languageFilter = $languages + array(CRM_Core_I18n::NONE => ts('Contacts with no preferred language'));
+ $element = $this->add('select', 'filter_contact_language', ts('Recipients language'), $languageFilter, FALSE,
+ array('multiple' => TRUE, 'class' => 'crm-select2', 'placeholder' => TRUE));
+
+ $communicationLanguage = array(
+ '' => ts('System default language'),
+ CRM_Core_I18n::AUTO => ts('Follow recipient preferred language')
+ );
+ $communicationLanguage = $communicationLanguage + $languages;
+ $this->add('select', 'communication_language', ts('Communication language'), $communicationLanguage);
+ }
+
CRM_Mailing_BAO_Mailing::commonCompose($this);
$this->add('text', 'subject', ts('Subject'),
$defaults['recipient'] = 'manual';
$defaults['recipient_manual_id'] = $defaults['recipient_manual'];
}
+ if ($contactLanguage = CRM_Utils_Array::value('filter_contact_language', $defaults)) {
+ $defaults['filter_contact_language'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $contactLanguage);
+ }
}
return $defaults;
/**
* Process the form submission.
- *
- *
- * @return void
*/
public function postProcess() {
if ($this->_action & CRM_Core_Action::DELETE) {
$params['end_date'] = 'null';
}
+ // multilingual options
+ $params['filter_contact_language'] = CRM_Utils_Array::value('filter_contact_language', $values, NULL);
+ $params['filter_contact_language'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $params['filter_contact_language']);
+ $params['communication_language'] = CRM_Utils_Array::value('communication_language', $values, NULL);
+
if ($this->_action & CRM_Core_Action::UPDATE) {
$params['id'] = $this->_id;
}