biography extension
This commit is contained in:
		
							parent
							
								
									dd94c7eda6
								
							
						
					
					
						commit
						c7d214189e
					
				
							
								
								
									
										13
									
								
								ext/biography/info.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								ext/biography/info.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php declare(strict_types=1); | ||||
| 
 | ||||
| class BiographyInfo extends ExtensionInfo | ||||
| { | ||||
|     public const KEY = "biography"; | ||||
| 
 | ||||
|     public $key = self::KEY; | ||||
|     public $name = "User Bios"; | ||||
|     public $url = self::SHIMMIE_URL; | ||||
|     public $authors = self::SHISH_AUTHOR; | ||||
|     public $license = self::LICENSE_GPLV2; | ||||
|     public $description = "Allow users to write a bit about themselves"; | ||||
| } | ||||
							
								
								
									
										35
									
								
								ext/biography/main.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ext/biography/main.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| <?php declare(strict_types=1); | ||||
| 
 | ||||
| class Biography extends Extension | ||||
| { | ||||
|     /** @var BiographyTheme */ | ||||
|     protected $theme; | ||||
| 
 | ||||
|     public function onUserPageBuilding(UserPageBuildingEvent $event) | ||||
|     { | ||||
|         global $database, $page, $user; | ||||
|         $duser = $event->display_user; | ||||
|         $duser_config = UserConfig::get_for_user($event->display_user->id); | ||||
|         $bio = $duser_config->get_string("biography", ""); | ||||
| 
 | ||||
|         if ($user->id == $duser->id) { | ||||
|             $this->theme->display_composer($page, $bio); | ||||
| 		} | ||||
| 		else { | ||||
|             $this->theme->display_biography($page, $bio); | ||||
| 		} | ||||
|     } | ||||
| 
 | ||||
|     public function onPageRequest(PageRequestEvent $event) | ||||
|     { | ||||
|         global $cache, $database, $page, $user, $user_config; | ||||
|         if ($event->page_matches("biography")) { | ||||
| 			if ($user->check_auth_token()) { | ||||
|                 $user_config->set_string("biography", $_POST['biography']); | ||||
| 				$page->flash("Bio Updated"); | ||||
| 				$page->set_mode(PageMode::REDIRECT); | ||||
| 				$page->set_redirect(referer_or(make_link())); | ||||
| 			} | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										19
									
								
								ext/biography/test.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ext/biography/test.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| <?php declare(strict_types=1); | ||||
| class BiographyTest extends ShimmiePHPUnitTestCase | ||||
| { | ||||
|     public function testBio() | ||||
|     { | ||||
| 		global $database; | ||||
|         $this->log_in_as_user(); | ||||
|         $this->post_page("biography", ["biography"=>"My bio goes here"]); | ||||
|         $this->get_page("user/" . self::$user_name); | ||||
|         $this->assert_text("My bio goes here"); | ||||
| 
 | ||||
|         $this->log_in_as_admin(); | ||||
|         $this->get_page("user/" . self::$user_name); | ||||
|         $this->assert_text("My bio goes here"); | ||||
| 
 | ||||
|         $this->get_page("user/" . self::$admin_name); | ||||
|         $this->assert_no_text("My bio goes here"); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										25
									
								
								ext/biography/theme.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								ext/biography/theme.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | ||||
| <?php declare(strict_types=1); | ||||
| use function MicroHTML\TEXTAREA; | ||||
| 
 | ||||
| class BiographyTheme extends Themelet | ||||
| { | ||||
|     public function display_biography(Page $page, string $bio) | ||||
|     { | ||||
|         $page->add_block(new Block("About Me", format_text($bio), "main", 30, "about-me")); | ||||
|     } | ||||
| 
 | ||||
|     public function display_composer(Page $page, string $bio) | ||||
|     { | ||||
|         global $user; | ||||
|         $post_url = make_link("biography"); | ||||
|         $auth = $user->get_auth_html(); | ||||
| 
 | ||||
|         $html = SHM_SIMPLE_FORM( | ||||
|             $post_url, | ||||
|             TEXTAREA(["style"=>"width: 100%", "rows"=>"6", "name"=>"biography"], $bio), | ||||
|             SHM_SUBMIT("Save") | ||||
|         ); | ||||
| 
 | ||||
|         $page->add_block(new Block("About Me", (string)$html, "main", 30)); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user