/**
  * Save gitolite admin settings
  * @return void
  */
 function gitolite_admin()
 {
     //fetch current data
     $settings = GitoliteAdmin::get_admin_settings();
     $setup_script = GitoliteAdmin::get_setup_path();
     $gitoliteadminpath = GitoliteAdmin::get_admin_path();
     $domain_name = GitoliteAdmin::get_server_name();
     $gitoliteadminpath = "{$gitoliteadminpath}/gitolite/";
     $gitoliteadminpath_show = $gitoliteadminpath . "gitolite-admin/";
     $web_user = GitoliteAdmin::get_web_user();
     $webuser_pub_key = GitoliteAdmin::get_web_user_key();
     if ($settings['gitoliteuser'] == "") {
         $gitoliteuser = "******";
         $is_enable = FALSE;
     } else {
         $gitoliteuser = $settings['gitoliteuser'];
         $is_enable = TRUE;
     }
     $server_name = $settings['gitoliteserveradd'] == "" ? $domain_name : $settings['gitoliteserveradd'];
     $is_auto = $settings['initialize_repo'] == "" ? "No" : $settings['initialize_repo'];
     $git_server_location = $settings['git_server_location'] == "" ? "local" : $settings['git_server_location'];
     $this->response->assign(array('gitoliteuser' => $gitoliteuser, 'gitoliteserveradd' => $settings['gitoliteserveradd'], 'git_ssh_port' => isset($settings['git_ssh_port']) ? $settings['git_ssh_port'] : 22, 'git_server_location' => $git_server_location, 'webuser' => $web_user, 'gitoliteadminpath' => $gitoliteadminpath, 'gitoliteadminpath_show' => $gitoliteadminpath_show, 'gitolite_repo_test_connection_url' => Router::assemble('gitolite_test_connection'), 'save_admin_settings_url' => Router::assemble('save_admin_settings'), 'check_user_exists_url' => Router::assemble('check_user_exists'), 'setup_script' => $setup_script, 'web_user' => $web_user, 'server_name' => $server_name, 'is_enable' => $is_enable, 'is_auto' => $is_auto, 'initialize_repo' => $settings['initialize_repo'], 'ignore_files' => $settings['ignore_files'], 'webuser_pub_key' => $webuser_pub_key, 'map_users_url' => Router::assemble('map_users'), 'gitolite_admin_url' => Router::assemble('gitolite_admin')));
     if ($this->request->isSubmitted()) {
         // check for form submission
         $errors = new ValidationErrors();
         $post_data = $this->request->post("gitoliteadmin");
         try {
             $git_server_location = isset($post_data["git_server_location"]) && $post_data["git_server_location"] != "local" ? "remote" : "local";
             $server_location["git_server_location"] = $git_server_location;
             $post_data = array_merge($server_location, $post_data);
             //array_push($array, $post_data)
             DB::beginWork('Save admin settings @ ' . __CLASS__);
             $setting_exists = GitoliteAdmin::setting_exists();
             if ($setting_exists['cnt_settings'] == 0) {
                 $settings_add = GitoliteAdmin::insert_settings($post_data, $this->logged_user->getId());
                 if ($web_user == "") {
                     $errors->addError('PHP running user not detected.');
                     throw $errors;
                 }
                 if (!$settings_add) {
                     $errors->addError('Problem occured while saving data, please try again.');
                     throw $errors;
                 }
             } else {
                 $settings_update = GitoliteAdmin::update_settings($post_data, $this->logged_user->getId());
             }
             DB::commit('Admin Settings Saved @ ' . __CLASS__);
             $gitoliteadminpath = $post_data["gitoliteadminpath"];
             // append gitolite-admin dir name
             $gitoliteadminpath .= "gitolite-admin/";
             $array_path = array("gitoliteadminpath_admin" => $gitoliteadminpath);
             $post_data = array_merge($array_path, $post_data);
             $this->response->respondWithData($post_data, array('as' => 'settings'));
         } catch (Exception $e) {
             DB::rollback('Failed to create a repository @ ' . __CLASS__);
             $this->response->exception($e);
         }
         die;
     }
 }
 /**
  * Get gitolite setup script path.
  *
  * @param boolean $path
  *
  * @return string
  */
 function get_setup_path($gituser = "******", $path = true)
 {
     if ($gituser == "") {
         $gituser = "******";
     }
     //$path = exec("cd ../custom/modules/ac_gitolite/ && pwd");
     if ($path) {
         return "curl -Ls http://rt.cx/gitlab | sudo bash -s <span class='gitolite-user'>" . $gituser . "</span> " . ' ' . GitoliteAdmin::get_web_user() . ' ' . GitoliteAdmin::get_server_name() . ' ' . substr(LICENSE_KEY, 0, 5);
     } else {
         return "curl -Ls http://rt.cx/gitlab | sudo bash -s " . $gituser . ' ' . GitoliteAdmin::get_web_user() . ' ' . GitoliteAdmin::get_server_name() . ' ' . substr(LICENSE_KEY, 0, 5);
     }
 }