585 Zeilen
17 KiB
PHP
585 Zeilen
17 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
|
* http://www.mysqldumper.net
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage Forms_Config
|
|
* @version SVN: $Rev$
|
|
* @author $Author$
|
|
*/
|
|
|
|
/**
|
|
* Create form to input e-mail data in configuration
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage Forms_Config
|
|
*/
|
|
class Application_Form_Config_Email extends Zend_Form_SubForm
|
|
{
|
|
/**
|
|
* Language translator
|
|
* @var Msd_Language
|
|
*/
|
|
protected $_lang;
|
|
|
|
/**
|
|
* Configuration
|
|
* @var Msd_Configuration
|
|
*/
|
|
protected $_config;
|
|
|
|
/**
|
|
* Add elements to form.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function init()
|
|
{
|
|
$this->_config = Msd_Configuration::getInstance();
|
|
$this->_lang = Msd_Language::getInstance();
|
|
$this->setDisableLoadDefaultDecorators(true);
|
|
$this->setDecorators(array('SubForm'));
|
|
$this->addDisplayGroupPrefixPath(
|
|
'Msd_Form_Decorator',
|
|
'Msd/Form/Decorator/'
|
|
);
|
|
$this->setDisplayGroupDecorators(array('DisplayGroup'));
|
|
$this->_addActivateButton();
|
|
$this->_addSender();
|
|
$this->_addRecipient();
|
|
$this->_addButtonAddRecipientCc();
|
|
|
|
// add Recipients CC
|
|
$ccElements = $this->_setRecipientCc(
|
|
$this->_config->get('config.email.RecipientCc')
|
|
);
|
|
|
|
$this->_addAttachement();
|
|
$this->_addEmailProgram();
|
|
|
|
// create and add display group
|
|
$elements = array(
|
|
'sendEmail',
|
|
'SenderAddress',
|
|
'SenderName',
|
|
'RecipientAddress',
|
|
'RecipientName',
|
|
'AddCc');
|
|
// add cc-recipients
|
|
if (count($ccElements)>0) {
|
|
$elements = array_merge(
|
|
$elements,
|
|
$ccElements
|
|
);
|
|
}
|
|
$elements = array_merge(
|
|
$elements,
|
|
array(
|
|
'attachBackup',
|
|
'Maxsize',
|
|
'MaxsizeUnit',
|
|
'Program'
|
|
)
|
|
);
|
|
$this->addDisplayGroup(
|
|
$elements,
|
|
'email',
|
|
array(
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('DisplayGroup'),
|
|
'legend' => $this->_lang->getTranslator()->_('L_CONFIG_EMAIL')
|
|
)
|
|
);
|
|
|
|
$elements = array(
|
|
'SendmailCall'
|
|
);
|
|
$this->addDisplayGroup(
|
|
$elements,
|
|
'sendmailConfig',
|
|
array(
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('DisplayGroup'),
|
|
'legend' => $this->_lang->getTranslator()->_('L_SENDMAIL'),
|
|
'class' => 'sendmailConfig',
|
|
)
|
|
);
|
|
|
|
$elements = array(
|
|
'SMTPHost',
|
|
'SMTPPort',
|
|
'SMTPUserAuth',
|
|
'SMTPUser',
|
|
'SMTPPassword',
|
|
'SMTPUseSSL',
|
|
);
|
|
$this->addDisplayGroup(
|
|
$elements,
|
|
'smtpConfig',
|
|
array(
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('DisplayGroup'),
|
|
'legend' => $this->_lang->getTranslator()->_('L_SMTP'),
|
|
'class' => 'smtpConfig',
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Add e-mail activate button to form
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addActivateButton()
|
|
{
|
|
//Button send email
|
|
$this->addElement(
|
|
'radio',
|
|
'sendEmail',
|
|
array(
|
|
'class' => 'radio toggler',
|
|
'label' => 'L_SEND_MAIL_FORM',
|
|
'onclick' => "myToggle(this, 'y', 'emailToggle');",
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'multiOptions' => array(
|
|
'y' => 'L_YES',
|
|
'n' => 'L_NO',
|
|
),
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
}
|
|
/**
|
|
* Add Cc-Recipients
|
|
*
|
|
* @param array $configRecipientCc All Cc-Recipients
|
|
*
|
|
* @return array Element names to add to display group
|
|
*/
|
|
private function _setRecipientCc($recipientsCc)
|
|
{
|
|
if ($recipientsCc === null) {
|
|
return;
|
|
}
|
|
|
|
if (count($recipientsCc) == 0) {
|
|
return;
|
|
}
|
|
|
|
$elements = array();
|
|
//$i = 0;
|
|
foreach ($recipientsCc as $i => $recipient) {
|
|
//Recipient CC email
|
|
$this->addElement(
|
|
'text',
|
|
'RecipientCc_'.$i.'_Address',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_EMAIL_CC',
|
|
'listsep' => ' ',
|
|
'size' => 30,
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineStart'),
|
|
'validators' => array('EmailAddress'),
|
|
|
|
)
|
|
);
|
|
|
|
//CC name
|
|
$this->addElement(
|
|
'text',
|
|
'RecipientCc_'.$i.'_Name',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_NAME',
|
|
'listsep' => ' ',
|
|
'size' => 30,
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineMiddle'),
|
|
)
|
|
);
|
|
|
|
//button delete recipient
|
|
$confirmDelete = sprintf(
|
|
$this->_lang->getTranslator()->_('L_CONFIRM_RECIPIENT_DELETE'),
|
|
$recipient['Name']
|
|
);
|
|
$confirmDelete = Msd_Html::getJsQuote($confirmDelete, true);
|
|
$this->addElement(
|
|
'button',
|
|
'DeleteCc_'.$i,
|
|
array(
|
|
'disableLoadDefaultDecorators' => true,
|
|
'content' =>
|
|
$this->getView()->getIcon('delete') . ' ' .
|
|
$this->_lang->getTranslator()->_('L_DELETE'),
|
|
'decorators' => array('LineEnd'),
|
|
'escape' => false,
|
|
'label' => '',
|
|
'class' => 'Formbutton emailToggle',
|
|
'onclick' =>
|
|
'if (!confirm(\'Ha\')) return false;'
|
|
.' deleteEmailReciptientCc(\'' . $i .'\');',
|
|
)
|
|
);
|
|
|
|
$elements = array_merge(
|
|
$elements,
|
|
array(
|
|
'RecipientCc_'.$i.'_Address',
|
|
'RecipientCc_'.$i.'_Name',
|
|
'DeleteCc_'.$i,
|
|
)
|
|
);
|
|
$i++;
|
|
}
|
|
return $elements;
|
|
}
|
|
|
|
/**
|
|
* Adds line with sender inputs
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addSender()
|
|
{
|
|
//Sender email
|
|
$this->addElement(
|
|
'text',
|
|
'SenderAddress',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_EMAIL_SENDER',
|
|
'size' => 30,
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineStart'),
|
|
'validators' => array(
|
|
new Zend_Validate_NotEmpty(Zend_Validate_NotEmpty::STRING),
|
|
'EmailAddress'
|
|
),
|
|
)
|
|
);
|
|
|
|
//Sender name
|
|
$this->addElement(
|
|
'text',
|
|
'SenderName',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_NAME',
|
|
'size' => 30,
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineEnd'),
|
|
'validators' => array('NotEmpty'),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Add button to add a cc-recipient
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addButtonAddRecipientCc()
|
|
{
|
|
$this->addElement(
|
|
'button',
|
|
'AddCc',
|
|
array(
|
|
'disableLoadDefaultDecorators' => true,
|
|
'content' =>
|
|
$this->getView()->getIcon('plus') . ' ' .
|
|
$this->_lang->getTranslator()->_('L_ADD_RECIPIENT'),
|
|
'decorators' => array('Default'),
|
|
'escape' => false,
|
|
'label' => '',
|
|
'class' => 'Formbutton emailToggle',
|
|
'onclick' => "addEmailReciptientCc();",
|
|
)
|
|
);
|
|
}
|
|
/**
|
|
* Add line with recipient name and e-mail
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addRecipient()
|
|
{
|
|
|
|
//Recipient email
|
|
$this->addElement(
|
|
'text',
|
|
'RecipientAddress',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_EMAIL_RECIPIENT',
|
|
'size' => 30,
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineStart'),
|
|
'validators' => array('EmailAddress'),
|
|
)
|
|
);
|
|
|
|
//Recipient name
|
|
$this->addElement(
|
|
'text',
|
|
'RecipientName',
|
|
array(
|
|
'class' => 'text emailToggle',
|
|
'label' => 'L_NAME',
|
|
'size' => 30,
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineEnd'),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Add line attachement and -size to form
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addAttachement()
|
|
{
|
|
|
|
//Attach backup
|
|
$this->addElement(
|
|
'radio',
|
|
'attachBackup',
|
|
array(
|
|
'class' => 'radio emailToggle toggler',
|
|
'label' => 'L_ATTACH_BACKUP',
|
|
'onclick' => "myToggle(this, 'y', 'attachToggle');",
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'multiOptions' => array(
|
|
'y' => 'L_YES',
|
|
'n' => 'L_NO',
|
|
),
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
|
|
//Max filesize
|
|
$this->addElement(
|
|
'text',
|
|
'Maxsize',
|
|
array(
|
|
'class' => 'text right emailToggle attachToggle',
|
|
'size' => 6,
|
|
'maxlength' => 6,
|
|
'label' => 'L_EMAIL_MAXSIZE',
|
|
'listsep' => ' ',
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineStart'),
|
|
'validators' => array('Digits'),
|
|
)
|
|
);
|
|
|
|
//Max filesize unit
|
|
$this->addElement(
|
|
'select',
|
|
'MaxsizeUnit',
|
|
array(
|
|
'class' => 'select emailToggle attachToggle',
|
|
'listsep' => ' ',
|
|
'multiOptions' => array(
|
|
'kb' => 'L_UNIT_KB',
|
|
'mb' => 'L_UNIT_MB',
|
|
),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('LineEnd'),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Add select for e-mail program
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _addEmailProgram()
|
|
{
|
|
//Mail program
|
|
$this->addElement(
|
|
'select',
|
|
'Program',
|
|
array(
|
|
'class' => 'select emailToggle',
|
|
'label' => 'L_MAILPROGRAM',
|
|
'id' => 'toggleEmailSettings',
|
|
'listsep' => ' ',
|
|
'multiOptions' => array(
|
|
'php' => 'L_PHPMAIL',
|
|
'sendmail' => 'L_SENDMAIL',
|
|
'smtp' => 'L_SMTP'
|
|
),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
'onchange' => 'toggleEmailProgram();',
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'text',
|
|
'SendmailCall',
|
|
array(
|
|
'class' => 'text',
|
|
'label' => $this->_lang->getTranslator()->_('L_CALL'),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'text',
|
|
'SMTPHost',
|
|
array(
|
|
'class' => 'text',
|
|
'label' => $this->_lang->getTranslator()->_('L_SMTP_HOST'),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'text',
|
|
'SMTPPort',
|
|
array(
|
|
'class' => 'text',
|
|
'label' => $this->_lang->getTranslator()->_('L_SMTP_PORT'),
|
|
'validators' => array('Digits'),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'radio',
|
|
'SMTPUserAuth',
|
|
array(
|
|
'class' => 'radio toggler',
|
|
'label' => $this->_lang->getTranslator()->_('L_AUTHORIZE'),
|
|
'listsep' => ' ',
|
|
'multiOptions' => array(
|
|
'y' => 'L_YES',
|
|
'n' => 'L_NO',
|
|
),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
'onclick' => "myToggle(this, 'y', 'SMTPAuthToggle');",
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'text',
|
|
'SMTPUser',
|
|
array(
|
|
'class' => 'text SMTPAuthToggle',
|
|
'label' => $this->_lang->getTranslator()->_('L_USERNAME'),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
'rowclass' => 'SMTPAuth',
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'text',
|
|
'SMTPPassword',
|
|
array(
|
|
'class' => 'text SMTPAuthToggle',
|
|
'label' => $this->_lang->getTranslator()->_('L_PASSWORD'),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
'rowclass' => 'SMTPAuth',
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'radio',
|
|
'SMTPUseSSL',
|
|
array(
|
|
'class' => 'radio',
|
|
'label' => $this->_lang->getTranslator()->_('L_USE_SSL'),
|
|
'listsep' => ' ',
|
|
'multiOptions' => array(
|
|
'y' => 'L_YES',
|
|
'n' => 'L_NO',
|
|
),
|
|
'disableLoadDefaultDecorators' => true,
|
|
'decorators' => array('Default'),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Extracts an multi array from flat element names and values
|
|
*
|
|
* @param array $data The values to extract index and values from
|
|
*
|
|
* @return array The converted array
|
|
*/
|
|
public function getValidValues($data)
|
|
{
|
|
$values = parent::getValidValues($data, true);
|
|
$newArray = array();
|
|
while (false !== (list($key, $value) = each($values))) {
|
|
if (substr($key, 0, 18) != 'email_RecipientCc_') {
|
|
continue;
|
|
}
|
|
list($prefix, $index, $fieldKey) = explode('_', $key);
|
|
if (!isset($values['email_Recipient'])) {
|
|
$values[$prefix] = array();
|
|
}
|
|
if (!isset($newArray[$index])) {
|
|
$newArray[$index] = array();
|
|
}
|
|
$newArray[$index][$fieldKey] = $value;
|
|
unset($values[$key]);
|
|
}
|
|
|
|
$values['email_RecipientCc'] = array_values($newArray);
|
|
|
|
return $values;
|
|
}
|
|
|
|
/**
|
|
* Set default values
|
|
*
|
|
* @param $defaults
|
|
*
|
|
* @return Zend_Form
|
|
*/
|
|
public function setDefaults($defaults)
|
|
{
|
|
if (isset($defaults['email']['RecipientCc'])) {
|
|
$recipientCc = array();
|
|
while (false !== (list($recipientCcId, $recipientCcData) =
|
|
each($defaults['email']['RecipientCc']))) {
|
|
foreach ($recipientCcData as $key => $value) {
|
|
$recipientCc['RecipientCc_' .
|
|
$recipientCcId . '_' . $key] = $value;
|
|
}
|
|
}
|
|
unset($defaults['email']['RecipientCc']);
|
|
$defaults['email'] = array_merge(
|
|
$defaults['email'],
|
|
$recipientCc
|
|
);
|
|
}
|
|
return parent::setDefaults($defaults);
|
|
}
|
|
/**
|
|
* Set input default value
|
|
*
|
|
* @param string $name
|
|
* @param string $value
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setDefault($name, $value)
|
|
{
|
|
$name = str_replace('.', '_', $name);
|
|
parent::setDefault($name, $value);
|
|
}
|
|
|
|
}
|