view->headTitle()->append('Создание нового проекта'); $form = new Application_Form_CreateProject(); $form->addDecorator('htmlTag', array( 'tag' => 'div', 'class' => 'createProject') ); if (count($_POST) && $form->isValid($_POST)) { $project = new Application_Model_Project(); $project->insert(array( 'title' => $form->getValue('title'), 'cost' => str_replace(',', '.', $form->getValue('cost')), 'comment' => $form->getValue('comment'), 'developer_id' => (int) $form->getValue('developer') )); Application_Model_Message::create('Новый проект создан успешно!', 4, 'success'); $this->_redirect($_SERVER['REQUEST_URI']); } $this->view->form = $form; } public function manageAction() { // ajax запрос для автодополнения пользовательских email if(isset($_GET['query'])) { $data = Zend_Db_Table_Abstract::getDefaultAdapter() ->fetchAll('SELECT email FROM ' . TABLE_PREF . 'users ' .'WHERE email LIKE ?' .'AND role=1 ' //!! Роль номер 1 - клиенты .'LIMIT 20;' , // Не больше 20 в подсказке '%' . ($_GET['query']) . '%'); $suggestions = array(); foreach($data as $email) $suggestions[] = $email['email']; return $this->_helper->json(array( 'query' => $_GET['query'], 'suggestions' => $suggestions )); } // Запрос на создание нового заказа if(isset($_POST['orderEmail']) && isset($_POST['project']) && $_POST['orderEmail'] && $_POST['project']) { $data = Zend_Db_Table_Abstract::getDefaultAdapter() ->fetchRow('SELECT id FROM ' . TABLE_PREF . 'users ' .'WHERE email = ?' .'AND role=1 ' //!! Роль номер 1 - клиенты , $_POST['orderEmail']); // Если не найден пользователь с таким email if(!isset($data['id'])) {//Ошибка и обновление страницы Application_Model_Message::create('Ошибка при создании заказа: ' . 'Такой email не найден среди клиентов!', 5, 'error'); $this->_redirect($_SERVER['REQUEST_URI']); } $db = new Application_Model_Order(); $db->insert(array( 'customer' => $data['id'], 'project_id' => $_POST['project'], 'date' => date('Y-m-d') )); $id = $db->getAdapter()->lastInsertId(TABLE_PREF . 'orders'); Application_Model_Message::create('Теперь клиент сможет обратится в ' . 'поддержку по этому проекту (по номеру ' . $id . ' в заголовке письма).', 0); $this->_redirect($_SERVER['REQUEST_URI']); return; } $this->view->headScript()->appendFile('/js/jquery.autocomplete.js'); $db = new Application_Model_Project(); // Проверяем был ли запрос на редактирование $project = (int) $this->getRequest()->getParam('edit'); if($project > 0) $project = $db->fetchRow('project_id = ' . $project); if(is_object($project) && $project->project_id) { // Найдена запись для редактирования $form = new Application_Form_EditProject(); // Нужно загружать в форму данные из БД $reloadForm = true; if(count($_POST)) { $where = 'project_id = ' . $project->project_id; $redirect = Zend_Navigation_Page_Mvc::factory(array( 'controller' => 'project', 'action' => 'manage', 'route' => 'default' ))->getHref(); if(isset($_POST['deleting']) && $_POST['deleting'] && isset($_POST['deleting']) && $form->getElement('csrf')->isValid($_POST['csrf']) ) { $db->delete($where); Application_Model_Message::create( 'Информация о проекте удалена!', 2); $this->_redirect($redirect); } elseif($form->isValid($_POST)) { $db->update(array( 'title' => $form->getValue('title'), 'cost' => str_replace(',', '.', $form->getValue('cost')), 'comment' => $form->getValue('comment'), 'developer_id' => (int) $form->getValue('developer') ),$where); Application_Model_Message::create( 'Данные о проекте обновлены!', 2); $this->_redirect($redirect); } else // НЕ Нужно загружать в форму данные из БД $reloadForm = false; } $this->view->headTitle()->append('Редактирование информации о проекте'); if($reloadForm) { $form->setDefaults($project->toArray()); $form->setDefault('cost',(float) $project->cost); } $form->getElement('submit')->setLabel('Сохранить'); $form->addDecorator('htmlTag', array( 'tag' => 'div', 'class' => 'createProject') ); $this->view->form = $form; return; } $this->view->headTitle()->append('Управление проектами'); $page = (int) $this->getRequest()->getParam('page', 1); $paginator = new Zend_Paginator( new Zend_Paginator_Adapter_DbSelect($db->select())); $paginator->setCurrentPageNumber($page); $paginator->setItemCountPerPage(10); if(count($paginator)) { $this->view->names = array(); $developers = new Application_Model_Developer(); $developers = $developers->getAllNames(); foreach ($paginator as $i => $item) { $this->view->names[$i] = 'Не присвоен'; foreach ($developers as $id => $name) if($id == (int) $item['developer_id']) $this->view->names[$i] = $name; } } $this->view->items = $paginator; } }