Exemplo n.º 1
0
 public function createAction()
 {
     $this->view->options = array();
     $this->view->form = $form = new Ynfeedback_Form_Admin_Polls_Create();
     $viewer = Engine_Api::_()->user()->getViewer();
     if (!$this->getRequest()->isPost()) {
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         return;
     }
     // Check options
     $options = (array) $this->_getParam('optionsArray');
     $options = array_filter(array_map('trim', $options));
     $options = array_slice($options, 0, $max_options);
     $this->view->options = $options;
     if (empty($options) || !is_array($options) || count($options) < 2) {
         return $form->addError('You must provide at least two possible answers.');
     }
     foreach ($options as $index => $option) {
         if (strlen($option) > 80) {
             $options[$index] = Engine_String::substr($option, 0, 80);
         }
     }
     // Process
     $pollTable = Engine_Api::_()->getItemTable('ynfeedback_poll');
     $pollOptionsTable = Engine_Api::_()->getDbtable('options', 'ynfeedback');
     $db = $pollTable->getAdapter();
     $db->beginTransaction();
     try {
         $values = $form->getValues();
         $values['user_id'] = $viewer->getIdentity();
         // Create poll
         $poll = $pollTable->createRow();
         $poll->setFromArray($values);
         $poll->save();
         // Create options
         $censor = new Engine_Filter_Censor();
         $html = new Engine_Filter_Html(array('AllowedTags' => array('a')));
         foreach ($options as $option) {
             $option = $censor->filter($html->filter($option));
             $pollOptionsTable->insert(array('poll_id' => $poll->getIdentity(), 'poll_option' => $option));
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollback();
         throw $e;
     }
     $this->_forward('success', 'utility', 'core', array('smoothboxClose' => 10, 'parentRefresh' => 10, 'messages' => array('')));
 }
Exemplo n.º 2
0
 public function init()
 {
     parent::init();
     $this->setTitle('Edit Poll');
     $this->submit->setLabel('Save Changes');
 }