Too many things I don't even remember :D
This commit is contained in:
		
							parent
							
								
									5d7ac8f451
								
							
						
					
					
						commit
						e2408fb49d
					
				
					 3 changed files with 104 additions and 34 deletions
				
			
		|  | @ -6,11 +6,13 @@ if(count(get_included_files()) ==1) { | |||
| class DataBase extends SQLite3 { | ||||
| 	function __construct() { | ||||
| 		$this->open('database.db'); | ||||
| 		$this->exec('PRAGMA foreign_keys=ON;'); | ||||
| 		$this->exec('PRAGMA full_column_names=ON;'); | ||||
| 		$this->exec('PRAGMA short_column_names=OFF;'); | ||||
| 		 | ||||
| 		$sql = " | ||||
| 			CREATE TABLE IF NOT EXISTS users ( | ||||
| 			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE, | ||||
| 			uuid	TEXT	UNIQUE, | ||||
| 			id	INTEGER	PRIMARY KEY	UNIQUE, | ||||
| 			pass	TEXT, | ||||
| 			email	TEXT	UNIQUE, | ||||
| 			handle	TEXT	NOT NULL	UNIQUE, | ||||
|  | @ -19,41 +21,39 @@ class DataBase extends SQLite3 { | |||
| 			); | ||||
| 
 | ||||
| 			CREATE TABLE IF NOT EXISTS personas ( | ||||
| 			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE, | ||||
| 			uuid	TEXT	UNIQUE, | ||||
| 			id	INTEGER	PRIMARY KEY	UNIQUE, | ||||
| 			userid	INTEGER	NOT NULL, | ||||
| 			handle	TEXT	NOT NULL, | ||||
| 			name	TEXT	NOT NULL, | ||||
| 			about	TEXT, | ||||
| 			colour	INTEGER, | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id), | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE, | ||||
| 			UNIQUE (userid, handle) | ||||
| 			); | ||||
| 
 | ||||
| 			CREATE TABLE IF NOT EXISTS posts ( | ||||
| 			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE, | ||||
| 			uuid	TEXT	UNIQUE, | ||||
| 			id	INTEGER	PRIMARY KEY	UNIQUE, | ||||
| 			time	INTEGER	NOT NULL, | ||||
| 			userid	INTEGER	NOT NULL, | ||||
| 			personaid INTEGER, | ||||
| 			personaid INTEGER NOT NULL, | ||||
| 			text	TEXT	NOT NULL, | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id) | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE, | ||||
| 			FOREIGN KEY (personaid) REFERENCES personas(id) ON UPDATE CASCADE ON DELETE CASCADE | ||||
| 			); | ||||
| 
 | ||||
| 			CREATE TABLE IF NOT EXISTS comments ( | ||||
| 			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE, | ||||
| 			uuid	TEXT	UNIQUE, | ||||
| 			id	INTEGER	PRIMARY KEY	UNIQUE, | ||||
| 			time	INTEGER	NOT NULL, | ||||
| 			userid	INTEGER	NOT NULL, | ||||
| 			personaid INTEGER, | ||||
| 			postid	INTEGER	NOT NULL, | ||||
| 			text	TEXT	NOT NULL, | ||||
| 			FOREIGN KEY (postid) REFERENCES posts(id), | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id), | ||||
| 			FOREIGN KEY (personaid) REFERENCES personas(id) | ||||
| 			FOREIGN KEY (userid) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE, | ||||
| 			FOREIGN KEY (personaid) REFERENCES personas(id) ON UPDATE CASCADE ON DELETE CASCADE | ||||
| 			); | ||||
| 
 | ||||
| 			INSERT OR IGNORE INTO users (id, handle, name, about, uuid) VALUES ('0', 'SYSTEM', 'SYSTEM', 'SYSTEM', 'SYSTEM'); | ||||
| 			INSERT OR IGNORE INTO users (id, handle, name, about) VALUES ('0', 'SYSTEM', 'SYSTEM', 'SYSTEM'); | ||||
| 
 | ||||
| 		";
 | ||||
| 		 | ||||
|  | @ -62,19 +62,28 @@ class DataBase extends SQLite3 { | |||
| 	} | ||||
| 	 | ||||
| 	function addUser($handle, $name, $about=NULL) { | ||||
| 		$uuid = $this->uuidGen(); | ||||
| 		$sql = "INSERT INTO users (handle, name, about, uuid) VALUES ('$handle', '$name', '$about', '$uuid')"; | ||||
| 		$id = hexdec(uniqid()); | ||||
| 		$sql = "INSERT INTO users (id, handle, name, about) VALUES ('$id', '$handle', '$name', '$about')"; | ||||
| 		$ret = $this->exec($sql); | ||||
| 		if(!$ret) { | ||||
| 			die($this->lastErrorMsg()); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	function addPost($userid, $personaid, $contents) { | ||||
| 	function addPost($text, $userid=NULL, $personaid=NULL) { | ||||
| 		$id = hexdec(uniqid()); | ||||
| 		$time = time(); | ||||
| 		$sql = $this->prepare("INSERT INTO posts (id, time, userid, personaid, text) values ('$id', '$time', '$userid', :personaid, '$text')"); | ||||
| 		$sql->bindParam(':personaid', $personaid, SQLITE3_INTEGER); | ||||
| 		$ret = $sql->execute(); | ||||
| 		if(!$ret) { | ||||
| 			die($this->lastErrorMsg()); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 		$uuid = $this->uuidGen(); | ||||
| 		$sql = "INSERT INTO posts (time, userid, personaid, text, uuid) values ('$time', '$userid', '$personaid', '$contents', '$uuid')"; | ||||
| 	function addPersona($userid, $handle, $name, $about=NULL, $colour=NULL) { | ||||
| 		$id = hexdec(uniqid()); | ||||
| 		$sql = "INSERT INTO personas (id, userid, handle, name, colour) VALUES ('$id', '$userid', '$handle', '$about', '$colour');"; | ||||
| 		$ret = $this->exec($sql); | ||||
| 		if(!$ret) { | ||||
| 			die($this->lastErrorMsg()); | ||||
|  | @ -92,7 +101,7 @@ class DataBase extends SQLite3 { | |||
| 
 | ||||
| 	function passwordVerify($userid, $password) { | ||||
| 		$sql = "SELECT pass FROM users WHERE id='$userid';"; | ||||
| 		$ret = $this->query($sql)->fetchArray(); | ||||
| 		$ret = $this->query($sql)->fetchArray(SQLITE3_NUM); | ||||
| 		if(!$ret) { | ||||
| 			return false; | ||||
| 		} | ||||
|  | @ -100,8 +109,15 @@ class DataBase extends SQLite3 { | |||
| 		return password_verify($password, $dbhash); | ||||
| 	} | ||||
| 
 | ||||
| 	function uuidGen() { | ||||
| 		return base64_encode(random_bytes(12)); | ||||
| 	function getPosts($userid=NULL, $personaid = NULL) { | ||||
| 		$sql = "SELECT * FROM posts AS post LEFT JOIN users AS user ON post.userid=user.id LEFT JOIN personas AS persona ON post.personaid=persona.id;"; | ||||
| 
 | ||||
| 		$ret = $this->query($sql); | ||||
| 		$array = array(); | ||||
| 		while ($row = $ret->fetchArray(SQLITE3_ASSOC)) { | ||||
| 			array_push($array, $row); | ||||
| 		} | ||||
| 		return $array; | ||||
| 	} | ||||
| } | ||||
| ?>
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue