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 = "average.joe@example.com";

$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 = "hugo.heise@hoppecke.com"; 
$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

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 19 2025 13:52:00
Script start
Timing: Jan 19 2025 13:52:00
Module start 'layout'
Timing: Jan 19 2025 13:52:00
Module start 'content'
Timing: Jan 19 2025 13:52:00
Module end 'content'
Timing: Jan 19 2025 13:52:00
Script end

Main resources:

Total runtime0.0150 sec
Peak memory usage2,048.0000 KB
Database Queries3

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0053 589.1328152.6094
Module start 'layout' 0.00530.0029 741.742239.4141
Module start 'content' 0.00820.0050 781.156397.4297
Module end 'content' 0.01310.0018 878.585942.3047
Script end 0.0149  920.8906 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.002516.7968140.0002
Check MTime0.00106.9529140.0001
Mysql Total
Database connection0.00085.592510.0008
Mysqli_queries0.002315.175230.0008
Looping result0.00000.086010.0000
Template Total0.00159.910.0015
Template load0.00085.036610.0008
Template processing0.00074.851910.0007
Override
Cache load0.00053.526610.0005
General
dbfile0.00138.920080.0002
String conversion0.00000.054240.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs