فهرست منبع

Ticket #5273 - Get rid of duplicates in code.

AntonLV 11 ماه پیش
والد
کامیت
3f3da1a82d

+ 57 - 614
modules/boonex/developer/classes/BxDevFormsField.php

@@ -11,769 +11,212 @@
 
 require_once('BxDevFunctions.php');
 
+interface iBxDevFormsField
+{
+    const mixedChangeFormField = ['BxDevFunctions', 'changeFormField'];
+    const mixedChangeFormAdd = ['BxDevFunctions', 'changeForm'];
+    const mixedChangeFormEdit = ['BxDevFunctions', 'changeForm'];
+}
+
 class BxDevFormsField extends BxTemplStudioFormsField
 {
-    function __construct($aParams = array(), $aField = array())
+    public function __construct($aParams = [], $aField = [])
     {
         parent::__construct($aParams, $aField);
 
-        $this->aTypes = array_merge($this->aTypes, array(
-        	'captcha' => array('add' => 1),
-        	'location' => array('add' => 1), 
-        	'custom' => array('add' => 1)
-        ));
+        $this->aTypes = array_merge($this->aTypes, [
+            'captcha' => ['add' => 1],
+            'location' => ['add' => 1], 
+            'custom' => ['add' => 1]
+        ]);
     }
 }
 
-class BxDevFormsFieldBlockHeader extends BxTemplStudioFormsFieldBlockHeader
+class BxDevFormsFieldBlockHeader extends BxTemplStudioFormsFieldBlockHeader implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldBlockEnd extends BxTemplStudioFormsFieldBlockEnd
+class BxDevFormsFieldBlockEnd extends BxTemplStudioFormsFieldBlockEnd implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldValue extends BxTemplStudioFormsFieldValue
+class BxDevFormsFieldValue extends BxTemplStudioFormsFieldValue implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldText extends BxTemplStudioFormsFieldText
+class BxDevFormsFieldText extends BxTemplStudioFormsFieldText implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldPassword extends BxTemplStudioFormsFieldPassword
+class BxDevFormsFieldPassword extends BxTemplStudioFormsFieldPassword implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldTextarea extends BxTemplStudioFormsFieldTextarea
+class BxDevFormsFieldTextarea extends BxTemplStudioFormsFieldTextarea implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldNumber extends BxTemplStudioFormsFieldNumber
+class BxDevFormsFieldNumber extends BxTemplStudioFormsFieldNumber implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldPrice extends BxTemplStudioFormsFieldPrice
+class BxDevFormsFieldPrice extends BxTemplStudioFormsFieldPrice implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldDatepicker extends BxTemplStudioFormsFieldDatepicker
+class BxDevFormsFieldDatepicker extends BxTemplStudioFormsFieldDatepicker implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldDateselect extends BxTemplStudioFormsFieldDateselect
+class BxDevFormsFieldDateselect extends BxTemplStudioFormsFieldDateselect implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldDatetime extends BxTemplStudioFormsFieldDatetime
+class BxDevFormsFieldDatetime extends BxTemplStudioFormsFieldDatetime implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldCheckbox extends BxTemplStudioFormsFieldCheckbox
+class BxDevFormsFieldCheckbox extends BxTemplStudioFormsFieldCheckbox implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
         $this->aForm['inputs']['value']['type'] = 'text';
     }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldSwitcher extends BxTemplStudioFormsFieldSwitcher
+class BxDevFormsFieldSwitcher extends BxTemplStudioFormsFieldSwitcher implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
         $this->aForm['inputs']['value']['type'] = 'text';
     }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldFile extends BxTemplStudioFormsFieldFile
+class BxDevFormsFieldFile extends BxTemplStudioFormsFieldFile implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldFiles extends BxTemplStudioFormsFieldFiles
+class BxDevFormsFieldFiles extends BxTemplStudioFormsFieldFiles implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldSlider extends BxTemplStudioFormsFieldSlider
+class BxDevFormsFieldSlider extends BxTemplStudioFormsFieldSlider implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldDoublerange extends BxTemplStudioFormsFieldDoublerange
+class BxDevFormsFieldDoublerange extends BxTemplStudioFormsFieldDoublerange implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldHidden extends BxTemplStudioFormsFieldHidden
+class BxDevFormsFieldHidden extends BxTemplStudioFormsFieldHidden implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldButton extends BxTemplStudioFormsFieldButton
+class BxDevFormsFieldButton extends BxTemplStudioFormsFieldButton implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldReset extends BxTemplStudioFormsFieldReset
+class BxDevFormsFieldReset extends BxTemplStudioFormsFieldReset implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldSubmit extends BxTemplStudioFormsFieldSubmit
+class BxDevFormsFieldSubmit extends BxTemplStudioFormsFieldSubmit implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldImage extends BxTemplStudioFormsFieldImage
+class BxDevFormsFieldImage extends BxTemplStudioFormsFieldImage implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldSelect extends BxTemplStudioFormsFieldSelect
+class BxDevFormsFieldSelect extends BxTemplStudioFormsFieldSelect implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldSelectMultiple extends BxTemplStudioFormsFieldSelectMultiple
+class BxDevFormsFieldSelectMultiple extends BxTemplStudioFormsFieldSelectMultiple implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldCheckboxSet extends BxTemplStudioFormsFieldCheckboxSet
+class BxDevFormsFieldCheckboxSet extends BxTemplStudioFormsFieldCheckboxSet implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldRadioSet extends BxTemplStudioFormsFieldRadioSet
+class BxDevFormsFieldRadioSet extends BxTemplStudioFormsFieldRadioSet implements iBxDevFormsField
 {
     public function init()
     {
         parent::init();
 
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-
-        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', array(
+        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'required', [
             'unique' => $this->aFieldUnique
-        ));
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
+        ]);
     }
 }
 
-class BxDevFormsFieldCustom extends BxTemplStudioFormsFieldCustom
+class BxDevFormsFieldCustom extends BxTemplStudioFormsFieldCustom implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldInputSet extends BxTemplStudioFormsFieldInputSet
+class BxDevFormsFieldInputSet extends BxTemplStudioFormsFieldInputSet implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldCaptcha extends BxTemplStudioFormsFieldCaptcha
+class BxDevFormsFieldCaptcha extends BxTemplStudioFormsFieldCaptcha implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 
-class BxDevFormsFieldLocation extends BxTemplStudioFormsFieldLocation
+class BxDevFormsFieldLocation extends BxTemplStudioFormsFieldLocation implements iBxDevFormsField
 {
-    public function init()
-    {
-        parent::init();
-
-        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
-    }
-
-    protected function getFormAdd($sAction, $sObject)
-    {
-        $aForm = parent::getFormAdd($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
-
-    protected function getFormEdit($sAction, $sObject)
-    {
-        $aForm = parent::getFormEdit($sAction, $sObject);
-        BxDevFunctions::changeForm($sAction, $aForm, $this);
-        return $aForm;
-    }
 }
 /** @} */

+ 6 - 2
modules/boonex/developer/classes/BxDevFunctions.php

@@ -19,7 +19,7 @@ class BxDevFunctions
      *
      * @see BxDevFormsField
      */
-    public static function changeFormField($aParams, &$aInputs, &$oDb)
+    public static function changeFormField($aParams, $aInputs, $oDb)
     {
         $aInputs['module']['type'] = 'select';
         $aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
@@ -81,6 +81,8 @@ class BxDevFunctions
             ),
         );
         $aInputs = BxDolStudioUtils::addInArray($aInputs, 'controls', $aFields, false);
+
+        return $aInputs;
     }
 
     /*
@@ -89,7 +91,7 @@ class BxDevFunctions
      *
      * @see BxDevFormsField
      */
-    public static function changeForm($sAction, &$aForm, &$oForm)
+    public static function changeForm($sAction, $aForm, $oForm)
     {
         switch($sAction) {
             case 'add':
@@ -106,6 +108,8 @@ class BxDevFunctions
                 }
                 break;
         }
+
+        return $aForm;
     }
 
     public static function serializeString($sValue)

+ 6 - 0
studio/classes/BxDolStudioFormsField.php

@@ -102,6 +102,12 @@ class BxDolStudioFormsField extends BxDol
             $this->aParams['table'] = $aForm['table'];
         }
     }
+    
+    public function onInit()
+    {
+        if(($sClass = get_class($this)) && defined($sClass . '::mixedChangeFormField') && call_user_func_array('method_exists', $sClass::mixedChangeFormField))
+            $this->aForm['inputs'] = call_user_func($sClass::mixedChangeFormField, $this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
 
     public function canAdd()
     {

+ 13 - 7
studio/template/scripts/BxBaseStudioFormsField.php

@@ -13,16 +13,16 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
     protected $aForm;
     protected $sTypeTitlePrefix = '_adm_form_txt_field_type_';
 
-    function __construct($aParams = array(), $aField = array())
+    public function __construct($aParams = [], $aField = [])
     {
         parent::__construct($aParams, $aField);
     }
 
-	public function init()
-	{
-		parent::init();
+    public function init()
+    {
+        parent::init();
 
-		$sJsObject = $this->getJsObject();
+        $sJsObject = $this->getJsObject();
 
         bx_import('BxTemplStudioFormView');
 
@@ -82,7 +82,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
 
         $oMenu = new BxTemplStudioMenu(array('template' => 'menu_vertical.html', 'menu_items' => $aMenu));
         $this->aForm['inputs']['type']['content'] = $oMenu->getCode();
-	}
+    }
 
     public function getJsObject()
     {
@@ -210,6 +210,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
         if(isset($aForm['inputs']['object']))
             $aForm['inputs']['object']['value'] = $this->aParams['object'];
 
+        if(($sClass = get_class($this)) && defined($sClass . '::mixedChangeFormAdd') && call_user_func_array('method_exists', $sClass::mixedChangeFormAdd))
+            $aForm = call_user_func($sClass::mixedChangeFormAdd, $sAction, $aForm, $this);
+
         return $aForm;
     }
 
@@ -405,9 +408,12 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
 
         $aForm['inputs']['controls'][0]['value'] = _t('_adm_form_btn_field_save');
 
+        if(($sClass = get_class($this)) && defined($sClass . '::mixedChangeFormEdit') && call_user_func_array('method_exists', $sClass::mixedChangeFormEdit))
+            $aForm = call_user_func($sClass::mixedChangeFormEdit, $sAction, $aForm, $this);
+
         return $aForm;
     }
-    
+
     //--- If field is rateable, check presence in 'sys_form_fields_ids' table, insertation, if not.
     protected function checkRateableFiledValue($sInputName, $sModuleName, $sFormObject, $sNestedForm)
     {

+ 7 - 5
studio/template/scripts/BxBaseStudioFormsFields.php

@@ -346,17 +346,19 @@ class BxBaseStudioFormsFields extends BxDolStudioFormsFields
         $oForm->addCssJs();
     }
 
-	protected function _getFieldObject ($sType, $aParams = array(), $aField = array())
-	{
-		$sClass = $this->sClass . $this->getClassName($sType);
+    protected function _getFieldObject ($sType, $aParams = array(), $aField = array())
+    {
+        $sClass = $this->sClass . $this->getClassName($sType);
         if(!class_exists($sClass)) 
-        	return false;
+            return false;
 
         $oClass = new $sClass($aParams, $aField);
         $oClass->init();
+        if(method_exists($oClass, 'onInit'))
+            $oClass->onInit();
 
         return $oClass;
-	}
+    }
 
     protected function _getCellSwitcher ($mixedValue, $sKey, $aField, $aRow)
     {