Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/plugin/createdrupaluser/src/CreateDrupalUser.php

133 lines
3.2 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* Create a user in Drupal website when a user is registered in Chamilo LMS
*
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
* @package chamilo.plugin.createDrupalUser
*/
class CreateDrupalUser extends Plugin implements HookPluginInterface
{
const EXTRAFIELD_VARIABLE_NAME = 'drupal_user_id';
/**
* Class constructor
*/
protected function __construct()
{
$parameters = array(
'drupal_domain' => 'text'
);
parent::__construct('1.0', 'Angel Fernando Quiroz Campos', $parameters);
}
/**
* Instance the plugin
* @staticvar null $result
* @return CreateDrupalUser
*/
static function create()
{
static $result = null;
return $result ? $result : $result = new self();
}
/**
* Install the plugin
*/
public function install()
{
$this->createExtraField();
$this->installHook();
}
/**
* Uninstall the plugin
* @return void
*/
public function uninstall()
{
$this->uninstallHook();
$this->deleteExtraField();
}
/**
* Install the Create User hook
*/
public function installHook()
{
/** @var HookCreateDrupalUser $observer */
$observer = HookCreateDrupalUser::create();
HookCreateUser::create()->attach($observer);
}
/**
* Uninstall the Create User hook
*/
public function uninstallHook()
{
/** @var HookCreateDrupalUser $observer */
$observer = HookCreateDrupalUser::create();
$event = HookCreateUser::create();
if ($event) {
$event->detach($observer);
}
}
/**
* Get the drupal_user_id extra field information
* @return array The info
*/
private function getExtraFieldInfo()
{
$extraField = new ExtraField('user');
$extraFieldHandler = $extraField->get_handler_field_info_by_field_variable(
self::EXTRAFIELD_VARIABLE_NAME
);
return $extraFieldHandler;
}
/**
* Create the drupal_user_id when it not exists
*/
private function createExtraField()
{
$extraFieldExists = $this->getExtraFieldInfo() !== false;
if (!$extraFieldExists) {
$extraField = new ExtraField('user');
$extraField->save(
[
'field_type' => ExtraField::FIELD_TYPE_INTEGER,
'variable' => self::EXTRAFIELD_VARIABLE_NAME,
'display_text' => get_plugin_lang('DrupalUserId', 'CreateDrupalUser'),
'default_value' => null,
'field_order' => null,
'visible' => false,
'changeable' => false,
'filter' => null
]
);
}
}
/**
* Delete the drupal_user_id and values
*/
private function deleteExtraField()
{
$extraFieldInfo = $this->getExtraFieldInfo();
$extraFieldExists = $extraFieldInfo !== false;
if ($extraFieldExists) {
$extraField = new ExtraField('user');
$extraField->delete($extraFieldInfo['id']);
}
}
}