forked from GNUsocial/gnu-social
		
	Add events for filtering and logging new notices
This commit is contained in:
		| @@ -30,7 +30,7 @@ EndShowLaconicaStyles: End showing Laconica Style links;  good place to add hand | ||||
| StartShowUAStyles: Showing custom UA Style links | ||||
| - $action: the current action | ||||
|  | ||||
| EndShowUAStyles: End showing custom UA Style links; good place to add user-agent (e.g., filter, -webkit, -moz) specific styles  | ||||
| EndShowUAStyles: End showing custom UA Style links; good place to add user-agent (e.g., filter, -webkit, -moz) specific styles | ||||
| - $action: the current action | ||||
|  | ||||
| StartShowScripts: Showing JavaScript links | ||||
| @@ -76,3 +76,9 @@ StartShowContentBlock: Showing before the content container | ||||
| EndShowContentBlock: Showing after the content container | ||||
| - $action: the current action | ||||
|  | ||||
| StartNoticeSave: before inserting a notice (good place for content filters) | ||||
| - $notice: notice being saved (no ID or URI) | ||||
|  | ||||
| EndNoticeSave: after inserting a notice and related code | ||||
| - $notice: notice that was saved (with ID and URI) | ||||
|  | ||||
|   | ||||
| @@ -98,7 +98,12 @@ class NewnoticeAction extends Action | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             $this->saveNewNotice(); | ||||
|             try { | ||||
|                 $this->saveNewNotice(); | ||||
|             } catch (Exception $e) { | ||||
|                 $this->showForm($e->getMessage()); | ||||
|                 return; | ||||
|             } | ||||
|         } else { | ||||
|             $this->showForm(); | ||||
|         } | ||||
| @@ -123,15 +128,13 @@ class NewnoticeAction extends Action | ||||
|         $content = $this->trimmed('status_textarea'); | ||||
|  | ||||
|         if (!$content) { | ||||
|             $this->showForm(_('No content!')); | ||||
|             return; | ||||
|             $this->clientError(_('No content!')); | ||||
|         } else { | ||||
|             $content_shortened = common_shorten_links($content); | ||||
|  | ||||
|             if (mb_strlen($content_shortened) > 140) { | ||||
|                 $this->showForm(_('That\'s too long. '. | ||||
|                                   'Max notice size is 140 chars.')); | ||||
|                 return; | ||||
|                 $this->clientError(_('That\'s too long. '. | ||||
|                                      'Max notice size is 140 chars.')); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -154,7 +157,7 @@ class NewnoticeAction extends Action | ||||
|                                   ($replyto == 'false') ? null : $replyto); | ||||
|  | ||||
|         if (is_string($notice)) { | ||||
|             $this->showForm($notice); | ||||
|             $this->clientError($notice); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -154,33 +154,38 @@ class Notice extends Memcached_DataObject | ||||
|         $notice->source = $source; | ||||
|         $notice->uri = $uri; | ||||
|  | ||||
|         $id = $notice->insert(); | ||||
|         if (Event::handle('StartNoticeSave', array(&$notice))) { | ||||
|  | ||||
|         if (!$id) { | ||||
|             common_log_db_error($notice, 'INSERT', __FILE__); | ||||
|             return _('Problem saving notice.'); | ||||
|         } | ||||
|             $id = $notice->insert(); | ||||
|  | ||||
|         # Update the URI after the notice is in the database | ||||
|         if (!$uri) { | ||||
|             $orig = clone($notice); | ||||
|             $notice->uri = common_notice_uri($notice); | ||||
|  | ||||
|             if (!$notice->update($orig)) { | ||||
|                 common_log_db_error($notice, 'UPDATE', __FILE__); | ||||
|             if (!$id) { | ||||
|                 common_log_db_error($notice, 'INSERT', __FILE__); | ||||
|                 return _('Problem saving notice.'); | ||||
|             } | ||||
|  | ||||
|             # Update the URI after the notice is in the database | ||||
|             if (!$uri) { | ||||
|                 $orig = clone($notice); | ||||
|                 $notice->uri = common_notice_uri($notice); | ||||
|  | ||||
|                 if (!$notice->update($orig)) { | ||||
|                     common_log_db_error($notice, 'UPDATE', __FILE__); | ||||
|                     return _('Problem saving notice.'); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             # XXX: do we need to change this for remote users? | ||||
|  | ||||
|             $notice->saveReplies(); | ||||
|             $notice->saveTags(); | ||||
|             $notice->saveGroups(); | ||||
|  | ||||
|             $notice->addToInboxes(); | ||||
|             $notice->query('COMMIT'); | ||||
|  | ||||
|             Event::handle('EndNoticeSave', array($notice)); | ||||
|         } | ||||
|  | ||||
|         # XXX: do we need to change this for remote users? | ||||
|  | ||||
|         $notice->saveReplies(); | ||||
|         $notice->saveTags(); | ||||
|         $notice->saveGroups(); | ||||
|  | ||||
|         $notice->addToInboxes(); | ||||
| 		$notice->query('COMMIT'); | ||||
|  | ||||
|         # Clear the cache for subscribed users, so they'll update at next request | ||||
|         # XXX: someone clever could prepend instead of clearing the cache | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user