eZPublish access/change user account from PHP

It took me some time to figure out how to access and change a user account in eZPublish from PHP. Here’s an example how to achieve this:

<?php
// user node
$node = eZContentObjectTreeNode::fetch($nodeID);

// user object
$dataMap = $node->dataMap();

// change attribute
$firstname = $dataMap['firstname'];
$firstname->setAttribute('data_text', 'Foo');
$firstname->sync();

// user account attribute
$user = $dataMap['user_account'];
$userData = $user->content();

// user settings
$userSetting = eZUserSetting::fetch($user->ContentObjectID);

// get account status
$isEnabled = $userSetting->attribute('is_enabled');

// enable user account
$userSetting->setAttribute('is_enabled', 1);
$userSetting->store();

Or if you just want to access the user account object or the user setting directly:

<?php
// user account object
$user = eZUser::fetch($objectID);

// user settings
$userSetting = eZUserSetting::fetch($objectID);