truthomatic
This commit is contained in:
		
							parent
							
								
									71999a3065
								
							
						
					
					
						commit
						6baf616692
					
				| @ -11,16 +11,38 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| class SendPMEvent extends Event { | class SendPMEvent extends Event { | ||||||
| 	public function __construct($from_id, $from_ip, $to_id, $subject, $message) { | 	public function __construct($pm) { | ||||||
|  | 		$this->pm = $pm; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class PM { | ||||||
|  | 	public function __construct($from_id=0, $from_ip="0.0.0.0", $to_id=0, $subject="A Message", $message="Some Text", $read=False) { | ||||||
|  | 		# PHP: the P stands for "really", the H stands for "awful" and the other P stands for "language"
 | ||||||
|  | 		if(is_array($from_id)) { | ||||||
|  | 			$a = $from_id; | ||||||
|  | 			$this->id      = $a["id"]; | ||||||
|  | 			$this->from_id = $a["from_id"]; | ||||||
|  | 			$this->from_ip = $a["from_ip"]; | ||||||
|  | 			$this->to_id   = $a["to_id"]; | ||||||
|  | 			$this->sent_date = $a["sent_date"]; | ||||||
|  | 			$this->subject = $a["subject"]; | ||||||
|  | 			$this->message = $a["message"]; | ||||||
|  | 			$this->is_read = undb_bool($a["is_read"]); | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			$this->id      = -1; | ||||||
| 			$this->from_id = $from_id; | 			$this->from_id = $from_id; | ||||||
| 			$this->from_ip = $from_ip; | 			$this->from_ip = $from_ip; | ||||||
| 			$this->to_id   = $to_id; | 			$this->to_id   = $to_id; | ||||||
| 			$this->subject = $subject; | 			$this->subject = $subject; | ||||||
| 			$this->message = $message; | 			$this->message = $message; | ||||||
|  | 			$this->is_read = $read; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class PM extends SimpleExtension { | class PrivMsg extends SimpleExtension { | ||||||
| 	public function onInitExt($event) { | 	public function onInitExt($event) { | ||||||
| 		global $config, $database; | 		global $config, $database; | ||||||
| 
 | 
 | ||||||
| @ -78,7 +100,7 @@ class PM extends SimpleExtension { | |||||||
| 						else if(($pm["to_id"] == $user->id) || $user->is_admin()) { | 						else if(($pm["to_id"] == $user->id) || $user->is_admin()) { | ||||||
| 							$from_user = User::by_id(int_escape($pm["from_id"])); | 							$from_user = User::by_id(int_escape($pm["from_id"])); | ||||||
| 							$database->get_row("UPDATE private_message SET is_read='Y' WHERE id = ?", array($pm_id)); | 							$database->get_row("UPDATE private_message SET is_read='Y' WHERE id = ?", array($pm_id)); | ||||||
| 							$this->theme->display_message($page, $from_user, $user, $pm); | 							$this->theme->display_message($page, $from_user, $user, new PM($pm)); | ||||||
| 						} | 						} | ||||||
| 						else { | 						else { | ||||||
| 							// permission denied
 | 							// permission denied
 | ||||||
| @ -105,7 +127,7 @@ class PM extends SimpleExtension { | |||||||
| 						$from_id = $user->id; | 						$from_id = $user->id; | ||||||
| 						$subject = $_POST["subject"]; | 						$subject = $_POST["subject"]; | ||||||
| 						$message = $_POST["message"]; | 						$message = $_POST["message"]; | ||||||
| 						send_event(new SendPMEvent($from_id, $_SERVER["REMOTE_ADDR"], $to_id, $subject, $message)); | 						send_event(new SendPMEvent(new PM($from_id, $_SERVER["REMOTE_ADDR"], $to_id, $subject, $message))); | ||||||
| 						$page->set_mode("redirect"); | 						$page->set_mode("redirect"); | ||||||
| 						$page->set_redirect($_SERVER["HTTP_REFERER"]); | 						$page->set_redirect($_SERVER["HTTP_REFERER"]); | ||||||
| 						break; | 						break; | ||||||
| @ -124,8 +146,8 @@ class PM extends SimpleExtension { | |||||||
| 					from_id, from_ip, to_id, | 					from_id, from_ip, to_id, | ||||||
| 					sent_date, subject, message) | 					sent_date, subject, message) | ||||||
| 				VALUES(?, ?, ?, now(), ?, ?)",
 | 				VALUES(?, ?, ?, now(), ?, ?)",
 | ||||||
| 			array($event->from_id, $event->from_ip, | 			array($event->pm->from_id, $event->pm->from_ip, | ||||||
| 			$event->to_id, $event->subject, $event->message) | 			$event->pm->to_id, $event->pm->subject, $event->pm->message) | ||||||
| 		); | 		); | ||||||
| 		log_info("pm", "Sent PM to User #{$event->to_id}"); | 		log_info("pm", "Sent PM to User #{$event->to_id}"); | ||||||
| 	} | 	} | ||||||
| @ -134,12 +156,17 @@ class PM extends SimpleExtension { | |||||||
| 	private function get_pms(User $user) { | 	private function get_pms(User $user) { | ||||||
| 		global $database; | 		global $database; | ||||||
| 
 | 
 | ||||||
| 		return $database->get_all(" | 		$arr = $database->get_all(" | ||||||
| 			SELECT private_message.*,user_from.name AS from_name | 			SELECT private_message.*,user_from.name AS from_name | ||||||
| 			FROM private_message | 			FROM private_message | ||||||
| 			JOIN users AS user_from ON user_from.id=from_id | 			JOIN users AS user_from ON user_from.id=from_id | ||||||
| 			WHERE to_id = ? | 			WHERE to_id = ? | ||||||
| 			", array($user->id));
 | 			", array($user->id));
 | ||||||
|  | 		$pms = array(); | ||||||
|  | 		foreach($arr as $pm) { | ||||||
|  | 			$pms[] = new PM($pm); | ||||||
|  | 		} | ||||||
|  | 		return $pms; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| ?>
 | ?>
 | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| <?php | <?php | ||||||
| class PMTest extends SCoreWebTestCase { | class PrivMsgTest extends SCoreWebTestCase { | ||||||
| 	function testPM() { | 	function testPM() { | ||||||
| 		$this->log_in_as_admin(); | 		$this->log_in_as_admin(); | ||||||
| 		$this->get_page("user/test"); | 		$this->get_page("user/test"); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
| class PMTheme extends Themelet { | class PrivMsgTheme extends Themelet { | ||||||
| 	public function display_pms(Page $page, $pms) { | 	public function display_pms(Page $page, $pms) { | ||||||
| 		$html = " | 		$html = " | ||||||
| 			<script> | 			<script> | ||||||
| @ -14,18 +14,19 @@ class PMTheme extends Themelet { | |||||||
| 		$n = 0; | 		$n = 0; | ||||||
| 		foreach($pms as $pm) { | 		foreach($pms as $pm) { | ||||||
| 			$oe = ($n++ % 2 == 0) ? "even" : "odd"; | 			$oe = ($n++ % 2 == 0) ? "even" : "odd"; | ||||||
| 			$h_subject = html_escape($pm["subject"]); | 			$h_subject = html_escape($pm->subject); | ||||||
| 			if(strlen(trim($h_subject)) == 0) $h_subject = "(No subject)"; | 			if(strlen(trim($h_subject)) == 0) $h_subject = "(No subject)"; | ||||||
| 			$h_from = html_escape($pm["from_name"]); | 			$from_name = User::by_id($pm->from_id)->name; | ||||||
| 			$from_url = make_link("user/".url_escape($pm["from_name"])); | 			$h_from = html_escape($from_name); | ||||||
| 			$pm_url = make_link("pm/read/".$pm["id"]); | 			$from_url = make_link("user/".url_escape($from_name)); | ||||||
| 			$del_url = make_link("pm/delete/".$pm["id"]); | 			$pm_url = make_link("pm/read/".$pm->id); | ||||||
| 			$h_date = html_escape($pm["sent_date"]); | 			$del_url = make_link("pm/delete/".$pm->id); | ||||||
| 			if($pm["is_read"] == "N") $h_subject = "<b>$h_subject</b>"; | 			$h_date = html_escape($pm->sent_date); | ||||||
|  | 			if($pm->is_read) $h_subject = "<b>$h_subject</b>"; | ||||||
| 			$html .= "<tr class='$oe'><td><a href='$pm_url'>$h_subject</a></td>
 | 			$html .= "<tr class='$oe'><td><a href='$pm_url'>$h_subject</a></td>
 | ||||||
| 			<td><a href='$from_url'>$h_from</a></td><td>$h_date</td> | 			<td><a href='$from_url'>$h_from</a></td><td>$h_date</td> | ||||||
| 			<td><form action='$del_url'> | 			<td><form action='$del_url'> | ||||||
| 				<input type='hidden' name='q' value='/pm/delete/{$pm["id"]}'> | 				<input type='hidden' name='q' value='/pm/delete/{$pm->id}'> | ||||||
| 				<input type='submit' value='Delete'> | 				<input type='submit' value='Delete'> | ||||||
| 			</form></td></tr>";
 | 			</form></td></tr>";
 | ||||||
| 		} | 		} | ||||||
| @ -53,12 +54,12 @@ EOD; | |||||||
| 		$page->add_block(new Block("Write a PM", $html, "main", 20)); | 		$page->add_block(new Block("Write a PM", $html, "main", 20)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public function display_message(Page $page, User $from, User $to, $pm) { | 	public function display_message(Page $page, User $from, User $to, PM $pm) { | ||||||
| 		$this->display_composer($page, $to, $from, "Re: ".$pm["subject"]); | 		$this->display_composer($page, $to, $from, "Re: ".$pm->subject); | ||||||
| 		$page->set_title("Private Message"); | 		$page->set_title("Private Message"); | ||||||
| 		$page->set_heading(html_escape($pm["subject"])); | 		$page->set_heading(html_escape($pm->subject)); | ||||||
| 		$page->add_block(new NavBlock()); | 		$page->add_block(new NavBlock()); | ||||||
| 		$page->add_block(new Block("Message", format_text($pm["message"]), "main", 10)); | 		$page->add_block(new Block("Message", format_text($pm->message), "main", 10)); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| ?>
 | ?>
 | ||||||
|  | |||||||
| @ -76,7 +76,7 @@ abstract class BaseConfig implements Config { | |||||||
| 		return $this->get($name, $default); | 		return $this->get($name, $default); | ||||||
| 	} | 	} | ||||||
| 	public function get_bool($name, $default=null) { | 	public function get_bool($name, $default=null) { | ||||||
| 		return ($this->get($name, $default) == 'Y'); | 		return undb_bool($this->get($name, $default)); | ||||||
| 	} | 	} | ||||||
| 	public function get_array($name, $default=array()) { | 	public function get_array($name, $default=array()) { | ||||||
| 		return explode(",", $this->get($name, "")); | 		return explode(",", $this->get($name, "")); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user