| [ Index ] |
|
Code source de eZ Publish 3.9.0 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Sat Feb 24 10:30:04 2007 | par Balluche grâce à PHPXref 0.7 |