252 lines
10 KiB
PHP
252 lines
10 KiB
PHP
<?php
|
|
class Application_Form_StreamSettingSubForm extends Zend_Form_SubForm
|
|
{
|
|
private $prefix;
|
|
private $setting;
|
|
private $stream_types;
|
|
private $stream_bitrates;
|
|
|
|
public function init()
|
|
{
|
|
|
|
}
|
|
|
|
public function setPrefix($prefix)
|
|
{
|
|
$this->prefix = $prefix;
|
|
}
|
|
|
|
public function setSetting($setting)
|
|
{
|
|
$this->setting = $setting;
|
|
}
|
|
|
|
public function setStreamTypes($stream_types)
|
|
{
|
|
$this->stream_types = $stream_types;
|
|
}
|
|
|
|
public function setStreamBitrates($stream_bitrates)
|
|
{
|
|
$this->stream_bitrates = $stream_bitrates;
|
|
}
|
|
|
|
public function startForm()
|
|
{
|
|
$prefix = "s".$this->prefix;
|
|
$stream_number = $this->prefix;
|
|
$setting = $this->setting;
|
|
$stream_types = $this->stream_types;
|
|
$stream_bitrates = $this->stream_bitrates;
|
|
|
|
$this->setIsArray(true);
|
|
$this->setElementsBelongTo($prefix."_data");
|
|
|
|
$disable_all = Application_Model_Preference::GetEnableStreamConf() == "false";
|
|
|
|
$enable = new Zend_Form_Element_Checkbox('enable');
|
|
$enable->setLabel(_('Enabled:'))
|
|
->setValue($setting[$prefix.'_enable'] == 'true' ? 1 : 0)
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$enable->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($enable);
|
|
|
|
$type = new Zend_Form_Element_Select('type');
|
|
$type->setLabel(_("Stream Type:"))
|
|
->setMultiOptions($stream_types)
|
|
->setValue(isset($setting[$prefix.'_type'])?$setting[$prefix.'_type']:0)
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$type->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($type);
|
|
|
|
$bitrate = new Zend_Form_Element_Select('bitrate');
|
|
$bitrate->setLabel(_("Bit Rate:"))
|
|
->setMultiOptions($stream_bitrates)
|
|
->setValue(isset($setting[$prefix.'_bitrate'])?$setting[$prefix.'_bitrate']:0)
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$bitrate->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($bitrate);
|
|
|
|
$output = new Zend_Form_Element_Select('output');
|
|
$output->setLabel(_("Service Type:"))
|
|
->setMultiOptions(array("icecast"=>"Icecast", "shoutcast"=>"SHOUTcast"))
|
|
->setValue(isset($setting[$prefix.'_output'])?$setting[$prefix.'_output']:"icecast")
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$output->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($output);
|
|
|
|
$channels = new Zend_Form_Element_Select('channels');
|
|
$channels->setLabel(_("Channels:"))
|
|
->setMultiOptions(array("mono"=>_("1 - Mono"), "stereo"=>_("2 - Stereo")))
|
|
->setValue(isset($setting[$prefix.'_channels']) ? $setting[$prefix.'_channels'] : "stereo")
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$channels->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($channels);
|
|
|
|
$host = new Zend_Form_Element_Text('host');
|
|
$host->setLabel(_("Server"))
|
|
->setValue(isset($setting[$prefix.'_host'])?$setting[$prefix.'_host']:"")
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[0-9a-zA-Z-_.]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$host->setAttrib("disabled", "disabled");
|
|
}
|
|
$host->setAttrib('alt', 'domain');
|
|
$this->addElement($host);
|
|
|
|
$port = new Zend_Form_Element_Text('port');
|
|
$port->setLabel(_("Port"))
|
|
->setValue(isset($setting[$prefix.'_port'])?$setting[$prefix.'_port']:"")
|
|
->setValidators(array(new Zend_Validate_Between(array('min'=>0, 'max'=>99999))))
|
|
->addValidator('regex', false, array('pattern'=>'/^[0-9]+$/', 'messages'=>array('regexNotMatch'=>_('Only numbers are allowed.'))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$port->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($port);
|
|
|
|
$pass = new Zend_Form_Element_Text('pass');
|
|
$pass->setLabel(_("Password"))
|
|
->setValue(isset($setting[$prefix.'_pass'])?$setting[$prefix.'_pass']:"")
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$pass->setAttrib("disabled", "disabled");
|
|
}
|
|
$pass->setAttrib('alt', 'regular_text');
|
|
$this->addElement($pass);
|
|
|
|
$genre = new Zend_Form_Element_Text('genre');
|
|
$genre->setLabel(_("Genre"))
|
|
->setValue(isset($setting[$prefix.'_genre'])?$setting[$prefix.'_genre']:"")
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$genre->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($genre);
|
|
|
|
$url = new Zend_Form_Element_Text('url');
|
|
$url->setLabel(_("URL"))
|
|
->setValue(isset($setting[$prefix.'_url'])?$setting[$prefix.'_url']:"")
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[0-9a-zA-Z\-_.:\/]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$url->setAttrib("disabled", "disabled");
|
|
}
|
|
$url->setAttrib('alt', 'url');
|
|
$this->addElement($url);
|
|
|
|
$name = new Zend_Form_Element_Text('name');
|
|
$name->setLabel(_("Name"))
|
|
->setValue(isset($setting[$prefix.'_name'])?$setting[$prefix.'_name']:"")
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$name->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($name);
|
|
|
|
$description = new Zend_Form_Element_Text('description');
|
|
$description->setLabel(_("Description"))
|
|
->setValue(isset($setting[$prefix.'_description'])?$setting[$prefix.'_description']:"")
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$description->setAttrib("disabled", "disabled");
|
|
}
|
|
$this->addElement($description);
|
|
|
|
$mount = new Zend_Form_Element_Text('mount');
|
|
$mount->setLabel(_("Mount Point"))
|
|
->setValue(isset($setting[$prefix.'_mount'])?$setting[$prefix.'_mount']:"")
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$mount->setAttrib("disabled", "disabled");
|
|
}
|
|
$mount->setAttrib('alt', 'regular_text');
|
|
$this->addElement($mount);
|
|
|
|
$user = new Zend_Form_Element_Text('user');
|
|
$user->setLabel(_("Username"))
|
|
->setValue(isset($setting[$prefix.'_user'])?$setting[$prefix.'_user']:"")
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$user->setAttrib("disabled", "disabled");
|
|
}
|
|
$user->setAttrib('alt', 'regular_text');
|
|
$this->addElement($user);
|
|
|
|
$adminUser = new Zend_Form_Element_Text('admin_user');
|
|
$adminUser->setLabel(_("Admin User"))
|
|
->setValue(Application_Model_StreamSetting::getAdminUser($prefix))
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$adminUser->setAttrib("disabled", "disabled");
|
|
}
|
|
$adminUser->setAttrib('alt', 'regular_text');
|
|
$this->addElement($adminUser);
|
|
|
|
$adminPass = new Zend_Form_Element_Password('admin_pass');
|
|
$adminPass->setLabel(_("Admin Password"))
|
|
->setValue(Application_Model_StreamSetting::getAdminPass($prefix))
|
|
->setValidators(array(
|
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => _('Invalid character entered')))))
|
|
->setDecorators(array('ViewHelper'));
|
|
if ($disable_all) {
|
|
$adminPass->setAttrib("disabled", "disabled");
|
|
}
|
|
$adminPass->setAttrib('alt', 'regular_text');
|
|
$this->addElement($adminPass);
|
|
|
|
$liquidsopa_error_msg = '<div class="stream-status status-info"><h3>'._('Getting information from the server...').'</h3></div>';
|
|
|
|
$this->setDecorators(array(
|
|
array('ViewScript', array('viewScript' => 'form/stream-setting-form.phtml', "stream_number"=>$stream_number, "enabled"=>$enable->getValue(), "liquidsoap_error_msg"=>$liquidsopa_error_msg))
|
|
));
|
|
}
|
|
|
|
public function isValid ($data)
|
|
{
|
|
$f_data = $data['s'.$this->prefix."_data"];
|
|
$isValid = parent::isValid($f_data);
|
|
if ($f_data['enable'] == 1) {
|
|
if ($f_data['host'] == '') {
|
|
$element = $this->getElement("host");
|
|
$element->addError(_("Server cannot be empty."));
|
|
$isValid = false;
|
|
}
|
|
if ($f_data['port'] == '') {
|
|
$element = $this->getElement("port");
|
|
$element->addError(_("Port cannot be empty."));
|
|
$isValid = false;
|
|
}
|
|
if ($f_data['output'] == 'icecast') {
|
|
if ($f_data['mount'] == '') {
|
|
$element = $this->getElement("mount");
|
|
$element->addError(_("Mount cannot be empty with Icecast server."));
|
|
$isValid = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $isValid;
|
|
}
|
|
}
|