19declare(strict_types=1);
60 $this->proxySuccess =
false;
61 $this->satisfied =
false;
64 $this->registration =
'';
125 if (
null == $setting->get(
'ilias_uuid',
null)) {
128 $setting->set(
'ilias_uuid', $uuid);
130 return $setting->get(
'ilias_uuid');
166 protected function load(): void
169 "SELECT * FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_id = %s AND privacy_ident = %s",
170 array(
'integer',
'integer',
'integer'),
181 $this->
setObjId((
int) $dbRow[
'obj_id']);
182 $this->
setUsrId((
int) $dbRow[
'usr_id']);
196 $DIC->database()->replace(
199 'obj_id' => array(
'integer', (
int) $this->
getObjId()),
200 'usr_id' => array(
'integer', (
int) $this->
getUsrId()),
206 'usr_ident' => array(
'text', $this->
getUsrIdent()),
208 'satisfied' => array(
'integer', (
int) $this->
getSatisfied())
222 "SELECT * FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_id = %s",
223 array(
'integer',
'integer'),
226 $cmixUsers = array();
227 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
228 $cmixUser =
new self();
229 $cmixUser->assignFromDbRow($row);
230 $cmixUsers[] = $cmixUser;
239 "SELECT * FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_ident = %s",
240 array(
'integer',
'text'),
244 $cmixUser =
new self();
246 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
247 $cmixUser->assignFromDbRow($row);
256 $DIC->database()->update(
259 'proxy_success' => array(
'integer', 1)
262 'obj_id' => array(
'integer', (
int)
$objId),
263 'usr_id' => array(
'integer', (
int)
$usrId),
274 switch ($userIdentMode) {
297 $tmpHash = hash(
"sha256",
'' . $user->
getId() . $user->
getCreateDate()) .
'@' . str_replace(
'www.',
'',
$_SERVER[
'HTTP_HOST']);
298 if (strlen($tmpHash) > 80) {
299 $tmpHash = substr($tmpHash, strlen($tmpHash) - 80);
317 switch ($userIdentMode) {
320 return (
string) $user->
getId();
336 $tmpHost =
'@' . str_replace(
'www.',
'',
$_SERVER[
'HTTP_HOST']);
337 if (strlen($tmpHash . $tmpHost) > 80) {
338 $tmpHash = substr($tmpHash, strlen($tmpHash) - (80 - strlen($tmpHost)));
348 return 'realemail' . $user->
getId();
356 return "{$mbox}@{$domain}.ilias";
362 switch ($userNameMode) {
392 "SELECT * FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s",
399 if ($asUsrId ===
false) {
400 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
401 $cmixUser =
new self();
402 $cmixUser->assignFromDbRow($row);
404 $users[] = $cmixUser;
407 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
408 $users[] = $row[
'usr_id'];
422 "SELECT usr_ident FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_id = %s",
423 array(
'integer',
'integer'),
428 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
429 $usrIdents[] = $row[
'usr_ident'];
438 $query =
"SELECT count(*) cnt FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_id = %s";
441 array(
'integer',
'integer'),
445 $query =
"SELECT count(*) cnt FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = %s AND usr_id = %s AND privacy_ident = %s";
448 array(
'integer',
'integer',
'integer'),
453 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
454 return (
bool) $row[
'cnt'];
468 SELECT DISTINCT cu.obj_id
469 FROM " . self::DB_TABLE_NAME .
" cu
470 INNER JOIN object_data od
471 ON od.obj_id = cu.obj_id
473 WHERE cu.proxy_success != %s
476 $res =
$DIC->database()->queryF($query, array(
'integer'), array(1));
480 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
481 $objects[] = (
int) $row[
'obj_id'];
491 $IN_objIds =
$DIC->database()->in(
'obj_id', $objectIds,
false,
'integer');
493 $query =
"UPDATE " . self::DB_TABLE_NAME .
" SET fetched_until = %s WHERE $IN_objIds";
508 INNER JOIN object_data od
509 ON od.obj_id = cu.obj_id
510 AND od.type = {$DIC->database()->quote($type, 'text')}
516 FROM " . self::DB_TABLE_NAME .
" cu
518 WHERE cu.usr_id = {$DIC->database()->quote($usrId, 'integer')}
521 $res =
$DIC->database()->query($query);
525 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
526 $objIds[] = (
int) $row[
'obj_id'];
562 public static function getUUID(
int $length = 32): string
564 $multiplier = (
int) floor($length / 8) * 2;
565 $uid = str_shuffle(str_repeat(uniqid(), $multiplier));
568 $ident = bin2hex(random_bytes($length));
569 }
catch (Exception
$e) {
573 $start = rand(0, strlen($ident) - $length - 1);
574 return substr($ident, $start, $length);
581 $query =
"SELECT usr_ident FROM " . self::DB_TABLE_NAME .
" WHERE " .
$DIC->database()->like(
'usr_ident',
'text',
$id .
'@%');
582 $result =
$DIC->database()->query($query);
583 return $result->numRows() != 0;
588 return (
new \Ramsey\Uuid\UuidFactory())->uuid3(self::getIliasUuid(),
$objId .
'-' .
$usrId);
593 return (
new \Ramsey\Uuid\UuidFactory())->uuid3(self::getIliasUuid(), $obj->
getRefId() .
'-' . $user->
getId());
598 return (
new \Ramsey\Uuid\UuidFactory())->uuid3(self::getIliasUuid(), $authToken->
getObjId() .
'-' . $authToken->
getUsrId());
603 return (
new \Ramsey\Uuid\UuidFactory())->uuid3(self::getIliasUuid(), $authToken->
getRefId() .
'-' . $authToken->
getUsrId());
610 $query =
"SELECT usr_id FROM " . self::DB_TABLE_NAME .
" WHERE obj_id = "
612 .
" AND" .
$DIC->database()->like(
'usr_ident',
'text', $userIdent .
'@%');
613 $res =
$DIC->database()->query($query);
616 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
626 $query =
"DELETE FROM cmix_users WHERE obj_id = " .
$DIC->database()->quote(
$objId,
'integer');
627 if (count($users) == 0) {
628 $DIC->database()->manipulate($query);
630 $DIC->database()->manipulateF(
631 $query .
" AND usr_id = %s",
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
setRegistration(string $registration)
static saveProxySuccess(int $objId, int $usrId, int $privacyIdent)
static deleteUsersForObject(int $objId, ?array $users=[])
setPrivacyIdent(int $privacyIdent)
static getIdent(int $userIdentMode, ilObjUser $user)
static getUsrIdForObjectAndUsrIdent(int $objId, string $userIdent)
static getName(int $userNameMode, ilObjUser $user)
static getInstanceByObjectIdAndUsrIdent(int $objId, string $usrIdent)
static getUserObjectUniqueId(int $length=32)
static getUserIdents(int $objId, int $usrId)
setSatisfied(bool $satisfied)
static userObjectUniqueIdExists(string $id)
static getInstancesByObjectIdAndUsrId(int $objId, int $usrId)
static lookupObjectIds(int $usrId, string $type='')
static getIdentAsId(int $userIdentMode, ilObjUser $user)
ilCmiXapiDateTime $fetchUntil
static exists(int $objId, int $usrId, int $privacyIdent=999)
static getUUID(int $length=32)
static updateFetchedUntilForObjects(ilCmiXapiDateTime $fetchedUntil, array $objectIds)
static getCMI5RegistrationFromAuthToken(ilCmiXapiAuthToken $authToken)
setProxySuccess(bool $proxySuccess)
static buildPseudoEmail(string $mbox, string $domain)
setFetchUntil(ilCmiXapiDateTime $fetchUntil)
static getUsersForObject(int $objId, bool $asUsrId=false)
static getRegistrationFromAuthToken(ilCmiXapiAuthToken $authToken)
__construct(?int $objId=null, ?int $usrId=null, ?int $privacyIdent=null)
setUsrIdent(string $usrIdent)
static generateRegistration(ilObjCmiXapi $obj, ilObjUser $user)
static generateCMI5Registration(int $objId, int $usrId)
static getCmixObjectsHavingUsersMissingProxySuccess()
get(int $a_format, string $a_format_str='', string $a_tz='')
get formatted date
const PRIVACY_NAME_FULLNAME
const PRIVACY_NAME_FIRSTNAME
const PRIVACY_IDENT_IL_UUID_USER_ID
const PRIVACY_IDENT_IL_UUID_RANDOM
const PRIVACY_IDENT_IL_UUID_LOGIN
const PRIVACY_IDENT_REAL_EMAIL
const PRIVACY_IDENT_IL_UUID_SHA256
const PRIVACY_IDENT_IL_UUID_EXT_ACCOUNT
const PRIVACY_NAME_LASTNAME
const PRIVACY_IDENT_IL_UUID_SHA256URL
static _isAnonymous(int $usr_id)
getFullname(int $max_strlen=0)
getCreateDate()
Get create date in YYYY-MM-DD HH-MM-SS format.
static is_email(string $a_email, ?ilMailRfc822AddressParserFactory $mailAddressParserFactory=null)
This preg-based function checks whether an e-mail address is formally valid.