2009-10-30 20:19:57 +00:00
< ? php defined ( " SYSPATH " ) or die ( " No direct script access. " );
/**
* Gallery - a web based photo album viewer and editor
2012-02-27 18:04:35 +00:00
* Copyright ( C ) 2000 - 2012 Bharat Mediratta
2009-10-30 20:19:57 +00:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or ( at
* your option ) any later version .
*
* 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
* General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street - Fifth Floor , Boston , MA 02110 - 1301 , USA .
*/
class register_Core {
2009-11-03 22:45:52 +00:00
private static $_states ;
static function format_registration_state ( $state ) {
2010-01-15 16:58:31 +00:00
if ( empty ( self :: $_states )) {
$policy = module :: get_var ( " registration " , " policy " );
$email_verification = module :: get_var ( " registration " , " email_verification " );
$pending = $policy == " admin_only " || ( $policy == " admin_approval " && ! $email_verification );
self :: $_states = array ( t ( " Unconfirmed " ),
$pending ? t ( " Pending " ) : t ( " Confirmed " ),
t ( " Activated " ));
2009-11-03 22:45:52 +00:00
}
return self :: $_states [ $state ];
}
static function check_user_name ( $user_name ) {
if ( identity :: lookup_user_by_name ( $user_name )) {
return true ;
}
$user = ORM :: factory ( " pending_user " )
2009-12-23 05:31:03 +00:00
-> where ( " name " , " = " , $user_name )
2009-11-03 22:45:52 +00:00
-> find ();
2009-12-23 05:31:03 +00:00
return $user -> loaded ();
2009-11-03 22:45:52 +00:00
}
2010-01-15 16:58:31 +00:00
static function send_user_created_confirmation ( $user , $requires_first = false ) {
2009-10-30 20:19:57 +00:00
$message = new View ( " register_welcome.html " );
$message -> user = $user ;
2010-01-15 16:58:31 +00:00
$message -> site_url = $requires_first ? url :: abs_site ( " register/first/ { $user -> hash } " ) :
url :: abs_site ( " " );
2012-12-12 21:51:42 +00:00
// added Shad Laws, v2
$message -> subject_prefix = module :: get_var ( " registration " , " subject_prefix " );
$message -> locale = $user -> locale ; // as stored in pending_users table
$message -> subject = t ( " Welcome " , array ( " locale " => $message -> locale ));
// modified Shad Laws, v2
self :: _sendemail ( $user -> email , $message -> subject_prefix . $message -> subject , $message );
2009-10-30 20:19:57 +00:00
}
static function send_confirmation ( $user ) {
$message = new View ( " confirm_registration.html " );
$message -> confirm_url = url :: abs_site ( " register/confirm/ { $user -> hash } " );
$message -> user = $user ;
2012-12-12 21:51:42 +00:00
// added Shad Laws, v2
$message -> subject_prefix = module :: get_var ( " registration " , " subject_prefix " );
$message -> locale = $user -> locale ; // as stored in pending_users table
$message -> subject = t ( " User registration confirmation " , array ( " locale " => $message -> locale ));
// modified Shad Laws, v2
self :: _sendemail ( $user -> email , $message -> subject_prefix . $message -> subject , $message );
}
// function added Shad Laws, v2
static function send_admin_notify ( $user ) {
$message = new View ( " register_admin_notify.html " );
$message -> admin_register_url = url :: abs_site ( " admin/register " );
$message -> user = $user ;
$message -> subject_prefix = module :: get_var ( " registration " , " subject_prefix " );
$message -> locale = module :: get_var ( " gallery " , " default_locale " ); // as Gallery default
$message -> subject = t ( " New pending user registration " , array ( " locale " => $message -> locale ));
self :: _sendemail ( module :: get_var ( " gallery " , " email_reply_to " ), $message -> subject_prefix . $message -> subject , $message );
2009-10-30 20:19:57 +00:00
}
static function create_pending_request ( $form ) {
$email_verification = module :: get_var ( " registration " , " email_verification " );
$user = ORM :: factory ( " pending_user " );
$user -> name = $form -> register_user -> inputs [ " name " ] -> value ;
$user -> full_name = $form -> register_user -> inputs [ " full_name " ] -> value ;
$user -> email = $form -> register_user -> inputs [ " email " ] -> value ;
$user -> url = $form -> register_user -> inputs [ " url " ] -> value ;
2009-11-03 22:45:52 +00:00
$user -> request_date = time ();
2012-12-12 21:51:42 +00:00
// added by Shad Laws, v2
$user -> locale = locales :: locale_from_http_request () ? locales :: locale_from_http_request () : module :: get_var ( " gallery " , " default_locale " ); // sets default locale based on browser
2009-11-03 22:45:52 +00:00
2009-10-30 20:19:57 +00:00
if ( ! $email_verification ) {
2009-11-03 22:45:52 +00:00
$user -> state = 1 ;
2009-10-30 20:19:57 +00:00
}
$user -> hash = md5 ( rand ());
$user -> save ();
return $user ;
}
2009-11-03 22:45:52 +00:00
static function create_new_user ( $id ) {
$user = ORM :: factory ( " pending_user " , $id );
2010-02-27 23:44:46 +00:00
$password = md5 ( uniqid ( mt_rand (), true ));
$new_user = identity :: create_user ( $user -> name , $user -> full_name , $password , $user -> email );
2009-11-03 22:45:52 +00:00
$new_user -> url = $user -> url ;
$new_user -> admin = false ;
$new_user -> guest = false ;
$new_user -> save ();
2010-02-27 23:44:46 +00:00
$user -> hash = md5 ( uniqid ( mt_rand (), true ));
2009-11-03 22:45:52 +00:00
$user -> state = 2 ;
$user -> save ();
self :: send_user_created_confirmation ( $user , $password );
return $new_user ;
}
2009-10-30 20:19:57 +00:00
private static function _sendemail ( $email , $subject , $message ) {
Sendmail :: factory ()
-> to ( $email )
-> subject ( $subject )
-> header ( " Mime-Version " , " 1.0 " )
2012-12-12 21:51:42 +00:00
// modified by Shad Laws, v2
-> header ( " Content-type " , " text/html; charset=utf-8 " )
2009-10-30 20:19:57 +00:00
-> message ( $message -> render ())
-> send ();
}
}