Social\Form\AddThis::prepareConfig PHP Method

prepareConfig() public method

Prepare elements for configuration
public prepareConfig ( ) : void
return void
    public function prepareConfig()
    {
        $options = $this->getModel()->getConfig();
        $fieldset = new Fieldset('config');
        $language = new Element\Select('language');
        $language->setLabel('Language')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValueOptions($this->getModel()->getLanguages())->setValue($options['language']);
        $fieldset->add($language);
        $ga = new Element\Text('data_ga_property_id');
        $ga->setLabel('Google Analytics property ID')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValue($options['data_ga_property_id']);
        $fieldset->add($ga);
        $showOnDashboard = new Element\Checkbox('show_stats');
        $showOnDashboard->setLabel('Show stats on dashboard')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('id', 'show_stats')->setAttribute('class', 'input-checkbox')->setValue($options['show_stats']);
        $fieldset->add($showOnDashboard);
        $profileId = new Element\Text('profile_id');
        $profileId->setLabel('AddThis Profile ID')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValue($options['profile_id']);
        $fieldset->add($profileId);
        $username = new Element\Text('username');
        $username->setLabel('AddThis Username')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValue($options['username']);
        $fieldset->add($username);
        $password = new Element\Password('password');
        $password->setLabel('AddThis Password')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValue($options['password']);
        $fieldset->add($password);
        $dataTrackClickback = new Element\Checkbox('data_track_clickback');
        $dataTrackClickback->setLabel('Track clickback')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('id', 'data_track_clickback')->setAttribute('class', 'input-checkbox')->setValue($options['data_track_clickback']);
        $fieldset->add($dataTrackClickback);
        $dataTrackAddressbar = new Element\Checkbox('data_track_addressbar');
        $dataTrackAddressbar->setLabel('Track adressbar')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('id', 'data_track_addressbar')->setAttribute('class', 'input-checkbox')->setValue($options['data_track_addressbar']);
        $fieldset->add($dataTrackAddressbar);
        $jsonConfig = new Element\Textarea('config_json');
        $jsonConfig->setLabel('Json config')->setLabelAttributes(array('class' => 'col-lg-2 control-label'))->setAttribute('class', 'form-control col-lg-10')->setValue($options['config_json']);
        $fieldset->add($jsonConfig);
        $this->add($fieldset);
        $this->getInputFilter()->add(array('type' => 'Zend\\InputFilter\\InputFilter', 'language' => array('name' => 'language', 'required' => true), 'data_ga_property_id' => array('name' => 'data_ga_property_id', 'required' => false), 'profile_id' => array('name' => 'profile_id', 'required' => false, 'validators' => array(array('name' => 'Callback', 'options' => array('messages' => array(\Zend\Validator\Callback::INVALID_VALUE => 'Can not connect to addthis api'), 'callback' => function ($value, $context = array()) {
            if (empty($context['username']) or empty($context['password'])) {
                return false;
            }
            return true;
        })))), 'show_stats' => array('name' => 'show_stats', 'required' => false), 'password' => array('name' => 'password', 'required' => false, 'validators' => array(array('name' => 'Callback', 'options' => array('messages' => array(\Zend\Validator\Callback::INVALID_VALUE => 'Can not connect to addthis api'), 'callback' => function ($value, $context = array()) {
            if (empty($context['username']) or empty($context['profile_id'])) {
                return false;
            }
            return true;
        })))), 'username' => array('name' => 'username', 'required' => false, 'validators' => array(array('name' => 'Callback', 'options' => array('messages' => array(\Zend\Validator\Callback::INVALID_VALUE => 'Can not connect to addthis api'), 'callback' => function ($value, $context = array()) {
            $client = new Client('https://api.addthis.com/analytics/1.0/pub/shares.json', array('sslverifypeer' => false));
            $client->setParameterGet(array('username' => $context['username'], 'password' => $context['password'], 'pubid' => $context['profile_id']));
            try {
                $response = $client->send();
                if ($response->isSuccess() == 200) {
                    return true;
                }
            } catch (\Exception $e) {
                //don't care
            }
            return false;
        })))), 'data_track_clickback' => array('name' => 'data_track_clickback', 'required' => false), 'data_track_addressbar' => array('name' => 'data_track_addressbar', 'required' => false), 'json_config' => array('name' => 'json_config', 'required' => false)), 'config');
    }

Usage Example

Example #1
0
 /**
  * Save configuration
  *
  * @return mixed
  */
 public function configAction()
 {
     $this->form->prepareConfig();
     $postData = $this->getRequest()->getPost()->toArray();
     $this->form->setData($postData);
     if ($this->getRequest()->isPost()) {
         if ($this->form->isValid()) {
             $data = $this->form->getData();
             if (!empty($data['config']['username']) and !empty($data['config']['password']) and !empty($data['config']['profile_id'])) {
                 $data['config']['valide_credential'] = true;
             }
             $data['config']['valide_credential'] = false;
             $this->model->setConfig($data);
             $this->flashMessenger()->addSuccessMessage('Configuration saved');
             return $this->redirect()->toRoute('module/social/addthis');
         }
     }
     $this->flashMessenger()->addErrorMessage('Cannot saved configuration');
     $this->useFlashMessenger();
     return $this->forward()->dispatch('AddThisController', array('action' => 'index', 'isForwarded' => 'config'));
 }