2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
									
										
										
										
											2008-05-20 15:14:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
									
										
										
										
											2009-08-25 18:14:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  StatusNet  -  the  distributed  open - source  microblogging  tool 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 18:12:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( C )  2008 ,  2009 ,  StatusNet ,  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 />. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-19 14:35:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( ! defined ( 'GNUSOCIAL' ))  {  exit ( 1 );  }  
						 
					
						
							
								
									
										
										
										
											2008-09-15 02:56:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Table  Definition  for  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  User  extends  Managed_DataObject  
						 
					
						
							
								
									
										
										
										
											2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-03-28 15:13:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  SUBSCRIBE_POLICY_OPEN  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  SUBSCRIBE_POLICY_MODERATE  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ###START_AUTOCODE
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* the code below is auto generated do not remove the above tag */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $__table  =  'user' ;                             // table name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $id ;                               // int(4)  primary_key not_null
 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 12:28:44 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $nickname ;                         // varchar(64)  unique_key
 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 18:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $password ;                         // varchar(191)               not 255 because utf8mb4 takes more space
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $email ;                            // varchar(191)  unique_key   not 255 because utf8mb4 takes more space
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $incomingemail ;                    // varchar(191)  unique_key   not 255 because utf8mb4 takes more space
 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-15 18:20:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailnotifysub ;                   // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-08 14:16:24 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailnotifyfav ;                   // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-20 15:54:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailnotifynudge ;                 // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-17 13:47:41 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailnotifymsg ;                   // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-16 18:24:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailnotifyattn ;                  // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $language ;                         // varchar(50)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $timezone ;                         // varchar(50)
 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-21 09:56:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $emailpost ;                        // tinyint(1)   default_1
 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 11:50:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $sms ;                              // varchar(64)  unique_key
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $carrier ;                          // int(4)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $smsnotify ;                        // tinyint(1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $smsreplies ;                       // tinyint(1)
 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 18:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $smsemail ;                         // varchar(191)               not 255 because utf8mb4 takes more space
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $uri ;                              // varchar(191)  unique_key   not 255 because utf8mb4 takes more space
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $autosubscribe ;                    // tinyint(1)
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-28 15:13:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $subscribe_policy ;                 // tinyint(1)
 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-20 15:54:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $urlshorteningservice ;             // varchar(50)   default_ur1.ca
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-30 08:16:30 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $private_stream ;                   // tinyint(1)   default_0
 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-25 00:43:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  $created ;                          // datetime()   not_null default_0000-00-00%2000%3A00%3A00
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  $modified ;                         // datetime()   not_null default_CURRENT_TIMESTAMP
 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* the code above is auto generated do not remove the tag below */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ###END_AUTOCODE
 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-20 15:14:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  function  schemaDef () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'description'  =>  'local users' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'fields'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'id'  =>  array ( 'type'  =>  'int' ,  'not null'  =>  true ,  'description'  =>  'foreign key to profile table' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'nickname'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  64 ,  'description'  =>  'nickname or username, duped in profile' ), 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 18:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'password'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  191 ,  'description'  =>  'salted password, can be null for OpenID users' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'email'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  191 ,  'description'  =>  'email address for password recovery etc.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'incomingemail'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  191 ,  'description'  =>  'email address for post-by-email' ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'emailnotifysub'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  1 ,  'description'  =>  'Notify by email of subscriptions' ), 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-13 17:13:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'emailnotifyfav'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  null ,  'description'  =>  'Notify by email of favorites' ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'emailnotifynudge'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  1 ,  'description'  =>  'Notify by email of nudges' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'emailnotifymsg'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  1 ,  'description'  =>  'Notify by email of direct messages' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'emailnotifyattn'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  1 ,  'description'  =>  'Notify by email of @-replies' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'language'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  50 ,  'description'  =>  'preferred language' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'timezone'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  50 ,  'description'  =>  'timezone' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'emailpost'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  1 ,  'description'  =>  'Post by email' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'sms'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  64 ,  'description'  =>  'sms phone number' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'carrier'  =>  array ( 'type'  =>  'int' ,  'description'  =>  'foreign key to sms_carrier' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'smsnotify'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  0 ,  'description'  =>  'whether to send notices to SMS' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'smsreplies'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  0 ,  'description'  =>  'whether to send notices to SMS on replies' ), 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 18:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'smsemail'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  191 ,  'description'  =>  'built from sms and carrier' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'uri'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  191 ,  'description'  =>  'universally unique identifier, usually a tag URI' ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'autosubscribe'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  0 ,  'description'  =>  'automatically subscribe to users who subscribe to us' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'subscribe_policy'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  0 ,  'description'  =>  '0 = anybody can subscribe; 1 = require approval' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'urlshorteningservice'  =>  array ( 'type'  =>  'varchar' ,  'length'  =>  50 ,  'default'  =>  'internal' ,  'description'  =>  'service to use for auto-shortening URLs' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'private_stream'  =>  array ( 'type'  =>  'int' ,  'size'  =>  'tiny' ,  'default'  =>  0 ,  'description'  =>  'whether to limit all notices to followers only' ), 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-25 00:43:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                'created'  =>  array ( 'type'  =>  'datetime' ,  'not null'  =>  true ,  'default'  =>  '0000-00-00 00:00:00' ,  'description'  =>  'date this record was created' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'modified'  =>  array ( 'type'  =>  'datetime' ,  'not null'  =>  true ,  'default'  =>  'CURRENT_TIMESTAMP' ,  'description'  =>  'date this record was modified' ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 17:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'primary key'  =>  array ( 'id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'unique keys'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_nickname_key'  =>  array ( 'nickname' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_email_key'  =>  array ( 'email' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_incomingemail_key'  =>  array ( 'incomingemail' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_sms_key'  =>  array ( 'sms' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_uri_key'  =>  array ( 'uri' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'foreign keys'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_id_fkey'  =>  array ( 'profile' ,  array ( 'id'  =>  'id' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_carrier_fkey'  =>  array ( 'sms_carrier' ,  array ( 'carrier'  =>  'id' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'indexes'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'user_smsemail_idx'  =>  array ( 'smsemail' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-06 00:19:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  $_profile  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-07 16:55:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-21 14:35:29 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  Profile 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 01:00:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws  UserNoProfileException  if  user  has  no  profile 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-21 14:35:29 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 01:00:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getProfile () 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-06 00:19:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! isset ( $this -> _profile [ $this -> id ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-06 00:32:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile  =  Profile :: getKV ( 'id' ,  $this -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! $profile  instanceof  Profile )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  UserNoProfileException ( $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> _profile [ $this -> id ]  =  $profile ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 08:35:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-06 00:19:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> _profile [ $this -> id ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-07 16:55:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 12:19:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  sameAs ( Profile  $other ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> sameAs ( $other ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-28 14:08:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getUri () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> uri ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 16:08:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getNickname () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getNickname (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 12:59:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  function  getByNickname ( $nickname ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 00:08:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user  =  User :: getKV ( 'nickname' ,  $nickname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $user  instanceof  User )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  NoSuchUserException ( array ( 'nickname'  =>  $nickname )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-05 13:44:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  isSubscribed ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isSubscribed ( $other ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-29 20:37:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  hasPendingSubscription ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-28 16:12:51 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> hasPendingSubscription ( $other ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-28 16:12:51 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 11:01:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  the  most  recent  notice  posted  by  this  user ,  if  any . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  mixed  Notice  or  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  getCurrentNotice () 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getCurrentNotice (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getCarrier () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  Sms_carrier :: getKV ( 'id' ,  $this -> carrier ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 00:04:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  hasBlocked ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> hasBlocked ( $other ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-07 22:10:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 18:27:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Register  a  new  user  account  and  profile  and  set  up  default  subscriptions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  a  new - user  welcome  message  is  configured ,  this  will  be  sent . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  array  $fields  associative  array  of  optional  properties 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'bio' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'email' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               bool  'email_confirmed'  pass  true  to  mark  email  as  pre - confirmed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'fullname' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'homepage' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'location'  informal  string  description  of  geolocation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               float  'lat'  decimal  latitude  for  geolocation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               float  'lon'  decimal  longitude  for  geolocation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               int  'location_id'  geoname  identifier 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               int  'location_ns'  geoname  namespace  to  interpret  location_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'nickname'  REQUIRED 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'password'  ( may  be  missing  for  eg  OpenID  registrations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               string  'code'  invite  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *               ? string  'uri'  permalink  to  notice ;  defaults  to  local  notice  URL 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ return   User  object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws   Exception  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 18:27:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-16 17:20:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  function  register ( array  $fields ,  $accept_email_fail = false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:20:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // MAGICALLY put fields into current scope
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        extract ( $fields ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $profile  =  new  Profile (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:20:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $email ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-12 20:12:00 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $email  =  common_canonical_email ( $email ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Normalize _and_ check whether it is in use. Throw NicknameException on failure.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $profile -> nickname  =  Nickname :: normalize ( $nickname ,  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $profile -> profileurl  =  common_profile_url ( $profile -> nickname ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-17 23:22:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $fullname ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> fullname  =  $fullname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-17 23:22:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $homepage ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> homepage  =  $homepage ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-17 23:22:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $bio ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> bio  =  $bio ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-17 23:22:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $location ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> location  =  $location ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-23 11:46:44 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $loc  =  Location :: fromName ( $location ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! empty ( $loc ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile -> lat          =  $loc -> lat ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile -> lon          =  $loc -> lon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile -> location_id  =  $loc -> location_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile -> location_ns  =  $loc -> location_ns ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $profile -> created  =  common_sql_now (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $user  =  new  User (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $user -> nickname  =  $profile -> nickname ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-23 17:25:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $invite  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Users who respond to invite email have proven their ownership of that address
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-17 23:22:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! empty ( $code ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $invite  =  Invitation :: getKV ( $code ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-18 13:06:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $invite  instanceof  Invitation  &&  $invite -> address  &&  $invite -> address_type  ==  'email'  &&  $invite -> address  ==  $email )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $user -> email  =  $invite -> address ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-12 20:12:00 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( isset ( $email_confirmed )  &&  $email_confirmed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $user -> email  =  $email ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-09-20 17:37:21 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Set default-on options here, otherwise they'll be disabled
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // initially for sites using caching, since the initial encache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // doesn't know about the defaults in the database.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> emailnotifysub  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> emailnotifynudge  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> emailnotifymsg  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> emailnotifyattn  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> emailpost  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $user -> created  =  common_sql_now (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-14 18:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( Event :: handle ( 'StartUserRegister' ,  array ( $profile )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 09:06:07 -10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> query ( 'BEGIN' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 09:06:07 -10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $id  =  $profile -> insert (); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-19 14:35:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $id  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                common_log_db_error ( $profile ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $profile -> query ( 'ROLLBACK' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // TRANS: Profile data could not be inserted for some reason.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  ServerException ( _m ( 'Could not insert profile data for new user.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 09:42:25 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Necessary because id has been known to be reissued.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $profile -> hasRole ( Profile_role :: DELETED ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            	$profile -> revokeRole ( Profile_role :: DELETED ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 09:06:07 -10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $user -> id  =  $id ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-22 12:08:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! empty ( $uri ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $user -> uri  =  $uri ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $user -> uri  =  common_user_uri ( $user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 00:47:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $password ))  {  // may not have a password for OpenID users
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 01:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $user -> password  =  common_munge_password ( $password ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 00:47:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-30 09:06:07 -10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $result  =  $user -> insert (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:20:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-19 14:35:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( $result  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                common_log_db_error ( $user ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $profile -> query ( 'ROLLBACK' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // TRANS: User data could not be inserted for some reason.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  ServerException ( _m ( 'Could not insert user data for new user.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Everyone is subscribed to themself
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $subscription  =  new  Subscription (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $subscription -> subscriber  =  $user -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $subscription -> subscribed  =  $user -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $subscription -> created  =  $user -> created ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $result  =  $subscription -> insert (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! $result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                common_log_db_error ( $subscription ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $profile -> query ( 'ROLLBACK' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // TRANS: Subscription data could not be inserted for some reason.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  ServerException ( _m ( 'Could not insert subscription data for new user.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-23 17:25:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Mark that this invite was converted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! empty ( $invite ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $invite -> convert ( $user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $email )  &&  empty ( $user -> email ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // The actual email will be sent further down, after the database COMMIT
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm  =  new  Confirm_address (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm -> code  =  common_confirmation_code ( 128 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm -> user_id  =  $user -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm -> address  =  $email ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm -> address_type  =  'email' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $result  =  $confirm -> insert (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( $result === false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    common_log_db_error ( $confirm ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-16 13:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $profile -> query ( 'ROLLBACK' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    // TRANS: Email confirmation data could not be inserted for some reason.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  ServerException ( _m ( 'Could not insert email confirmation data for new user.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $code )  &&  $user -> email )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $user -> emailChanged (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Default system subscription
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $defnick  =  common_config ( 'newuser' ,  'default' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:20:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $defnick ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $defuser  =  User :: getKV ( 'nickname' ,  $defnick ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( empty ( $defuser ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    common_log ( LOG_WARNING ,  sprintf ( " Default user %s does not exist. " ,  $defnick ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                               __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-04 11:38:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    Subscription :: ensureStart ( $profile ,  $defuser -> getProfile ()); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-25 18:08:21 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $profile -> query ( 'COMMIT' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $email )  &&  empty ( $user -> email ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-16 17:20:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-06 17:27:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $confirm -> sendConfirmation (); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-16 17:20:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  catch  ( EmailException  $e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    common_log ( LOG_ERR ,  " Could not send user registration email for user id== { $profile -> getID () } :  { $e -> getMessage () } " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-16 17:20:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ! $accept_email_fail )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        throw  $e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Welcome message
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $welcome  =  common_config ( 'newuser' ,  'welcome' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! empty ( $welcome ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $welcomeuser  =  User :: getKV ( 'nickname' ,  $welcome ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( empty ( $welcomeuser ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    common_log ( LOG_WARNING ,  sprintf ( " Welcome user %s does not exist. " ,  $defnick ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                               __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $notice  =  Notice :: saveNew ( $welcomeuser -> id , 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:36:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                              // TRANS: Notice given on user registration.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                              // TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                              sprintf ( _ ( 'Welcome to %1$s, @%2$s!' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                      common_config ( 'site' ,  'name' ), 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                                      $profile -> getNickname ()), 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                              'system' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 17:54:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-14 18:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            Event :: handle ( 'EndUserRegister' ,  array ( $profile )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:36:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! $user  instanceof  User  ||  empty ( $user -> id ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 12:36:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  ServerException ( 'User could not be registered. Probably an event hook that failed.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-25 14:41:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Things we do when the email changes
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  emailChanged () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $invites  =  new  Invitation (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $invites -> address  =  $this -> email ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $invites -> address_type  =  'email' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $invites -> find ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( $invites -> fetch ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-19 17:20:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $other  =  Profile :: getByID ( $invites -> user_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-19 17:20:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    Subscription :: start ( $other ,  $this -> getProfile ()); 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  catch  ( NoResultException  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // profile did not exist
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  catch  ( AlreadyFulfilledException  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // already subscribed to this profile
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-19 17:20:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                }  catch  ( Exception  $e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    common_log ( LOG_ERR ,  'On-invitation-completion subscription failed when subscribing ' . _ve ( $invites -> user_id ) . ' to ' . $this -> getProfile () -> getID () . ': ' . _ve ( $e -> getMessage ())); 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-19 17:20:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 20:19:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-29 20:37:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  mutuallySubscribed ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> mutuallySubscribed ( $other ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  mutuallySubscribedUsers () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 3-way join; probably should get cached
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $UT  =  common_config ( 'db' , 'type' ) == 'pgsql' ? '"user"' : 'user' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-26 21:10:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $qry  =  " SELECT  $UT .*  "  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          " FROM subscription sub1 JOIN  $UT  ON sub1.subscribed =  $UT .id  "  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          " JOIN subscription sub2 ON  $UT .id = sub2.subscriber  "  . 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          'WHERE sub1.subscriber = %d and sub2.subscribed = %d '  . 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-26 21:10:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          " ORDER BY  $UT .nickname " ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $user  =  new  User (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user -> query ( sprintf ( $qry ,  $this -> id ,  $this -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 11:54:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getReplies ( $offset = 0 ,  $limit = NOTICES_PER_PAGE ,  $since_id = 0 ,  $before_id = 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 00:08:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getReplies ( $offset ,  $limit ,  $since_id ,  $before_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 11:54:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getTaggedNotices ( $tag ,  $offset = 0 ,  $limit = NOTICES_PER_PAGE ,  $since_id = 0 ,  $before_id = 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getTaggedNotices ( $tag ,  $offset ,  $limit ,  $since_id ,  $before_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-18 17:18:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 11:54:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getNotices ( $offset = 0 ,  $limit = NOTICES_PER_PAGE ,  $since_id = 0 ,  $before_id = 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getNotices ( $offset ,  $limit ,  $since_id ,  $before_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:19:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 11:34:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-09 21:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  block ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Add a new block record
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-03 17:06:58 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // no blocking (and thus unsubbing from) yourself
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $this -> id  ==  $other -> id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log ( LOG_WARNING , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                sprintf ( 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-19 21:09:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    " Profile ID %d (%s) tried to block themself. " , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 15:20:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $this -> id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $this -> nickname 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-03 17:06:58 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $block  =  new  Profile_block (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Begin a transaction
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> query ( 'BEGIN' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> blocker  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> blocked  =  $other -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $result  =  $block -> insert (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log_db_error ( $block ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-10 17:52:40 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $self  =  $this -> getProfile (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( Subscription :: exists ( $other ,  $self ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Subscription :: cancel ( $other ,  $self ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-20 15:57:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( Subscription :: exists ( $self ,  $other ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Subscription :: cancel ( $self ,  $other ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> query ( 'COMMIT' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-09 23:08:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  unblock ( Profile  $other ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-23 14:33:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 17:42:45 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Get the block record
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-09 23:08:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $block  =  Profile_block :: exists ( $this -> getProfile (),  $other ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-08 13:57:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $block )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $result  =  $block -> delete (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log_db_error ( $block ,  'DELETE' ,  __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-01 11:55:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  isMember ( User_group  $group ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 02:22:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isMember ( $group ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 02:22:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-01 11:55:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  isAdmin ( User_group  $group ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 02:22:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isAdmin ( $group ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 02:22:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 12:19:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 13:00:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getGroups ( $offset = 0 ,  $limit = null ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 12:19:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getGroups ( $offset ,  $limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 13:00:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-21 14:35:29 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Request  to  join  the  given  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  May  throw  exceptions  on  failure . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  User_group  $group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  Group_member 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  joinGroup ( User_group  $group ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> joinGroup ( $group ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-21 14:35:29 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Leave  a  group  that  this  user  is  a  member  of . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  User_group  $group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  leaveGroup ( User_group  $group ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> leaveGroup ( $group ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-21 14:35:29 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-21 18:26:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  getSubscribed ( $offset = 0 ,  $limit = null ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 13:00:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getSubscribed ( $offset ,  $limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 13:00:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  getSubscribers ( $offset = 0 ,  $limit = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getSubscribers ( $offset ,  $limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 12:19:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 22:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  getTaggedSubscribers ( $tag ,  $offset = 0 ,  $limit = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:00:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getTaggedSubscribers ( $tag ,  $offset ,  $limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 22:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  getTaggedSubscriptions ( $tag ,  $offset = 0 ,  $limit = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:00:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getTaggedSubscriptions ( $tag ,  $offset ,  $limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 22:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-05 11:46:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-15 15:28:11 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  hasRight ( $right ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> hasRight ( $right ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-15 15:28:11 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-29 10:20:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  delete ( $useWhere = false ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-17 01:16:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( empty ( $this -> id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log ( LOG_WARNING ,  " Ambiguous User->delete(); skipping related tables. " ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-29 10:20:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  parent :: delete ( $useWhere ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-17 01:16:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-28 11:58:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-18 02:16:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! $this -> hasRole ( Profile_role :: DELETED ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile  =  $this -> getProfile (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $profile -> delete (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-28 11:58:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  catch  ( UserNoProfileException  $unp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log ( LOG_INFO ,  " User  { $this -> nickname }  has no profile; continuing deletion. " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-28 13:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $related  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         'Confirm_address' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         'Remember_me' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         'Foreign_link' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         'Invitation' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-28 11:58:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-08 14:33:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Event :: handle ( 'UserDeleteRelated' ,  array ( $this ,  & $related )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $related  as  $cls )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $inst  =  new  $cls (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $inst -> user_id  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $inst -> delete (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> _deleteTags (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-02 15:29:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> _deleteBlocks (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-29 10:20:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  parent :: delete ( $useWhere ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 13:06:38 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  _deleteTags () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $tag  =  new  Profile_tag (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $tag -> tagger  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $tag -> delete (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  _deleteBlocks () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block  =  new  Profile_block (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> blocker  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $block -> delete (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // XXX delete group block? Reset blocker?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-15 15:59:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-16 15:52:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  hasRole ( $name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> hasRole ( $name ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-16 15:52:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  grantRole ( $name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> grantRole ( $name ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-16 15:52:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  revokeRole ( $name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> revokeRole ( $name ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-16 15:52:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-15 15:59:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  isSandboxed () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isSandboxed (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-15 15:59:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  isSilenced () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 02:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isSilenced (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-15 15:59:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 15:35:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-03 11:41:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  receivesEmailNotifications () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // We could do this in one large if statement, but that's not as easy to read
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Don't send notifications if we don't know the user's email address or it is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // explicitly undesired by the user's own settings.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( empty ( $this -> email )  ||  ! $this -> emailnotifyattn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Don't send notifications to a user who is sandboxed or silenced
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $this -> isSandboxed ()  ||  $this -> isSilenced ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 15:35:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  repeatedByMe ( $offset = 0 ,  $limit = 20 ,  $since_id = null ,  $max_id = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 14:51:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // FIXME: Use another way to get Profile::current() since we
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // want to avoid confusion between session user and queue processing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $stream  =  new  RepeatedByMeNoticeStream ( $this -> getProfile (),  Profile :: current ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-23 11:29:55 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $stream -> getNotices ( $offset ,  $limit ,  $since_id ,  $max_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 15:35:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 16:00:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  repeatsOfMe ( $offset = 0 ,  $limit = 20 ,  $since_id = null ,  $max_id = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 14:51:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // FIXME: Use another way to get Profile::current() since we
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // want to avoid confusion between session user and queue processing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $stream  =  new  RepeatsOfMeNoticeStream ( $this -> getProfile (),  Profile :: current ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-23 11:29:55 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $stream -> getNotices ( $offset ,  $limit ,  $since_id ,  $max_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 16:00:27 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-17 16:45:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  repeatedToMe ( $offset = 0 ,  $limit = 20 ,  $since_id = null ,  $max_id = null ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 16:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-17 16:45:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> repeatedToMe ( $offset ,  $limit ,  $since_id ,  $max_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-12 16:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-28 14:21:07 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  function  siteOwner () 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 15:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $owner  =  self :: cacheGet ( 'user:site_owner' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $owner  ===  false )  {  // cache miss
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $pr  =  new  Profile_role (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $pr -> role  =  Profile_role :: OWNER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $pr -> orderBy ( 'created' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:55:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $pr -> limit ( 1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 15:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! $pr -> find ( true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  NoResultException ( $pr ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 15:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $owner  =  User :: getKV ( 'id' ,  $pr -> profile_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 15:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            self :: cacheSet ( 'user:site_owner' ,  $owner ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $owner  instanceof  User )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $owner ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 17:13:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        throw  new  ServerException ( _ ( 'No site owner configured.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-29 15:15:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 14:34:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Pull  the  primary  site  account  to  use  in  single - user  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  a  valid  user  nickname  is  listed  in  'singleuser' : 'nickname' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  in  the  config ,  this  will  be  used ;  otherwise  the  site  owner 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  account  is  taken  by  default . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  User 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws  ServerException  if  no  valid  single  user  account  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws  ServerException  if  called  when  not  in  single - user  mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  static  function  singleUser () 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 14:34:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! common_config ( 'singleuser' ,  'enabled' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-21 01:12:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // TRANS: Server exception.
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 14:34:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  ServerException ( _ ( 'Single-user mode code called when not enabled.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-30 22:42:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $nickname  =  common_config ( 'singleuser' ,  'nickname' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $user  =  User :: getKV ( 'nickname' ,  $nickname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $user  instanceof  User )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If there was no nickname or no user by that nickname,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // try the site owner. Throws exception if not configured.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  User :: siteOwner (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 14:34:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 10:56:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-06 12:39:09 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  This  is  kind  of  a  hack  for  using  external  setup  code  that ' s  trying  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  build  single - user  sites . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Will  still  return  a  username  if  the  config  singleuser / nickname  is  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  even  if  the  account  doesn ' t  exist ,  which  normally  indicates  that  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  site  is  horribly  misconfigured . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  At  the  moment ,  we  need  to  let  it  through  so  that  router  setup  can 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  complete ,  otherwise  we  won ' t  be  able  to  create  the  account . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  This  will  be  easier  when  we  can  more  easily  create  the  account  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  * then *  switch  the  site  to  1 user  mode  without  jumping  through  hoops . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws  ServerException  if  no  valid  single  user  account  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws  ServerException  if  called  when  not  in  single - user  mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  function  singleUserNickname () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $user  =  User :: singleUser (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $user -> nickname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  catch  ( Exception  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( common_config ( 'singleuser' ,  'enabled' )  &&  common_config ( 'singleuser' ,  'nickname' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-27 12:42:09 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                common_log ( LOG_WARNING ,  " Warning: code attempting to pull single-user nickname when the account does not exist. If this is not setup time, this is probably a bug. " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-06 12:39:09 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  common_config ( 'singleuser' ,  'nickname' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  $e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-06 12:44:19 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 10:56:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Find  and  shorten  links  in  the  given  text  using  this  user ' s  URL  shortening 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  settings . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  By  default ,  links  will  be  left  untouched  if  the  text  is  shorter  than  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  configured  maximum  notice  length .  Pass  true  for  the  $always  parameter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  to  force  all  links  to  be  shortened  regardless . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Side  effects :  may  save  file  and  file_redirection  records  for  referenced  URLs . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  string  $text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  boolean  $always 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  shortenLinks ( $text ,  $always = false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  common_shorten_links ( $text ,  $always ,  $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-12 17:37:42 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 15:52:18 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Get  a  list  of  OAuth  client  applications  that  have  access  to  this 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-12 17:37:42 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  user ' s  account . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  getConnectedApps ( $offset  =  0 ,  $limit  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $qry  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'SELECT u.* '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'FROM oauth_application_user u, oauth_application a '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'WHERE u.profile_id = %d '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'AND a.id = u.application_id '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'AND u.access_type > 0 '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          'ORDER BY u.created DESC ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $offset  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( common_config ( 'db' , 'type' )  ==  'pgsql' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $qry  .=  ' LIMIT '  .  $limit  .  ' OFFSET '  .  $offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $qry  .=  ' LIMIT '  .  $offset  .  ', '  .  $limit ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $apps  =  new  Oauth_application_user (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cnt  =  $apps -> query ( sprintf ( $qry ,  $this -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $apps ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-18 18:23:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Magic  function  called  at  serialize ()  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  We  use  this  to  drop  a  couple  process - specific  references 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  from  DB_DataObject  which  can  cause  trouble  in  future 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  processes . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  array  of  variable  names  to  include  in  serialization . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  __sleep () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $vars  =  parent :: __sleep (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $skip  =  array ( '_profile' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  array_diff ( $vars ,  $skip ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  function  recoverPassword ( $nore ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 14:35:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        require_once ( INSTALLDIR  .  '/lib/mail.php' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // $confirm_email will be used as a fallback if our user doesn't have a confirmed email
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $confirm_email  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( common_is_email ( $nore ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $user  =  User :: getKV ( 'email' ,  common_canonical_email ( $nore )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // See if it's an unconfirmed email address
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! $user  instanceof  User )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Warning: it may actually be legit to have multiple folks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // who have claimed, but not yet confirmed, the same address.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // We'll only send to the first one that comes up.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm_email  =  new  Confirm_address (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm_email -> address  =  common_canonical_email ( $nore ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $confirm_email -> address_type  =  'email' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( $confirm_email -> find ( true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $user  =  User :: getKV ( 'id' ,  $confirm_email -> user_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // No luck finding anyone by that email address.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! $user  instanceof  User )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:29:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( common_config ( 'site' ,  'fakeaddressrecovery' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Return without actually doing anything! We fake address recovery
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // to avoid revealing which email addresses are registered with the site.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // TRANS: Information on password recovery form if no known e-mail address was specified.
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                throw  new  ClientException ( _ ( 'No user with that email address exists here.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // This might throw a NicknameException on bad nicknames
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $user  =  User :: getKV ( 'nickname' ,  common_canonical_nickname ( $nore )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! $user  instanceof  User )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:29:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // TRANS: Information on password recovery form if no known username was specified.
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                throw  new  ClientException ( _ ( 'No user with that nickname exists here.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Try to get an unconfirmed email address if they used a user name
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( empty ( $user -> email )  &&  $confirm_email  ===  null )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $confirm_email  =  new  Confirm_address (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $confirm_email -> user_id  =  $user -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $confirm_email -> address_type  =  'email' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $confirm_email -> find (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! $confirm_email -> fetch ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // Nothing found, so let's reset it to null
 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $confirm_email  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( empty ( $user -> email )  &&  ! $confirm_email  instanceof  Confirm_address )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // TRANS: Client error displayed on password recovery form if a user does not have a registered e-mail address.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  ClientException ( _ ( 'No registered email address for that user.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Success! We have a valid user and a confirmed or unconfirmed email address
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $confirm  =  new  Confirm_address (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $confirm -> code  =  common_confirmation_code ( 128 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $confirm -> address_type  =  'recover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $confirm -> user_id  =  $user -> id ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-30 23:18:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $confirm -> address  =  $user -> email  ? :  $confirm_email -> address ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-07 11:22:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $confirm -> insert ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            common_log_db_error ( $confirm ,  'INSERT' ,  __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // TRANS: Server error displayed if e-mail address confirmation fails in the database on the password recovery form.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  ServerException ( _ ( 'Error saving address confirmation.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         // @todo FIXME: needs i18n.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  =  " Hey,  $user->nickname . " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  'Someone just asked for a new password '  . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 'for this account on '  .  common_config ( 'site' ,  'name' )  .  '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  'If it was you, and you want to confirm, use the URL below:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \t " . common_local_url ( 'recoverpassword' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                   array ( 'code'  =>  $confirm -> code )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  'If not, just ignore this message.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  'Thanks for your time, ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  common_config ( 'site' ,  'name' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $body  .=  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $headers  =  _mail_prepare_headers ( 'recoverpassword' ,  $user -> nickname ,  $user -> nickname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // TRANS: Subject for password recovery e-mail.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mail_to_user ( $user ,  _ ( 'Password recovery requested' ),  $body ,  $headers ,  $confirm -> address ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-23 17:50:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 07:12:34 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function  streamModeOnly () 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-23 17:50:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( common_config ( 'oldschool' ,  'enabled' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $osp  =  Old_school_prefs :: getKV ( 'user_id' ,  $this -> id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $osp ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  $osp -> stream_mode_only ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 07:12:34 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 07:12:34 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  streamNicknames () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( common_config ( 'oldschool' ,  'enabled' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-18 13:04:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $osp  =  Old_school_prefs :: getKV ( 'user_id' ,  $this -> id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! empty ( $osp ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  $osp -> stream_nicknames ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-23 17:50:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-24 09:46:13 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-23 17:50:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  registrationActivity () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $profile  =  $this -> getProfile (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $service  =  new  ActivityObject (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-04 16:30:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $service -> type   =  ActivityObject :: SERVICE ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-04 15:20:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $service -> title  =  common_config ( 'site' ,  'name' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $service -> link   =  common_root_url (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $service -> id     =  $service -> link ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $act  =  new  Activity (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-02 18:50:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $act -> actor  =  $profile -> asActivityObject (); 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $act -> verb  =  ActivityVerb :: JOIN ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-03 08:55:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $act -> objects []  =  $service ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $act -> id  =  TagURI :: mint ( 'user:register:%d' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $this -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $act -> time  =  strtotime ( $this -> created ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $act -> title  =  _ ( " Register " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $act -> content  =  sprintf ( _ ( '%1$s joined %2$s.' ), 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-04 16:30:40 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                $profile -> getBestName (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $service -> title ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-02 14:38:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $act ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-13 16:30:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-24 22:59:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  isPrivateStream () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> isPrivateStream (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 01:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  hasPassword () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ! empty ( $this -> password ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-30 17:44:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  setPassword ( $password ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $orig  =  clone ( $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> password  =  common_munge_password ( $password ,  $this -> getProfile ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-30 17:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $this -> validate ()  !==  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // TRANS: Form validation error on page where to change password.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  ServerException ( _ ( 'Error saving user; invalid.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-30 17:44:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! $this -> update ( $orig ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-30 17:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            common_log_db_error ( $this ,  'UPDATE' ,  __FILE__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // TRANS: Server error displayed on page where to change password when password change
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // TRANS: could not be made because of a server error.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  ServerException ( _ ( 'Cannot save new password.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-30 17:44:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-21 22:59:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  delPref ( $namespace ,  $topic ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> delPref ( $namespace ,  $topic ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-13 16:30:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getPref ( $namespace ,  $topic ,  $default = null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getPref ( $namespace ,  $topic ,  $default ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-03 22:04:29 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getConfigPref ( $namespace ,  $topic ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> getConfigPref ( $namespace ,  $topic ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-13 16:30:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  setPref ( $namespace ,  $topic ,  $data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getProfile () -> setPref ( $namespace ,  $topic ,  $data ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-07 13:15:42 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}