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(''))); }
public function init() { parent::init(); $this->setTitle('Edit Poll'); $this->submit->setLabel('Save Changes'); }