Mercurial > public > src > phphgadmin
annotate admin/application/libraries/hgphp.php @ 8:6215bb22f3d3
Refactored config handler functions to new library.
author | joshjcarrier |
---|---|
date | Thu, 13 May 2010 17:43:10 -0700 |
parents | 9790c4a95b14 |
children | 97bc7635ce3f |
rev | line source |
---|---|
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
1 <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
2 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
3 /** |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
4 * CodeIgniter Mercurial Repository Management class |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
5 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
6 * Scans file system and Mercurial projects directory, allowing |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
7 * web-based manipulation of the hgwebdir.config and hgrc configuration files. |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
8 * |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
9 * Depends on the HgConf2Ini library. |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
10 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
11 * @package CodeIgniter |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
12 * @subpackage Libraries |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
13 * @category Libraries |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
14 * @author Josh Carrier |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
15 * @link blog.joshjcarrier.com |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
16 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
17 */ |
7 | 18 class HgPHP |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
19 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
20 private $_ci; |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
21 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
22 function __construct($config = array()) |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
23 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
24 if(!empty($config)) |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
25 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
26 $this->initialize($config); |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
27 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
28 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
29 $this->_ci =& get_instance(); |
7 | 30 $this->_ci->lang->load('hgphp'); |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
31 $this->_ci->load->library('hgconf2ini'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
32 log_message('debug', 'HgPHP class Initialized'); |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
33 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
34 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
35 function initialize($config = array()) |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
36 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
37 foreach($config as $key=>$val) |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
38 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
39 $this->{'_'.$key} = $val; |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
40 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
41 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
42 |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
43 /** |
4 | 44 * Public accessors - hgweb.config |
45 */ | |
46 | |
47 /** | |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
48 * Returns a list of available repositories. |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
49 * Will show up if: detected in repo directory |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
50 * Will have status "enabled" if: detected in hgweb.config |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
51 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
52 * @return an array of 0 or more detected repositories |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
53 */ |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
54 function lsdir() |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
55 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
56 $realdir = $this->__realdirscan(); |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
57 $hgwebdir_compat = $this->_ci->hgconf2ini->getHgWebDirCollections(); |
2
492f28533a05
Cleaned up hgweb.config loading data array a bit. Starting to implement locking system, repository editor.
joshjcarrier
parents:
1
diff
changeset
|
58 |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
59 // FIXME test no directory cases |
2
492f28533a05
Cleaned up hgweb.config loading data array a bit. Starting to implement locking system, repository editor.
joshjcarrier
parents:
1
diff
changeset
|
60 $allrepo = array_merge($realdir, $hgwebdir_compat); |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
61 |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
62 $hgrepos = array(); |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
63 foreach($allrepo as $repo) |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
64 { |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
65 $hgrepos[$repo]['name'] = $repo; |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
66 |
2
492f28533a05
Cleaned up hgweb.config loading data array a bit. Starting to implement locking system, repository editor.
joshjcarrier
parents:
1
diff
changeset
|
67 if(isset($realdir[$repo]) && isset($hgwebdir_compat[$repo])) |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
68 { |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
69 $hgrepos[$repo]['status'] = 1; |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
70 } |
2
492f28533a05
Cleaned up hgweb.config loading data array a bit. Starting to implement locking system, repository editor.
joshjcarrier
parents:
1
diff
changeset
|
71 else if(isset($realdir[$repo]) && !isset($hgwebdir_compat[$repo])) |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
72 { |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
73 $hgrepos[$repo]['status'] = 0; |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
74 } |
2
492f28533a05
Cleaned up hgweb.config loading data array a bit. Starting to implement locking system, repository editor.
joshjcarrier
parents:
1
diff
changeset
|
75 else if(!isset($realdir[$repo]) && isset($hgwebdir_compat[$repo])) |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
76 { |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
77 $hgrepos[$repo]['status'] = 2; |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
78 } |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
79 } |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
80 |
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
81 return $hgrepos; |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
82 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
83 |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
84 /** |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
85 * Create a Hg repository by: |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
86 * - adding an entry in hgwebdir if not present |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
87 * - creating a bare repository if not present |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
88 */ |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
89 function create_repository($new_repo_name) |
3
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
90 { |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
91 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
92 $return_code = 0; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
93 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
94 if(!$this->can_create($new_repo_name)) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
95 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
96 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
97 return -1; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
98 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
99 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
100 $lsdir = $this->lsdir(); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
101 $existingdir = array_keys($lsdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
102 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
103 // not registered in hgweb.config |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
104 if(!isset($lsdir[$new_repo_name])) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
105 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
106 // create the repository |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
107 $create_status = $this->create_repository_dir($new_repo_name); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
108 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
109 if($create_status) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
110 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
111 // edit the directory |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
112 $existingdir[$new_repo_name] = $new_repo_name; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
113 $create_status = $this->_ci->hgconf2ini->setHgWebDirCollections($existingdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
114 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
115 // success message |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
116 //$this->template->inject_partial('user_msg', 'Repository "'. $new_repo_name .'" created successfully.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
117 return 0; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
118 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
119 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
120 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
121 return -2; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
122 //$this->template->inject_partial('user_err', 'Repository "'. $new_repo_name .'" could not be created; insufficient user or server privileges.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
123 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
124 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
125 // TODO repair missing directory? |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
126 else if($lsdir[$new_repo_name]['status'] == 2) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
127 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
128 return -3; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
129 //$this->template->inject_partial('user_msg', 'Repository "'. $new_repo_name .'" RESTORE.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
130 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
131 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
132 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
133 return -4; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
134 //$this->template->inject_partial('user_err', 'Repository "'. $new_repo_name .'" could not be created; it already exists.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
135 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
136 |
3
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
137 } |
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
138 |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
139 function update_repository() |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
140 {} |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
141 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
142 function delete_repository($del_repo_name) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
143 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
144 $return_code = 0; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
145 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
146 if(!$this->can_delete($del_repo_name)) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
147 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
148 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
149 return -1; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
150 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
151 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
152 $lsdir = $this->lsdir(); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
153 $existingdir = array_keys($lsdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
154 $tempexistingdir = array(); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
155 foreach($existingdir as $repo_name) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
156 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
157 $tempexistingdir[$repo_name] = $repo_name; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
158 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
159 $existingdir = $tempexistingdir; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
160 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
161 if(isset($lsdir[$del_repo_name])) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
162 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
163 $del_status = true; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
164 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
165 // existing filesystem is not missing, thus needs to be deleted |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
166 if($lsdir[$del_repo_name]['status'] != 2) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
167 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
168 $del_status = $this->delete_repository_dir($del_repo_name); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
169 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
170 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
171 // remove from hgweb.config |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
172 if($del_status) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
173 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
174 // edit the directory |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
175 unset($existingdir[$del_repo_name]); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
176 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
177 $this->_ci->hgconf2ini->setHgWebDirCollections($existingdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
178 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
179 // success message |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
180 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
181 return 0; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
182 // $this->template->inject_partial('user_msg', 'Repository "'. $del_repo_name .'" deleted successfully.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
183 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
184 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
185 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
186 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
187 return -2; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
188 // $this->template->inject_partial('user_err', 'Repository "'. $del_repo_name .'" could not be deleted; insufficient user or server privileges.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
189 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
190 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
191 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
192 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
193 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
194 return -3; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
195 // $this->template->inject_partial('user_err', 'Repository "'. $del_repo_name .'" could not be deleted; it does not exist or is already deleted.'); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
196 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
197 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
198 |
4 | 199 |
200 | |
201 /** | |
202 * Public accessors - permissions | |
203 */ | |
204 | |
205 function can_create($repository_name) | |
206 { | |
207 return $this->_hgwebconf_allow_repo_create; | |
208 } | |
7 | 209 |
210 function can_delete($repository_name) | |
211 { | |
212 return $this->_hgwebconf_allow_repo_delete; | |
213 } | |
214 | |
4 | 215 /** |
216 * Public helpers - filesystem | |
217 */ | |
218 | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
219 function create_repository_dir($repository_name) |
4 | 220 { |
221 if(!$this->can_create($repository_name)) | |
222 { | |
223 return false; | |
224 } | |
225 | |
226 $cd = $this->_repositories_rel_dir; | |
227 mkdir($cd . $repository_name . '/.hg/store/data/', 755, TRUE); | |
228 | |
229 // create hgrc | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
230 return $this->_ci->hgconf2ini->touchHGRC($repository_name); |
4 | 231 } |
232 | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
233 function delete_repository_dir($repository_name) |
4 | 234 { |
7 | 235 if(!$this->can_delete($repository_name)) |
236 { | |
237 return false; | |
238 } | |
4 | 239 |
7 | 240 $cd = $this->_repositories_rel_dir . $repository_name; |
241 | |
242 $this->recursiveDelete($cd . '/.hg/'); | |
243 return $this->recursiveDelete($cd); | |
4 | 244 } |
245 | |
246 /** | |
247 * Private helpers - hgweb.config | |
248 */ | |
3
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
249 |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
250 /** |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
251 * Performs a real directory scan where the projects are suppose to reside. |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
252 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
253 * @return the array containing 0 or more valid directories |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
254 */ |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
255 function __realdirscan() |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
256 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
257 $this->_ci->load->helper('directory'); |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
258 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
259 // FIXME this doesn't check if file or directory... |
3
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
260 $realdir = directory_map($this->_repositories_rel_dir, TRUE); |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
261 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
262 $verifiedrealdir = array(); |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
263 foreach($realdir as $file) |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
264 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
265 // checks if we detected a folder |
3
53341b414217
Ability to create repository entry (via uri), which updates live hgweb.config + sets up an empty directory to push to.
joshjcarrier
parents:
2
diff
changeset
|
266 if(is_dir($this->_repositories_rel_dir . $file)) |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
267 { |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
268 $verifiedrealdir[$file] = $file; |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
269 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
270 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
271 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
272 return $verifiedrealdir; |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
273 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
274 |
4 | 275 |
1
2d2757428cc6
Repository directory can detect if a repo is enabled, disabled, or missing. Can also parse hgweb.config with a compatibility fix (convert / to ---- as defined in config)
joshjcarrier
parents:
0
diff
changeset
|
276 |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
277 function getProjectParams() |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
278 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
279 return array('ui'=>array('config1'=>'value')); |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
280 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
281 |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
282 |
7 | 283 |
284 | |
285 /** | |
286 * Delete a file or recursively delete a directory | |
287 * | |
288 * @param string $str Path to file or directory | |
289 */ | |
290 function recursiveDelete($str){ | |
291 if(is_file($str)){ | |
292 return @unlink($str); | |
293 } | |
294 elseif(is_dir($str)){ | |
295 $scan = glob(rtrim($str,'/').'/*'); | |
296 foreach($scan as $index=>$path){ | |
297 $this->recursiveDelete($path); | |
298 } | |
299 return @rmdir($str); | |
300 } | |
301 } | |
0
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
302 } |