2.2.too
git-svn-id: file:///home/shish/svn/shimmie2/branches/branch_2.2@762 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
parent
43028ebd67
commit
5ad77079a6
@ -16,9 +16,15 @@ class ExtManager extends Extension {
|
|||||||
if(is_a($event, 'PageRequestEvent') && ($event->page_name == "ext_manager")) {
|
if(is_a($event, 'PageRequestEvent') && ($event->page_name == "ext_manager")) {
|
||||||
if($event->user->is_admin()) {
|
if($event->user->is_admin()) {
|
||||||
if($event->get_arg(0) == "set") {
|
if($event->get_arg(0) == "set") {
|
||||||
$this->set_things($_POST);
|
if(is_writable("ext")) {
|
||||||
$event->page->set_mode("redirect");
|
$this->set_things($_POST);
|
||||||
$event->page->set_redirect("ext_manager");
|
$event->page->set_mode("redirect");
|
||||||
|
$event->page->set_redirect(make_link("ext_manager"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->theme->display_error($event->page, "File Operation Failed",
|
||||||
|
"The extension folder isn't writable by the web server :(");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->theme->display_table($event->page, $this->get_extensions());
|
$this->theme->display_table($event->page, $this->get_extensions());
|
||||||
@ -73,23 +79,34 @@ class ExtManager extends Extension {
|
|||||||
preg_match("#contrib/(.*)/main.php#", $main, $matches);
|
preg_match("#contrib/(.*)/main.php#", $main, $matches);
|
||||||
$fname = $matches[1];
|
$fname = $matches[1];
|
||||||
|
|
||||||
|
if(!isset($settings["ext_$fname"])) $settings["ext_$fname"] = 0;
|
||||||
$this->set_enabled($fname, $settings["ext_$fname"]);
|
$this->set_enabled($fname, $settings["ext_$fname"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function set_enabled($fname, $enabled) {
|
private function set_enabled($fname, $enabled) {
|
||||||
if($enabled) {
|
if($enabled) {
|
||||||
// enable if currently disabled
|
// enable if currently disabled
|
||||||
if(!file_exists("ext/$fname")) {
|
if(!file_exists("ext/$fname")) {
|
||||||
symlink("../contrib/$fname", "ext/$fname");
|
$this->enable_extension($fname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// disable if currently enabled
|
// disable if currently enabled
|
||||||
if(file_exists("ext/$fname")) {
|
if(file_exists("ext/$fname")) {
|
||||||
unlink("ext/$fname");
|
deltree("ext/$fname");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function enable_extension($fname) {
|
||||||
|
if(function_exists("symlink")) {
|
||||||
|
symlink("../contrib/$fname", "ext/$fname");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
full_copy("contrib/$fname", "ext/$fname");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
add_event_listener(new ExtManager());
|
add_event_listener(new ExtManager());
|
||||||
?>
|
?>
|
||||||
|
@ -364,6 +364,51 @@ function ip_in_range($IP, $CIDR) {
|
|||||||
return ($ip_ip_net == $ip_net);
|
return ($ip_ip_net == $ip_net);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// from a patch by Christian Walde; only intended for use in the
|
||||||
|
// "extension manager" extension, but it seems to fit better here
|
||||||
|
function deltree($f) {
|
||||||
|
if (is_link($f)) {
|
||||||
|
unlink($f);
|
||||||
|
}
|
||||||
|
else if(is_dir($f)) {
|
||||||
|
foreach(glob($f.'/*') as $sf) {
|
||||||
|
if (is_dir($sf) && !is_link($sf)) {
|
||||||
|
deltree($sf);
|
||||||
|
} else {
|
||||||
|
unlink($sf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rmdir($f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// from a comment on http://uk.php.net/copy
|
||||||
|
function full_copy($source, $target) {
|
||||||
|
if(is_dir($source)) {
|
||||||
|
@mkdir($target);
|
||||||
|
|
||||||
|
$d = dir($source);
|
||||||
|
|
||||||
|
while(FALSE !== ($entry = $d->read())) {
|
||||||
|
if($entry == '.' || $entry == '..') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$Entry = $source . '/' . $entry;
|
||||||
|
if(is_dir($Entry)) {
|
||||||
|
full_copy($Entry, $target . '/' . $entry);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
copy($Entry, $target . '/' . $entry);
|
||||||
|
}
|
||||||
|
$d->close();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
copy($source, $target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
||||||
* Event API *
|
* Event API *
|
||||||
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user