forked from GNUsocial/gnu-social
		
	Which streams should be put under ModeratedNoticeStream is probably open to debate. But at least the public ones should hide the posts from users that are sandboxed.
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| if (!defined('GNUSOCIAL')) { exit(1); } 
 | |
| 
 | |
| class NetworkPublicNoticeStream extends ModeratedNoticeStream
 | |
| {
 | |
|     function __construct(Profile $scoped=null)
 | |
|     {
 | |
|         parent::__construct(new CachingNoticeStream(new RawNetworkPublicNoticeStream(),
 | |
|                                                     'networkpublic'),
 | |
|                             $scoped);
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Raw public stream
 | |
|  *
 | |
|  * @category  Stream
 | |
|  * @package   StatusNet
 | |
|  * @author    Evan Prodromou <evan@status.net>
 | |
|  * @copyright 2011 StatusNet, Inc.
 | |
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 | |
|  * @link      http://status.net/
 | |
|  */
 | |
| 
 | |
| class RawNetworkPublicNoticeStream extends FullNoticeStream
 | |
| {
 | |
|     function getNoticeIds($offset, $limit, $since_id, $max_id)
 | |
|     {
 | |
|         $notice = new Notice();
 | |
| 
 | |
|         $notice->selectAdd(); // clears it
 | |
|         $notice->selectAdd('id');
 | |
| 
 | |
|         $notice->orderBy('created DESC, id DESC');
 | |
| 
 | |
|         if (!is_null($offset)) {
 | |
|             $notice->limit($offset, $limit);
 | |
|         }
 | |
| 
 | |
|         $notice->whereAdd('is_local ='. Notice::REMOTE);
 | |
|         // -1 == blacklisted, -2 == gateway (i.e. Twitter)
 | |
|         $notice->whereAdd('is_local !='. Notice::LOCAL_NONPUBLIC);
 | |
|         $notice->whereAdd('is_local !='. Notice::GATEWAY);
 | |
| 
 | |
|         Notice::addWhereSinceId($notice, $since_id);
 | |
|         Notice::addWhereMaxId($notice, $max_id);
 | |
| 
 | |
|         self::filterVerbs($notice, $this->selectVerbs);
 | |
| 
 | |
|         $ids = array();
 | |
| 
 | |
|         if ($notice->find()) {
 | |
|             while ($notice->fetch()) {
 | |
|                 $ids[] = $notice->id;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         $notice->free();
 | |
|         $notice = NULL;
 | |
| 
 | |
|         return $ids;
 | |
|     }
 | |
| }
 |