/** * Allows a user to edit a workshop * */ public function editAction() { $get = Zend_Registry::get('getFilter'); if (!isset($get->workshopId)) { throw new Ot_Exception_Input('msg-error-workshopIdNotSet'); } $workshop = new Workshop(); $tag = new Tag(); $we = new Workshop_Editor(); $thisWorkshop = $workshop->find($get->workshopId); if (is_null($thisWorkshop)) { throw new Ot_Exception_Data('msg-error-noWorkshop'); } if (!$this->_helper->hasAccess('edit-all-workshops') && !$we->isEditor($thisWorkshop->workshopId, Zend_Auth::getInstance()->getIdentity()->accountId)) { throw new Ot_Exception_Access('msg-error-noAccess'); } $thisWorkshopArray = $thisWorkshop->toArray(); $thisWorkshopArray['tags'] = array(); $tags = $tag->getTagsForAttribute('workshopId', $thisWorkshop->workshopId); foreach ($tags as $t) { array_push($thisWorkshopArray['tags'], $t['name']); } $we = new Workshop_Editor(); $where = $we->getAdapter()->quoteInto('workshopId = ?', $thisWorkshop->workshopId); $results = $we->fetchAll($where); $thisWorkshopArray['editors'] = array(); foreach ($results as $r) { array_push($thisWorkshopArray['editors'], $r->accountId); } $form = $workshop->form($thisWorkshopArray); $messages = array(); if ($this->_request->isPost()) { if ($form->isValid($_POST)) { $data = array('workshopId' => $thisWorkshop->workshopId, 'status' => $form->getValue('status'), 'title' => $form->getValue('title'), 'description' => $form->getValue('description'), 'prerequisites' => $form->getValue('prerequisites')); $workshop->update($data, null); if ($form->getValue('tags') != '') { $tags = explode(',', $form->getValue('tags')); $tag->setTagsForAttribute('workshopId', $thisWorkshop->workshopId, $tags); } $we->setEditorsForWorkshop($thisWorkshop->workshopId, $form->getValue('editors')); $logOptions = array('attributeName' => 'workshopId', 'attributeId' => $thisWorkshop->workshopId); $this->_helper->log(Zend_Log::INFO, 'Workshop was modified', $logOptions); $this->_helper->flashMessenger->addMessage('msg-info-workshopModified'); if ($data['status'] == 'enabled') { $workshop->index($thisWorkshop->workshopId); } else { $workshop->deleteFromIndex($thisWorkshop->workshopId); } $this->_helper->redirector->gotoUrl('/workshop/index/details/?workshopId=' . $thisWorkshop->workshopId); } else { $messages[] = 'msg-error-formSubmitProblem'; } } $this->view->headScript()->appendFile($this->view->baseUrl() . '/scripts/jquery.wysiwyg.js'); $this->view->headScript()->appendFile($this->view->baseUrl() . '/scripts/jquery.autocomplete.js'); $this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/css/jquery.wysiwyg.css'); $this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/css/jquery.autocomplete.css'); $this->_helper->pageTitle('workshop-index-edit:title'); $this->view->form = $form; $this->view->messages = $messages; }