Работа с пользователями Битрикс

Изменение даты регистрации пользователя

Изменение даты регистрации пользователя с ID 4732:

user-reg-date.sql
UPDATE b_user SET DATE_REGISTER = '2015-11-05 00:00:00' WHERE ID = 4732;

Хранение произвольной информации о пользователе

Хранение произвольной информации о пользователе без необходимости заведения дополнительных полей.

Для этого одноразово заводим пользовательское поле UF_NOSQL и работаем с ним как с объектом:

try {
  $baUser = BAUser::_();
  $infoletters = (object)$baUser->infoletters;
} catch (Exception $e) {
  $infoletters = new StdClass();
}
ba/BAUser.php
class BAUser {
 
  private static $instance;
  public static function _() {
    if(isset(self::$instance)) return self::$instance;
    self::$instance = new self();
    return self::$instance;
  }
 
  private $user, $userID, $userInfo, $userParams;
  private function __construct() {
    global $USER;
    $this->user = $USER;
    $this->userID = $this->user->GetID();
    $this->getUserInfo();
  }
 
  public function __get($param) {
    return isset($this->userParams->{$param}) ? $this->userParams->{$param} : null;
  }
 
  public function __set($param, $value) {
    return $this->userParams->{$param} = $value;
  }
 
  public function __isset($param) {
    return isset($this->userParams->{$param});
  }
 
  public function save() {
    $user = new CUser;
    $fields = array("UF_NOSQL" => serialize($this->userParams));
    $user->Update($this->userID, $fields);
  }
 
  private function getUserInfo() {
    if(isset($this->userInfo)) return;
    $rsUser = CUser::GetByID($this->userID);
    if($this->userInfo = $rsUser->Fetch()) {
      $this->userParams = unserialize($this->userInfo['UF_NOSQL']);
    }
    if(!isset($this->userParams) || !is_object($this->userParams)) $this->userParams = new StdClass();
  }
 
}