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