Mercurial > public > src > phphgadmin
annotate admin/application/libraries/hgphp.php @ 10:0e7e4cead7c9
HGRC write and handle true/false key values
author | joshjcarrier |
---|---|
date | Thu, 13 May 2010 21:16:14 -0700 |
parents | 97bc7635ce3f |
children | 2ec108f96fad |
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 |
10 | 139 function update_repository($repo_name, $hgrc) |
140 { | |
141 return $this->_ci->hgconf2ini->setHGRC($repo_name, $hgrc); | |
142 } | |
8
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 function delete_repository($del_repo_name) |
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 $return_code = 0; |
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 if(!$this->can_delete($del_repo_name)) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
149 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
150 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
151 return -1; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
152 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
153 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
154 $lsdir = $this->lsdir(); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
155 $existingdir = array_keys($lsdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
156 $tempexistingdir = array(); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
157 foreach($existingdir as $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 $tempexistingdir[$repo_name] = $repo_name; |
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 $existingdir = $tempexistingdir; |
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 if(isset($lsdir[$del_repo_name])) |
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 $del_status = true; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
166 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
167 // existing filesystem is not missing, thus needs to be deleted |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
168 if($lsdir[$del_repo_name]['status'] != 2) |
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 $del_status = $this->delete_repository_dir($del_repo_name); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
171 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
172 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
173 // remove from hgweb.config |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
174 if($del_status) |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
175 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
176 // edit the directory |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
177 unset($existingdir[$del_repo_name]); |
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 $this->_ci->hgconf2ini->setHgWebDirCollections($existingdir); |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
180 |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
181 // success message |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
182 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
183 return 0; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
184 // $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
|
185 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
186 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
187 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
188 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
189 return -2; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
190 // $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
|
191 } |
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 else |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
194 { |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
195 // FIXME constants required |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
196 return -3; |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
197 // $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
|
198 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
199 } |
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
200 |
9 | 201 function stat_repository($project_name) |
202 { | |
203 // FIXME permission check | |
204 | |
205 return $this->_ci->hgconf2ini->getHGRC($project_name); | |
206 } | |
4 | 207 |
208 /** | |
209 * Public accessors - permissions | |
210 */ | |
211 | |
212 function can_create($repository_name) | |
213 { | |
214 return $this->_hgwebconf_allow_repo_create; | |
215 } | |
7 | 216 |
217 function can_delete($repository_name) | |
218 { | |
219 return $this->_hgwebconf_allow_repo_delete; | |
220 } | |
221 | |
4 | 222 /** |
223 * Public helpers - filesystem | |
224 */ | |
225 | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
226 function create_repository_dir($repository_name) |
4 | 227 { |
228 if(!$this->can_create($repository_name)) | |
229 { | |
230 return false; | |
231 } | |
232 | |
233 $cd = $this->_repositories_rel_dir; | |
9 | 234 mkdir($cd . $repository_name . '/.hg/store/data/', 0755, TRUE); |
4 | 235 |
236 // create hgrc | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
237 return $this->_ci->hgconf2ini->touchHGRC($repository_name); |
4 | 238 } |
239 | |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
240 function delete_repository_dir($repository_name) |
4 | 241 { |
7 | 242 if(!$this->can_delete($repository_name)) |
243 { | |
244 return false; | |
245 } | |
4 | 246 |
7 | 247 $cd = $this->_repositories_rel_dir . $repository_name; |
248 | |
249 $this->recursiveDelete($cd . '/.hg/'); | |
250 return $this->recursiveDelete($cd); | |
4 | 251 } |
252 | |
253 /** | |
254 * Private helpers - hgweb.config | |
255 */ | |
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
|
256 |
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
|
257 /** |
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
|
258 * 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
|
259 * |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
260 * @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
|
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 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
|
263 { |
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 $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
|
265 |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
266 // 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
|
267 $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
|
268 |
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 $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
|
270 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
|
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 // 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
|
273 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
|
274 { |
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
|
275 $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
|
276 } |
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 } |
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 $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
|
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 |
4 | 282 |
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
|
283 |
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
|
284 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
|
285 { |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
286 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
|
287 } |
9124b60de5a6
CodeIgniter 1.7.2 base. .htaccess modification for subdirectory serve. Hg_conf library begin - can scan directories on disk.
joshjcarrier
parents:
diff
changeset
|
288 |
8
6215bb22f3d3
Refactored config handler functions to new library.
joshjcarrier
parents:
7
diff
changeset
|
289 |
7 | 290 |
291 | |
292 /** | |
293 * Delete a file or recursively delete a directory | |
294 * | |
295 * @param string $str Path to file or directory | |
296 */ | |
297 function recursiveDelete($str){ | |
298 if(is_file($str)){ | |
299 return @unlink($str); | |
300 } | |
301 elseif(is_dir($str)){ | |
302 $scan = glob(rtrim($str,'/').'/*'); | |
303 foreach($scan as $index=>$path){ | |
304 $this->recursiveDelete($path); | |
305 } | |
306 return @rmdir($str); | |
307 } | |
308 } | |
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
|
309 } |