Forums / Developer / Adding multiple Users

Adding multiple Users

Author Message

Norman Leutner

Monday 16 August 2004 8:20:59 am

Hello,

for your intranet I need to add about 470 Users to our ez 3.1 system.
Because this is too much to add them manual, I`m planning to write a php-script to add them.

I`ve taken a look onto the database while adding a user an found out that the
ezPublish system inserts 15 records into 10 different tables for one Standard User.

Are there any functions within the ezSystem which i can use for my script
or will i have to script each dynamic SQLstatement by myself?

Thanks in advance

Norman Leutner

Mit freundlichen Grüßen
Best regards

Norman Leutner

____________________________________________________________
eZ Publish Platinum Partner - http://www.all2e.com
http://ez.no/partners/worldwide_partners/all2e_gmbh

Ole Morten Halvorsen

Tuesday 17 August 2004 1:33:23 am

Hi Norman,

You do not have to write any SQL statements at all. Have a look at the small user creation example script below:

<?php

include_once( 'kerxnel/classes/ezcontentobject.php' );
include_once( 'lib/ezlocale/classes/ezdatetime.php' );

$firstName = "Average";
$lastName = "Joe";
$email = "[email protected]";

$userClassID = 4;
$class =& eZContentClass::fetch( $userClassID );
$creatorID = 14; // 14 == admin
$groupNodeID = 5;
$contentObject =& $class->instantiate( $creatorID, 1 );

$nodeAssignment =& eZNodeAssignment::create( array(
                                                 'contentobject_id' => $contentObject->attribute( 'id' ),
                                                 'contentobject_version' => $contentObject->attribute( 'current_version' ),
                                                 'parent_node' => $groupNodeID,
                                                 'is_main' => 1
                                                 )
                                             );
$nodeAssignment->store();

$version =& $contentObject->version( 1 );
$version->setAttribute( 'modified', eZDateTime::currentTimeStamp() );
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );
$version->store();

$contentObjectID = $contentObject->attribute( 'id' );
$contentObjectAttributes =& $version->contentObjectAttributes();

$contentObjectAttributes[0]->setAttribute( 'data_text', $firstName );
$contentObjectAttributes[0]->store();

$contentObjectAttributes[1]->setAttribute( 'data_text', $lastName );
$contentObjectAttributes[1]->store();

$user =& eZUser::create( $contentObjectID );
$password = eZUser::createPassword( 8, $firstName . $lastName . $email );

$hash = $user->createHash( $login, $password, eZUser::site(), eZUser::hashType() );
$user->setAttribute('login', $login );
$user->setAttribute('email', $email);
$user->setAttribute('password_hash', $hash );
$user->setAttribute('password_hash_type', 2 );
$user->store();

include_once( 'lib/ezutils/classes/ezoperationhandler.php' );
$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectID,
                                                                             'version' => 1 ) );
?>

Senior Software Engineer - Vision with Technology

http://www.visionwt.com
http://www.omh.cc
http://www.twitter.com/omh

eZ Certified Developer
http://ez.no/certification/verify/358441
http://ez.no/certification/verify/272578

Norman Leutner

Tuesday 17 August 2004 7:07:08 am

Thanks for the script.

I`ve got the problem left that the publish function does not work and returns:
<b>Cannot execute operation 'publish' in module 'content', no valid dataeZOperationHandler::execute</b>

The script only creates only a draft at the moment.

Here is the script again:

<?php 

include_once( 'kernel/classes/ezcontentobject.php' ); 
include_once( 'lib/ezlocale/classes/ezdatetime.php' ); 
  
// Testuser definition 
$firstName = "Hugo"; 
$lastName = "Heise"; 
$email = "[email protected]"; 
$login= "h-waldmann"; 



echo "creating Account: ".$login." - ".$firstName." ".$lastName." / ".$email."<br>"; 

$userClassID = 4; 
$class =& eZContentClass::fetch( $userClassID ); 

$creatorID = 426; // 426 = N.Leutner 
$groupNodeID = 140; 

$contentObject =& $class->instantiate( $creatorID, 1 ); 
  
// Insert into Table eznode_assignment 
$nodeAssignment =& eZNodeAssignment::create( array( 
                                                 'contentobject_id' => $contentObject->attribute( 'id' ), 
                                                 'contentobject_version' => $contentObject->attribute( 'current_version' ),

                                                 'parent_node' => $groupNodeID, 
                                                 'sort_field' => 9, 
                                                 'is_main' => 1 
                                                 ) 
                                             ); 
$nodeAssignment->store(); 
  

// Insert into Table ezcontentobject_version  
$version =& $contentObject->version( 1 ); 
$version->setAttribute( 'modified', eZDateTime::currentTimeStamp() ); 
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT ); 
$version->store(); 



// Inserts into Table ezcontentobject_attribute 

    // Attribute1 = parent attribute 
    $contentObjectID = $contentObject->attribute( 'id' ); 
    $contentObjectAttributes =& $version->contentObjectAttributes(); 

    // Attribute2 = firstname 
    $contentObjectAttributes[0]->setAttribute( 'data_text', $firstName ); 
    $contentObjectAttributes[0]->store(); 

    // Attribute3 = lastname 
    $contentObjectAttributes[1]->setAttribute( 'data_text', $lastName ); 
    $contentObjectAttributes[1]->store(); 



// Inserts into Table ezuser 

    // Create user by parent attribute ID 
    $user =& eZUser::create( $contentObjectID ); 

    // Create password with 8 Charakters 
    $password = eZUser::createPassword( 8, $firstName . $lastName . $email ); 
    echo "Password lautet: ".$password."<br>"; 
    
    // Create passwordhash 
    $hash = $user->createHash( $login, $password, eZUser::site(), eZUser::hashType() ); 

    // Set attributes 
    $user->setAttribute('login', $login ); 
    $user->setAttribute('email', $email); 
    $user->setAttribute('password_hash', $hash ); 
    $user->setAttribute('password_hash_type', 2 ); 
    $user->store(); 

// Publish user 
// This function returns the error: Cannot execute operation 'publish' in module 'content', 
// no valid dataeZOperationHandler::execute

include_once( 'lib/ezutils/classes/ezoperationhandler.php' ); 
$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectID, 
                                                                             'version' => 1 ) ); 

?> 

Mit freundlichen Grüßen
Best regards

Norman Leutner

____________________________________________________________
eZ Publish Platinum Partner - http://www.all2e.com
http://ez.no/partners/worldwide_partners/all2e_gmbh

Joanie Chembars

Friday 22 April 2005 6:34:38 am

Hi Norman --
Did you get this script to work for you? I need to do the same thing and thought I would check with you before I tried the script.......
Thanks,
Joanie