[ Index ]
 

Code source de eZ Publish 3.9.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/kernel/user/ -> register.php (source)

   1  <?php
   2  //
   3  // Created on: <01-Aug-2002 09:58:09 bf>
   4  //
   5  // SOFTWARE NAME: eZ publish
   6  // SOFTWARE RELEASE: 3.9.0
   7  // BUILD VERSION: 17785
   8  // COPYRIGHT NOTICE: Copyright (C) 1999-2006 eZ systems AS
   9  // SOFTWARE LICENSE: GNU General Public License v2.0
  10  // NOTICE: >
  11  //   This program is free software; you can redistribute it and/or
  12  //   modify it under the terms of version 2.0  of the GNU General
  13  //   Public License as published by the Free Software Foundation.
  14  //
  15  //   This program is distributed in the hope that it will be useful,
  16  //   but WITHOUT ANY WARRANTY; without even the implied warranty of
  17  //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18  //   GNU General Public License for more details.
  19  //
  20  //   You should have received a copy of version 2.0 of the GNU General
  21  //   Public License along with this program; if not, write to the Free
  22  //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  23  //   MA 02110-1301, USA.
  24  //
  25  //
  26  
  27  include_once ( "lib/ezutils/classes/ezhttptool.php" );
  28  include_once ( "kernel/classes/datatypes/ezuser/ezuser.php" );
  29  include_once ( "lib/ezutils/classes/ezmail.php" );
  30  include_once ( "kernel/classes/ezcontentclassattribute.php" );
  31  include_once ( "kernel/classes/ezcontentclass.php" );
  32  
  33  $http =& eZHTTPTool::instance();
  34  $Module =& $Params["Module"];
  35  
  36  if ( isset( $Params['UserParameters'] ) )
  37  {
  38      $UserParameters = $Params['UserParameters'];
  39  }
  40  else
  41  {
  42      $UserParameters = array();
  43  }
  44  $viewParameters = array();
  45  $viewParameters = array_merge( $viewParameters, $UserParameters );
  46  
  47  $Params['TemplateName'] = "design:user/register.tpl";
  48  $EditVersion = 1;
  49  
  50  include_once ( "kernel/common/template.php" );
  51  $tpl =& templateInit();
  52  $tpl->setVariable( 'view_parameters', $viewParameters );
  53  
  54  $Params['TemplateObject'] =& $tpl;
  55  
  56  // $http->removeSessionVariable( "RegisterUserID" );
  57  
  58  // Create new user object if user is not logged in
  59  if ( !$http->hasSessionVariable( "RegisterUserID" ) and !$http->hasPostVariable( "UserID" ) )
  60  {
  61      $ini =& eZINI::instance();
  62      $errMsg = '';
  63      $checkErrNodeId = false;
  64  
  65      $defaultUserPlacement = (int)$ini->variable( "UserSettings", "DefaultUserPlacement" );
  66  
  67      $db =& eZDB::instance();
  68      $sql = "SELECT count(*) as count FROM ezcontentobject_tree WHERE node_id = $defaultUserPlacement";
  69      $rows = $db->arrayQuery( $sql );
  70      $count = $rows[0]['count'];
  71      if ( $count < 1 )
  72      {
  73          $errMsg = ezi18n( 'design/standard/user', 'The node (%1) specified in [UserSettings].DefaultUserPlacement setting in site.ini does not exist!', null, array( $defaultUserPlacement ) );
  74          $checkErrNodeId = true;
  75          eZDebug::writeError( "$errMsg" );
  76          $tpl->setVariable( 'errMsg', $errMsg );
  77          $tpl->setVariable( 'checkErrNodeId', $checkErrNodeId );
  78      }
  79      $userClassID = $ini->variable( "UserSettings", "UserClassID" );
  80      $class = eZContentClass::fetch( $userClassID );
  81  
  82      $userCreatorID = $ini->variable( "UserSettings", "UserCreatorID" );
  83      $defaultSectionID = $ini->variable( "UserSettings", "DefaultSectionID" );
  84      // Create object by user 14 in section 1
  85      $contentObject = $class->instantiate( $userCreatorID, $defaultSectionID );
  86      $objectID = $contentObject->attribute( 'id' );
  87  
  88      // Store the ID in session variable
  89      $http->setSessionVariable( "RegisterUserID", $objectID );
  90  
  91      $userID = $objectID;
  92  
  93      $nodeAssignment = eZNodeAssignment::create( array( 'contentobject_id' => $contentObject->attribute( 'id' ),
  94                                                         'contentobject_version' => 1,
  95                                                         'parent_node' => $defaultUserPlacement,
  96                                                         'is_main' => 1 ) );
  97      $nodeAssignment->store();
  98  }
  99  else if ( $http->hasSessionVariable( "RegisterUserID" ) )
 100  {
 101      $userID = $http->sessionVariable( "RegisterUserID" );
 102  }
 103  else if ( $http->hasPostVariable( "UserID" ) )
 104  {
 105      $userID = $http->postVariable( "UserID" );
 106  }
 107  
 108  $Params['ObjectID'] = $userID;
 109  
 110  $Module->addHook( 'post_publish', 'registerSearchObject', 1, false );
 111  
 112  if ( !function_exists( 'checkContentActions' ) )
 113  {
 114      function checkContentActions( &$module, &$class, &$object, &$version, &$contentObjectAttributes, $EditVersion, $EditLanguage )
 115      {
 116          if ( $module->isCurrentAction( 'Cancel' ) )
 117          {
 118              include_once ( 'kernel/classes/ezredirectmanager.php' );
 119              eZRedirectManager::redirectTo( $module, '/' );
 120  
 121              $EditVersion = (int)$EditVersion;
 122              $objectID = $object->attribute( 'id' );
 123              $versionCount= $object->getVersionCount();
 124              $db =& eZDB::instance();
 125              $db->begin();
 126              $db->query( "DELETE FROM ezcontentobject_link
 127                           WHERE from_contentobject_id=$objectID AND from_contentobject_version=$EditVersion" );
 128              $db->query( "DELETE FROM eznode_assignment
 129                           WHERE contentobject_id=$objectID AND contentobject_version=$EditVersion" );
 130              $version->remove();
 131              foreach ( $contentObjectAttributes as $contentObjectAttribute )
 132              {
 133                  $objectAttributeID = $contentObjectAttribute->attribute( 'id' );
 134                  $version = $contentObjectAttribute->attribute( 'version' );
 135                  if ( $version == $EditVersion )
 136                  {
 137                      $contentObjectAttribute->remove( $objectAttributeID, $version );
 138                  }
 139              }
 140              if ( $versionCount == 1 )
 141              {
 142                  $object->purge();
 143              }
 144              $db->commit();
 145              $http =& eZHTTPTool::instance();
 146              $http->removeSessionVariable( "RegisterUserID" );
 147              return EZ_MODULE_HOOK_STATUS_CANCEL_RUN;
 148          }
 149  
 150          if ( $module->isCurrentAction( 'Publish' ) )
 151          {
 152              $http =& eZHTTPTool::instance();
 153  
 154              $user =& eZUser::currentUser();
 155              include_once ( 'lib/ezutils/classes/ezoperationhandler.php' );
 156              $operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $object->attribute( 'id' ),
 157                                                                                           'version' => $version->attribute( 'version') ) );
 158  
 159              $object = eZContentObject::fetch( $object->attribute( 'id' ) );
 160  
 161              // Check if user should be enabled and logged in
 162              unset($user);
 163              $user = eZUser::fetch( $object->attribute( 'id' ) );
 164              $user->loginCurrent();
 165  
 166              $receiver = $user->attribute( 'email' );
 167              $mail = new eZMail();
 168              if ( !$mail->validate( $receiver ) )
 169              {
 170              }
 171              include_once ( "kernel/common/template.php" );
 172              include_once ( 'lib/ezutils/classes/ezmail.php' );
 173              include_once ( 'lib/ezutils/classes/ezmailtransport.php' );
 174              $ini =& eZINI::instance();
 175              $tpl =& templateInit();
 176              $tpl->setVariable( 'user', $user );
 177              $tpl->setVariable( 'object', $object );
 178              $hostname = eZSys::hostname();
 179              $tpl->setVariable( 'hostname', $hostname );
 180              $password = $http->sessionVariable( "GeneratedPassword" );
 181  
 182              $tpl->setVariable( 'password', $password );
 183  
 184              // Check whether account activation is required.
 185              $verifyUserEmail = $ini->variable( 'UserSettings', 'VerifyUserEmail' );
 186  
 187              if ( $verifyUserEmail == "enabled" ) // and if it is
 188              {
 189                  // Disable user account and send verification mail to the user
 190                  $userSetting = eZUserSetting::fetch( $user->attribute( 'contentobject_id' ) );
 191                  $userSetting->setAttribute( 'is_enabled', 0 );
 192                  $userSetting->store();
 193          
 194                  // Log out current user
 195                  eZUser::logoutCurrent();
 196  
 197                  // Create enable account hash and send it to the newly registered user
 198                  $hash = md5( mktime( ) . $user->attribute( 'contentobject_id' ) );
 199                  include_once ( "kernel/classes/datatypes/ezuser/ezuseraccountkey.php" );
 200                  $accountKey = eZUserAccountKey::createNew( $user->attribute( 'contentobject_id' ), $hash, mktime() );
 201                  $accountKey->store();
 202  
 203                  $tpl->setVariable( 'hash', $hash );
 204              }
 205  
 206              $templateResult =& $tpl->fetch( 'design:user/registrationinfo.tpl' );
 207              $emailSender = $ini->variable( 'MailSettings', 'EmailSender' );
 208              if ( !$emailSender )
 209                  $emailSender = $ini->variable( 'MailSettings', 'AdminEmail' );
 210              $mail->setSender( $emailSender );
 211              $mail->setReceiver( $receiver );
 212              $subject = ezi18n( 'kernel/user/register', 'Registration info' );
 213              if ( $tpl->hasVariable( 'subject' ) )
 214                  $subject = $tpl->variable( 'subject' );
 215              $mail->setSubject( $subject );
 216              $mail->setBody( $templateResult );
 217              $mailResult = eZMailTransport::send( $mail );
 218  
 219              $feedbackTypes = $ini->variableArray( 'UserSettings', 'RegistrationFeedback' );
 220              foreach ( $feedbackTypes as $feedbackType )
 221              {
 222                  switch ( $feedbackType )
 223                  {
 224                      case 'email':
 225                      {
 226                          $mail = new eZMail();
 227                          $tpl->resetVariables();
 228                          $tpl->setVariable( 'user', $user );
 229                          $tpl->setVariable( 'object', $object );
 230                          $tpl->setVariable( 'hostname', $hostname );
 231                          $templateResult =& $tpl->fetch( 'design:user/registrationfeedback.tpl' );
 232  
 233                          $feedbackReceiver = $ini->variable( 'UserSettings', 'RegistrationEmail' );
 234                          if ( !$feedbackReceiver )
 235                              $feedbackReceiver = $ini->variable( "MailSettings", "AdminEmail" );
 236  
 237                          $subject = ezi18n( 'kernel/user/register', 'New user registered' );
 238                          if ( $tpl->hasVariable( 'subject' ) )
 239                              $subject =& $tpl->variable( 'subject' );
 240                          if ( $tpl->hasVariable( 'email_receiver' ) )
 241                              $feedbackReceiver =& $tpl->variable( 'email_receiver' );
 242  
 243                          $mail->setReceiver( $feedbackReceiver );
 244                          $mail->setSubject( $subject );
 245                          $mail->setBody( $templateResult );
 246                          $mailResult = eZMailTransport::send( $mail );
 247                      } break;
 248                      default:
 249                      {
 250                          eZDebug::writeWarning( "Unknown feedback type '$feedbackType'", 'user/register' );
 251                      }
 252                  }
 253              }
 254  
 255  
 256  
 257              $http->removeSessionVariable( "GeneratedPassword" );
 258              $http->removeSessionVariable( "RegisterUserID" );
 259  
 260              // check for redirectionvariable
 261              if ( eZHTTPTool::hasSessionVariable( 'RedirectAfterUserRegister' ) )
 262              {
 263                  $module->redirectTo( eZHTTPTool::sessionVariable( 'RedirectAfterUserRegister' ) );
 264                  eZHTTPTool::removeSessionVariable( 'RedirectAfterUserRegister' );
 265              }
 266              else if ( $http->hasPostVariable( 'RedirectAfterUserRegister' ) )
 267              {
 268                  $module->redirectTo( $http->postVariable( 'RedirectAfterUserRegister' ) );
 269              }
 270              else
 271              {
 272                  $module->redirectTo( '/user/success/' );
 273              }
 274          }
 275      }
 276  }
 277  $Module->addHook( 'action_check', 'checkContentActions' );
 278  
 279  $OmitSectionSetting = true;
 280  
 281  $includeResult = include( 'kernel/content/attribute_edit.php' );
 282  if ( $includeResult != 1 )
 283  {
 284      return $includeResult;
 285  }
 286  $ini =& eZINI::instance();
 287  //eZDebug::writeDebug( $includeResult );
 288  
 289  if ( $ini->variable( 'SiteSettings', 'LoginPage' ) == 'custom' )
 290      $Result['pagelayout'] = 'loginpagelayout.tpl';
 291  $Result['path'] = array( array( 'url' => false,
 292                                  'text' => ezi18n( 'kernel/user', 'User' ) ),
 293                           array( 'url' => false,
 294                                  'text' => ezi18n( 'kernel/user', 'Register' ) ) );
 295  
 296  
 297  ?>


Généré le : Sat Feb 24 10:30:04 2007 par Balluche grâce à PHPXref 0.7