Forums / Developer / How to create a new user via the API (PHP)?

How to create a new user via the API (PHP)?

Author Message

Rainer Krauss

Thursday 02 July 2009 2:02:01 am

Dear all,
have been looking at source code from project extensions for some time now, and apparently I'm not getting it right..

Please, what is the source code I need to use (in ezp 4.1) to:
- create a new user, given account details such as first and last name, email and password
- assign them to a specified user group
- assign them to a specified section
?

Thanks in advance for your reply.

Best wishes,
Rainer

Xavier Langlois

Thursday 02 July 2009 9:49:11 am

Hello, here's what you're looking for
(tested on ez4.1)

function createUser($parentNodeId, $userClassId, $sectionId, $login, $email, $password, $dataTextAttributeList)
{
	$class = eZContentClass::fetch( $userClassId );
	$contentObject = $class->instantiate( 1, 1 );
	$contentObjectId = $contentObject->attribute( 'id' );
	//$contentObject->setAttribute( 'name', $login);
	$dataMap = $contentObject->dataMap();	
	foreach($dataTextAttributeList as $identifier=>$value)
	{
		$attribute = $dataMap[$identifier];
		$attribute->setAttribute( 'data_text', $value);
		$attribute->sync();
	}
	
	$nodeAssignment = eZNodeAssignment::create( array(
		'contentobject_id' => $contentObjectId,
		'contentobject_version' => $contentObject->attribute( 'current_version' ),
		'parent_node' => $parentNodeId,
		'sort_field' => 2,
		'sort_order' => 0,
		'is_main' => 1));
	$nodeAssignment->store();
	
	$version = $contentObject->version( 1 );
	$version->setAttribute( 'status', 'EZ_VERSION_STATUS_DRAFT' );
	$version->store();
		
	$user = new eZUser( $contentObject->attribute( 'id' ) );
	$user->setAttribute('login', $login );
	$user->setAttribute('email', $email );
	$hashType = eZUser::hashType() . "";
	$newHash = $user->createHash( $login, $password, eZUser::site(), $hashType );
	$user->setAttribute( "password_hash_type", $hashType );
	$user->setAttribute( "password_hash", $newHash );
	$user->store();
	
	$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectId, 'version' => 1 ) );
	
	//assign section ... maybe there is a shorter way
	$object = eZContentObject::fetch( $contentObjectId, true);
	eZContentObjectTreeNode::assignSectionToSubTree( $contentObject->attribute( 'main_node_id' ), $sectionId );
	return $user;
}

//eg:  create a new user under user group "Users" (node_id=5)
$dataTextAttributeList = array('first_name'=>'Toto', 'last_name'=>'De La Motte');
$oUser = createUser( 5, 4, 2, "toto", "toto@nospam.com", 'pass', $dataTextAttributeList );

Bye

--
There were these two cows, chatting over the fence between their fields.
The first cow said, "I tell you, this mad-cow-disease is really pretty scary. Don't you think ?"
The other cow replies, "Hell, I ain't worried, I'm a duck !"

eZ debug

Timing: Jan 30 2025 21:09:15
Script start
Timing: Jan 30 2025 21:09:15
Module start 'content'
Timing: Jan 30 2025 21:09:15
Module end 'content'
Timing: Jan 30 2025 21:09:15
Script end

Main resources:

Total runtime0.2307 sec
Peak memory usage8,192.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0075 588.0625370.2734
Module start 'content' 0.00750.0199 958.33591,001.7031
Module end 'content' 0.02740.2032 1,960.03913,890.5391
Script end 0.2306  5,850.5781 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00451.9591200.0002
Check MTime0.00150.6653200.0001
Mysql Total
Database connection0.00070.303010.0007
Mysqli_queries0.118851.48761410.0008
Looping result0.00110.49841390.0000
Template Total0.202987.910.2029
Template load0.00070.316510.0007
Template processing0.202287.629810.2022
Override
Cache load0.00050.206810.0005
Sytem overhead
Fetch class attribute can translate value0.00210.891210.0021
XML
Image XML parsing0.00030.146610.0003
General
dbfile0.01637.0774200.0008
String conversion0.00000.002230.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/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