1
0
Fork 0
MySQLDumper/application/forms/Config/Ftp.php

418 Zeilen
12 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 ftp data on configuration screen
*
* @package MySQLDumper
* @subpackage Forms_Config
*/
class Application_Form_Config_Ftp extends Zend_Form_SubForm
{
/**
* Msd Translator
* @var Msd_Language
*/
protected $_lang;
/**
* Init form and add all elements
*
* @return void
*/
public function init()
{
$config = Msd_Registry::getConfig();
$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->_addButtonFtpAdd();
$ftpConfig = $config->getParam('ftp');
$ftpKeys = array_keys($ftpConfig);
$nrOfFtpProfiles = count($ftpKeys);
foreach ($ftpKeys as $ftpConnectionId) {
$this->_addRadioActivated($ftpConnectionId);
$this->_addInputTimeout($ftpConnectionId);
$this->_addCheckboxPassiveMode($ftpConnectionId);
$this->_addCheckboxSsl($ftpConnectionId);
$this->_addInputServerAndPort($ftpConnectionId);
$this->_addInputUserAndPass($ftpConnectionId);
$this->_addInputPath($ftpConnectionId);
if ($nrOfFtpProfiles > 1) {
$buttonDelete = 'ftpDelete' . $ftpConnectionId;
} else {
$buttonDelete = '';
}
$this->_addButtonsTestAndDelete($ftpConnectionId, $buttonDelete);
$legend = $this->_lang->getTranslator()->_('L_FTP_CONNECTION') . ' ' . ($ftpConnectionId + 1);
$this->addDisplayGroup(
array(
'ftp_' . $ftpConnectionId . '_use',
'ftp_' . $ftpConnectionId . '_timeout',
'ftp_' . $ftpConnectionId . '_passiveMode',
'ftp_' . $ftpConnectionId . '_ssl',
'ftp_' . $ftpConnectionId . '_server',
'ftp_' . $ftpConnectionId . '_port',
'ftp_' . $ftpConnectionId . '_user',
'ftp_' . $ftpConnectionId . '_pass',
'ftp_' . $ftpConnectionId . '_dir',
'ftpCheck' . $ftpConnectionId,
$buttonDelete,
),
'ftp' . $ftpConnectionId,
array(
'disableLoadDefaultDecorators' => true,
'decorators' => array('DisplayGroup'),
'legend' => $legend,
)
);
}
}
/**
* Add button "Add ftp connection"
*
* @return void
*/
private function _addButtonFtpAdd()
{
$this->addElement(
'button',
'headElement',
array(
'disableLoadDefaultDecorators' => true,
'content' =>
$this->getView()->getIcon('plus') . ' ' .
$this->_lang->getTranslator()->_('L_FTP_ADD_CONNECTION'),
'decorators' => array('Default'),
'escape' => false,
'label' => '',
'class' => 'Formbutton',
'onclick' => "addFtpConnection();",
)
);
}
/**
* Add radio "ftp activated"
*
* @param int $index
*
* @return void
*/
private function _addRadioActivated($index)
{
$this->addElement(
'radio',
'ftp_' . $index . '_use',
array(
'class' => 'radio toggler',
'label' => 'L_FTP_TRANSFER',
'onclick' => "myToggle(this, 'y', 'ftpToggle" . $index . "');",
'listsep' => ' ',
'disableLoadDefaultDecorators' => true,
'multiOptions' => array(
'y' => 'L_ACTIVATED',
'n' => 'L_NOT_ACTIVATED',
),
'decorators' => array('Default'),
)
);
}
/**
* Add input "ftp timeout"
*
* @param int $index
*
* @return void
*/
private function _addInputTimeout($index)
{
$this->addElement(
'text',
'ftp_' . $index . '_timeout',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_FTP_TIMEOUT',
'secondLabel' => 'L_SECONDS',
'disableLoadDefaultDecorators' => true,
'size' => 3,
'maxlength' => 3,
'decorators' => array('DoubleLabel'),
'validators' => array('Digits'),
)
);
}
/**
* Add checkbox "passive mode"
*
* @param int $index
*
* @return void
*/
private function _addCheckboxPassiveMode($index)
{
$this->addElement(
'checkbox',
'ftp_' . $index . '_passiveMode',
array(
'class' => 'checkbox ftpToggle' . $index,
'label' => 'L_FTP_CHOOSE_MODE',
'secondLabel' => 'L_FTP_PASSIVE',
'disableLoadDefaultDecorators' => true,
'checkedValue' => 'y',
'uncheckedValue' => 'n',
'decorators' => array('DoubleLabel'),
)
);
}
/**
* Add checkbox "ssl"
*
* @param int $index
*
* @return void
*/
private function _addCheckboxSsl($index)
{
$this->addElement(
'checkbox',
'ftp_' . $index . '_ssl',
array(
'class' => 'checkbox ftpToggle' . $index,
'label' => 'L_FTP_SSL',
'secondLabel' => 'L_FTP_USESSL',
'disableLoadDefaultDecorators' => true,
'checkedValue' => 'y',
'uncheckedValue' => 'n',
'decorators' => array('DoubleLabel'),
)
);
}
/**
* Add input "server"
*
* @param int $index
*
* @return void
*/
private function _addInputServerAndPort($index)
{
$this->addElement(
'text',
'ftp_' . $index . '_server',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_FTP_SERVER',
'disableLoadDefaultDecorators' => true,
'decorators' => array('Default'),
)
);
$this->addElement(
'text',
'ftp_' . $index . '_port',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_FTP_PORT',
'disableLoadDefaultDecorators' => true,
'size' => 4,
'maxlength' => 5,
'validators' => array('Digits'),
'decorators' => array('Default'),
)
);
}
/**
* Add input "user"
*
* @param int $index
*
* @return void
*/
private function _addInputUserAndPass($index)
{
$this->addElement(
'text',
'ftp_' . $index . '_user',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_FTP_USER',
'disableLoadDefaultDecorators' => true,
'size' => 60,
'decorators' => array('Default'),
)
);
$this->addElement(
'password',
'ftp_' . $index . '_pass',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_FTP_PASS',
'disableLoadDefaultDecorators' => true,
'size' => 60,
'decorators' => array('Default'),
'renderPassword' => true,
)
);
}
/**
* Add input server
*
* @param int $index
*
* @return void
*/
private function _addInputPath($index)
{
$this->addElement(
'text',
'ftp_' . $index . '_dir',
array(
'class' => 'text ftpToggle' . $index,
'label' => 'L_DIR',
'disableLoadDefaultDecorators' => true,
'size' => 60,
'decorators' => array('Default'),
)
);
}
/**
* Add Button "Test connection"
* Add Button "Delete connection"
*
* @param int $index
* @param string $buttonDelete
*
* @return void
*/
private function _addButtonsTestAndDelete($index, $buttonDelete)
{
if (!empty($buttonDelete)) {
$buttonDecorator = 'LineStart';
} else {
$buttonDecorator = 'Default';
}
$this->addElement(
'button',
'ftpCheck' . $index,
array(
'disableLoadDefaultDecorators' => true,
'content' =>
$this->getView()->getIcon('Connect', '', 16) . ' ' .
$this->_lang->getTranslator()->_('L_TESTCONNECTION'),
'decorators' => array($buttonDecorator),
'escape' => false,
'label' => '',
'class' => 'Formbutton ftpToggle' . $index,
'onclick' => "testFtpConnection(" .
$index . ");",
)
);
$this->addElement(
'button',
'ftpDelete' . $index,
array(
'disableLoadDefaultDecorators' => true,
'content' =>
$this->getView()->getIcon('delete') . ' '
. $this->_lang->getTranslator()->_('L_FTP_CONNECTION_DELETE'),
'decorators' => array('LineEnd'),
'escape' => false,
'label' => '',
'class' => 'Formbutton',
'onclick' => "deleteFtpConnection(" .
$index . ");",
)
);
}
/**
* Get valid values
*
* @param array $data
*
* @return array
*/
public function getValidValues($data)
{
$values = parent::getValidValues($data, true);
while (false !== (list($key, $value) = each($values))) {
if (substr($key, 0, 4) != 'ftp_') {
continue;
}
list(, $ftpId, $ftpKey) = explode('_', $key);
if (!isset($values[$ftpId])) {
$values[$ftpId] = array();
}
$values[$ftpId][$ftpKey] = $value;
unset($values[$key]);
}
return $values;
}
/**
* Set default values
*
* @param array $defaults
*
* @return Zend_Form
*/
public function setDefaults($defaults)
{
if (!empty($defaults['ftp'])) {
$ftp = array();
while (
false !== (list($ftpId, $ftpData) = each($defaults['ftp']))
) {
foreach ($ftpData as $ftpKey => $ftpValue) {
$ftp['ftp_' . $ftpId . '_' . $ftpKey] = $ftpValue;
}
}
$defaults['ftp'] = $ftp;
}
return parent::setDefaults($defaults);
}
/**
* Set input default value
*
* @param string $name Var-Name
* @param string $value The Value to set
*
* @return Zend_Form
*/
public function setDefault($name, $value)
{
if (is_array($value)) {
list($ftpId, $key) = explode('.', $name);
}
$name = 'ftp_' . str_replace('.', '_', $name);
parent::setDefault($name, $value);
}
}