/**
  * Implement this by setting $obj values (e.g. $obj->setId($row->Id) from a DB row
  * @param GD_Model_ConfigServer $obj
  * @param Zend_Db_Table_Row_Abstract $row
  */
 protected function populateObjectFromRow(&$obj, Zend_Db_Table_Row_Abstract $row)
 {
     $obj->setId($row->id)->setServersId($row->servers_id)->setConfigsId($row->configs_id);
     $s_map = new GD_Model_ServersMapper();
     $server = new GD_Model_Server();
     $s_map->populateObjectFromRow($server, $row->findParentRow('GD_Model_DbTable_Servers'));
     $obj->setServer($server);
     $c_map = new GD_Model_ConfigsMapper();
     $config = new GD_Model_Config();
     $c_map->populateObjectFromRow($config, $row->findParentRow('GD_Model_DbTable_Configs'));
     $obj->setConfig($config);
 }
Example #2
0
 public function editAction()
 {
     $this->view->headTitle('Configuration Management');
     $this->view->headLink()->appendStylesheet("/css/template/form.css");
     $this->view->headLink()->appendStylesheet("/css/pages/configs_edit.css");
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     if ($project_slug != "") {
         $project = $projects->getProjectBySlug($project_slug);
     }
     $this->view->project = $project;
     $configs_map = new GD_Model_ConfigsMapper();
     $config = new GD_Model_Config();
     $config_id = $this->_getParam("id");
     $configs_servers_map = new GD_Model_ConfigsServersMapper();
     $config_server_ids = array();
     $servers_map = new GD_Model_ServersMapper();
     $servers = $servers_map->getServersByProject($project->getId());
     $this->view->servers = $servers;
     $user = GD_Auth_Database::GetLoggedInUser();
     if ($config_id > 0) {
         $configs_map->find($config_id, $config);
         $config_servers = $configs_servers_map->getAllServersForConfig($config->getId());
         foreach ($config_servers as $cs) {
             $config_server_ids[] = $cs->getServersId();
         }
     } else {
         $config->setProjectsId($project->getId());
         $config->setDateAdded(date("Y-m-d H:i:s"));
         $config->setAddedUsersId($user->getId());
         foreach ($servers as $server) {
             $config_server_ids[] = $server->getId();
         }
     }
     $this->view->config_server_ids = $config_server_ids;
     if ($this->getRequest()->isPost()) {
         // First save the config file itself
         $config->setFilename($this->_getParam("filename", ""));
         $config->setContent($this->_getParam("configContent", ""));
         $config->setUpdatedUsersId($user->getId());
         $configs_map->save($config);
         // Then loop through the config_servers and update
         $configs_servers_map->deleteAllServersForConfig($config->getId());
         $add_to_servers = $this->_getParam("servers", array());
         foreach ($add_to_servers as $server_id) {
             $cs = new GD_Model_ConfigServer();
             $cs->setConfigsId($config->getId());
             $cs->setServersId($server_id);
             $configs_servers_map->save($cs);
         }
         $this->_redirect($this->getFrontController()->getBaseUrl() . "/project/" . $this->_getParam("project") . "/configs");
     } else {
         $this->view->config = $config;
     }
 }