| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, Controlez-Vous, Inc. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-05-14 15:00:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-17 11:47:01 -04:00
										 |  |  | if (!defined('LACONICA')) { exit(1); } | 
					
						
							| 
									
										
										
										
											2008-05-14 15:00:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Table Definition for notice | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | require_once 'DB/DataObject.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-15 15:55:13 -04:00
										 |  |  | class Notice extends DB_DataObject  | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | { | 
					
						
							|  |  |  |     ###START_AUTOCODE
 | 
					
						
							|  |  |  |     /* the code below is auto generated do not remove the above tag */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public $__table = 'notice';                          // table name
 | 
					
						
							|  |  |  |     public $id;                              // int(4)  primary_key not_null
 | 
					
						
							|  |  |  |     public $profile_id;                      // int(4)   not_null
 | 
					
						
							| 
									
										
										
										
											2008-05-22 14:41:09 -04:00
										 |  |  |     public $uri;                             // varchar(255)  unique_key
 | 
					
						
							| 
									
										
										
										
											2008-07-15 15:55:13 -04:00
										 |  |  |     public $content;                         // varchar(140)  
 | 
					
						
							|  |  |  |     public $rendered;                        // text()  
 | 
					
						
							|  |  |  |     public $url;                             // varchar(255)  
 | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  |     public $created;                         // datetime()   not_null
 | 
					
						
							|  |  |  |     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 | 
					
						
							| 
									
										
										
										
											2008-07-15 15:55:13 -04:00
										 |  |  |     public $reply_to;                        // int(4)  
 | 
					
						
							| 
									
										
										
										
											2008-07-22 10:16:14 -04:00
										 |  |  |     public $is_local;                        // tinyint(1)  
 | 
					
						
							| 
									
										
										
										
											2008-07-31 11:27:31 -04:00
										 |  |  |     public $source;                          // varchar(32)  
 | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* Static get */ | 
					
						
							|  |  |  |     function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Notice',$k,$v); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* the code above is auto generated do not remove the tag below */ | 
					
						
							|  |  |  |     ###END_AUTOCODE
 | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	function getProfile() { | 
					
						
							| 
									
										
										
										
											2008-05-20 15:26:34 -04:00
										 |  |  | 		return Profile::staticGet($this->profile_id); | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-07-20 01:57:02 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	function saveTags() { | 
					
						
							|  |  |  | 		/* extract all #hastags */ | 
					
						
							|  |  |  | 		$count = preg_match_all('/(?:^|\s)#([a-z0-9]{1,64})/', strtolower($this->content), $match); | 
					
						
							|  |  |  | 		if (!$count) { | 
					
						
							|  |  |  | 			return true; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/* Add them to the database */ | 
					
						
							|  |  |  | 		foreach(array_unique($match[1]) as $hashtag) { | 
					
						
							|  |  |  | 			$tag = DB_DataObject::factory('Notice_tag'); | 
					
						
							|  |  |  | 			$tag->notice_id = $this->id; | 
					
						
							|  |  |  | 			$tag->tag = $hashtag; | 
					
						
							|  |  |  | 			$tag->created = $this->created; | 
					
						
							|  |  |  | 			$id = $tag->insert(); | 
					
						
							|  |  |  | 			if (!$id) { | 
					
						
							|  |  |  | 				$last_error = PEAR::getStaticProperty('DB_DataObject','lastError'); | 
					
						
							| 
									
										
										
										
											2008-08-07 19:42:27 -04:00
										 |  |  | 				common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message); | 
					
						
							| 
									
										
										
										
											2008-07-20 01:57:02 -04:00
										 |  |  | 				common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message)); | 
					
						
							|  |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-08-26 17:11:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) { | 
					
						
							| 
									
										
										
										
											2008-07-29 22:28:56 -04:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		$notice = new Notice(); | 
					
						
							|  |  |  | 		$notice->profile_id = $profile_id; | 
					
						
							|  |  |  | 		$notice->is_local = $is_local; | 
					
						
							| 
									
										
										
										
											2008-08-15 14:53:17 -04:00
										 |  |  | 		$notice->reply_to = $reply_to; | 
					
						
							| 
									
										
										
										
											2008-08-25 14:30:05 -04:00
										 |  |  | 		$notice->created = common_sql_now(); | 
					
						
							| 
									
										
										
										
											2008-07-29 22:28:56 -04:00
										 |  |  | 		$notice->content = $content; | 
					
						
							|  |  |  | 		$notice->rendered = common_render_content($notice->content, $notice); | 
					
						
							| 
									
										
										
										
											2008-07-29 22:50:52 -04:00
										 |  |  | 		if ($source) { | 
					
						
							|  |  |  | 			$notice->source = $source; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-07-29 22:28:56 -04:00
										 |  |  | 		$id = $notice->insert(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (!$id) { | 
					
						
							|  |  |  | 			return _('Problem saving notice.'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$orig = clone($notice); | 
					
						
							| 
									
										
										
										
											2008-08-26 17:11:08 -04:00
										 |  |  | 		if ($uri) { | 
					
						
							|  |  |  | 			$notice->uri = $uri; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			$notice->uri = common_notice_uri($notice); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-07-29 22:28:56 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		if (!$notice->update($orig)) { | 
					
						
							|  |  |  | 			return _('Problem saving notice.'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-26 17:11:08 -04:00
										 |  |  | 		# XXX: do we need to change this for remote users?
 | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-07-29 22:28:56 -04:00
										 |  |  | 		common_save_replies($notice); | 
					
						
							|  |  |  | 		$notice->saveTags(); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		return $notice; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | } |