alpha1 #8
| @ -4,6 +4,6 @@ | ||||
| } | ||||
| http://localhost:8205 { | ||||
| 	root ./public | ||||
| 	try_files {uri} {uri}.php | ||||
| 	try_files {path} {path}.php | ||||
| 	php_server | ||||
| } | ||||
|  | ||||
| @ -23,7 +23,7 @@ class Data { | ||||
|         $tableQuery = $db->query("SELECT name FROM sqlite_master WHERE type = 'table'"); | ||||
|         while ($table = $tableQuery->fetchArray(SQLITE3_NUM)) $tables[] = $table[0]; | ||||
|         if (!in_array('frc_user', $tables)) { | ||||
|             $query = <<<SQL | ||||
|             $query = <<<'SQL' | ||||
|                 CREATE TABLE frc_user ( | ||||
|                     id       INTEGER NOT NULL PRIMARY KEY, | ||||
|                     email    TEXT    NOT NULL, | ||||
| @ -33,18 +33,20 @@ class Data { | ||||
|             $db->exec('CREATE INDEX idx_user_email ON frc_user (email)'); | ||||
|         } | ||||
|         if (!in_array('feed', $tables)) { | ||||
|             $query = <<<SQL | ||||
|             $query = <<<'SQL' | ||||
|                 CREATE TABLE feed ( | ||||
|                     id         INTEGER NOT NULL PRIMARY KEY, | ||||
|                     user_id    INTEGER NOT NULL, | ||||
|                     url        TEXT    NOT NULL, | ||||
|                     title      TEXT, | ||||
|                     updated_on TEXT, | ||||
|                     checked_on TEXT, | ||||
|                     FOREIGN KEY (user_id) REFERENCES frc_user (id)) | ||||
|                 SQL; | ||||
|             $db->exec($query); | ||||
|         } | ||||
|         if (!in_array('item', $tables)) { | ||||
|             $query = <<<SQL | ||||
|             $query = <<<'SQL' | ||||
|                 CREATE TABLE item ( | ||||
|                     id            INTEGER NOT NULL PRIMARY KEY, | ||||
|                     feed_id       INTEGER NOT NULL, | ||||
|  | ||||
							
								
								
									
										35
									
								
								src/public/assets/style.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/public/assets/style.css
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| html { | ||||
|     min-height: 100vh; | ||||
|     font-family: sans-serif; | ||||
| } | ||||
| body { | ||||
|     margin: 0; | ||||
|     font-size: 1rem; | ||||
|     background-color: #eeeeee; | ||||
| } | ||||
| header { | ||||
|     padding: 0 1rem .5rem 1rem; | ||||
|     background: linear-gradient(#000064, #000048, #000032); | ||||
|     border-bottom-left-radius: .5rem; | ||||
|     border-bottom-right-radius: .5rem; | ||||
|     color: white; | ||||
|     display: flex; | ||||
|     flex-flow: row nowrap; | ||||
|     justify-content: space-between; | ||||
|     align-items: baseline; | ||||
| 
 | ||||
|     .title { | ||||
|         font-size: 1.5rem; | ||||
|     } | ||||
| 
 | ||||
|     a:link, a:visited { | ||||
|         color: white; | ||||
|         text-decoration: none; | ||||
|     } | ||||
|     a:hover { | ||||
|         text-decoration: underline; | ||||
|     } | ||||
| } | ||||
| main { | ||||
|     padding: 0 .5rem; | ||||
| } | ||||
							
								
								
									
										30
									
								
								src/public/feed.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/public/feed.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Add/Edit Feed Page | ||||
|  * | ||||
|  * Allows users to add or edit RSS feeds | ||||
|  */ | ||||
| 
 | ||||
| include '../start.php'; | ||||
| 
 | ||||
| Security::verifyUser(); | ||||
| page_head('Feed page'); | ||||
| 
 | ||||
| if ($_SERVER['REQUEST_METHOD'] == 'POST') { | ||||
|     // TODO: get feed, add if new, reject if existing but not owned by this user, update otherwise
 | ||||
|     $feed = array(); | ||||
| } else { | ||||
|     // TODO: Retrieve feed by ID if not new
 | ||||
|     $feed = [ 'id' => $_GET['id'], 'url' => '' ]; | ||||
| } | ||||
| ?>
 | ||||
| <h1>Add/Edit Feed</h1> | ||||
| <form method=POST action=/feed hx-post=/feed> | ||||
|     <input type=hidden name=id value="<?=$feed['id']?>"> | ||||
|     <label> | ||||
|         Feed URL | ||||
|         <input type=url name=url required autofocus value="<?=$feed['url']?>"> | ||||
|     </label> | ||||
| </form> | ||||
| <?php | ||||
| page_foot(); | ||||
| @ -1,10 +1,16 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Home Page | ||||
|  * | ||||
|  * Displays a list of unread feed items for the current user | ||||
|  */ | ||||
| 
 | ||||
| include '../start.php'; | ||||
| 
 | ||||
| Security::verifyUser(); | ||||
| 
 | ||||
| page_head('Welcome'); | ||||
| ?>
 | ||||
| <p>User ID <?=$_REQUEST['FRC_USER_ID']?> - e-mail <?=$_REQUEST['FRC_USER_EMAIL']?></p>
 | ||||
| 
 | ||||
| <?php | ||||
| page_foot(); | ||||
|  | ||||
| @ -21,13 +21,27 @@ function page_head(string $title): void { | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <title><?=$title?> | Feed Reader Central</title>
 | ||||
|     <link href=/assets/style.css rel=stylesheet> | ||||
| </head> | ||||
| <body><?php | ||||
| <body> | ||||
| <header> | ||||
|     <div class=title>Feed Reader Central</div> | ||||
|     <div><?php | ||||
|         if (array_key_exists('FRC_USER_ID', $_REQUEST)) { | ||||
|             echo '<a href=/feed?id=new>Add Feed</a>'; | ||||
|             if ($_REQUEST['FRC_USER_EMAIL'] != 'solouser@example.com') { | ||||
|                 echo " | {$_REQUEST['FRC_USER_EMAIL']}"; | ||||
|             } | ||||
|         } ?>
 | ||||
|     </div> | ||||
| </header> | ||||
| <main hx-target=this> | ||||
| <?php | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Render the end of the page | ||||
|  */ | ||||
| function page_foot(): void { | ||||
|     ?></body></html><?php
 | ||||
|     ?></main></body></html><?php
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user