public function indexAction() { $form = new GDApp_Form_ServerSettings(); $this->view->form = $form; $this->view->headLink()->appendStylesheet("/css/template/form.css"); $this->view->headLink()->appendStylesheet("/css/pages/project_servers.css"); // Grab the project so we can add it to the title $project_slug = $this->_getParam("project"); $projects = new GD_Model_ProjectsMapper(); $project = $projects->getProjectBySlug($project_slug); $this->view->project = $project; $servers = new GD_Model_ServersMapper(); $server = new GD_Model_Server(); $server_id = $this->_request->getParam('id', 0); if ($server_id > 0 && $this->_method == "edit") { $this->view->headTitle('Edit Server'); $servers->find($server_id, $server); } else { if ($this->_method == "add") { $this->view->headTitle('Add Server'); $server->setProjectsId($project->getId()); $server->setName("New Server"); $server->setPort(21); } } $this->view->server = $server; if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getParams())) { $server->setName($this->_request->getParam('name', false)); $server->setHostname($this->_request->getParam('hostname', false)); $server->setConnectionTypesId($this->_request->getParam('connectionTypeId', false)); $server->setPort($this->_request->getParam('port', 21)); $server->setUsername($this->_request->getParam('username', false)); $server->setPassword($this->_request->getParam('password', false)); $server->setRemotePath($this->_request->getParam('remotePath', false)); if ($server->getPort() <= 0) { $server->setPort(21); } // Test the connection first $ftp = new GD_Ftp($server); $result = $ftp->testConnection(); if (!$result) { //throw new GD_Exception("Failed to test connection to FTP server."); $form->addError("FTP_CONNECT_ERROR"); $this->view->ftpMessage = $ftp->getLastError(); } else { $servers->save($server); $this->_redirect($this->getFrontController()->getBaseUrl() . "/project/" . $this->_getParam("project") . "/settings"); } } } else { $data = array('name' => $server->getName(), 'hostname' => $server->getHostname(), 'connectionTypeId' => $server->getConnectionTypesId(), 'port' => $server->getPort(), 'username' => $server->getUsername(), 'password' => $server->getPassword(), 'remotePath' => $server->getRemotePath()); $form->populate($data); } }