<?php
namespace Rasher\Test;
use Rasher\Data\PDO\DataManagement\{ConnectionData}; //PDO extension
//use Rasher\Data\MySQLi\DataManagement\{ConnectionData}; //MySQLi extension
use Rasher\Data\UserManagement\{DbUserRoleSettingRepository,DbUserRoleRepository,DbUserRepository};
use Rasher\Data\Type\{LogicalOperator,Param,FilterParam,Operator,ItemAttribute};
use Rasher\Common\{Common};
include_once __DIR__."/user_data_repository.php";
class LoginTest
{
public $dbUserRepository = null;
public $userLogin = null;
public function __construct($dbUserRepository)
{
$this->dbUserRepository = $dbUserRepository;
}
public function deleteUserData()
{
try
{
$this->dbUserRepository->dbUserRoleRepository->beginTransaction();
$this->dbUserRepository->beginTransaction();
$this->dbUserRepository->dbUserRoleRepository->deleteAll_UserRole_UserRoleSettingsCollection();
$this->dbUserRepository->deleteAll_User_UserRolesCollection();
$this->dbUserRepository->deleteAll();
$this->dbUserRepository->dbUserRoleRepository->commitTransaction();
$this->dbUserRepository->commitTransaction();
}
catch (\Throwable $e)
{
$this->dbUserRepository->dbUserRoleRepository->rollbackTransaction();
$this->dbUserRepository->rollbackTransaction();
throw $e;
}
}
public function deleteUserRelatedBaseData()
{
try
{
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->beginTransaction();
$this->dbUserRepository->dbUserRoleRepository->beginTransaction();
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->deleteAll();
$this->dbUserRepository->dbUserRoleRepository->deleteAll();
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->commitTransaction();
$this->dbUserRepository->dbUserRoleRepository->commitTransaction();
}
catch (\Throwable $e)
{
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->rollbackTransaction();
$this->dbUserRepository->dbUserRoleRepository->rollbackTransaction();
throw $e;
}
}
public function createUserRelatedBaseData()
{
try
{
//UserRoleSetting
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->beginTransaction();
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", "ACTIVE");
if (!$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->getNewItemInstance();
$item["Name"]->value = "ACTIVE";
$item["DefaultValue"]->value = 0;
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", "LOGLEVEL");
if (!$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->getNewItemInstance();
$item["Name"]->value = "LOGLEVEL";
$item["DefaultValue"]->value = 1;
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", "ACCESS_READ");
if (!$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->getNewItemInstance();
$item["Name"]->value = "ACCESS_READ";
$item["DefaultValue"]->value = 0;
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", "ACCESS_WRITE");
if (!$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->getNewItemInstance();
$item["Name"]->value = "ACCESS_WRITE";
$item["DefaultValue"]->value = 0;
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", "ACCESS_DOWNLOAD");
if (!$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->getNewItemInstance();
$item["Name"]->value = "ACCESS_DOWNLOAD";
$item["DefaultValue"]->value = 0;
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->save($item);
}
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->commitTransaction();
}
catch (\Throwable $e)
{
$this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->rollbackTransaction();
throw $e;
}
try
{
//UserRole
$this->dbUserRepository->dbUserRoleRepository->beginTransaction();
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Code", "BASE_USER");
if (!$this->dbUserRepository->dbUserRoleRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->getNewItemInstance();
$item["Code"]->value = "BASE_USER";
$item["Name"]->value = "Base user";
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACTIVE", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("LOGLEVEL", "3");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_READ", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_WRITE", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_DOWNLOAD", "1");
$this->dbUserRepository->dbUserRoleRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Code", "GUEST");
if (!$this->dbUserRepository->dbUserRoleRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->getNewItemInstance();
$item["Code"]->value = "GUEST";
$item["Name"]->value = "Guest";
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACTIVE", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("LOGLEVEL", "10");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_READ", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_WRITE", "0");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_DOWNLOAD", "1");
$this->dbUserRepository->dbUserRoleRepository->save($item);
}
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Code", "ADMIN");
if (!$this->dbUserRepository->dbUserRoleRepository->checkItemInDB($filters, $item))
{
$item = $this->dbUserRepository->dbUserRoleRepository->getNewItemInstance();
$item["Code"]->value = "ADMIN";
$item["Name"]->value = "Admin";
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACTIVE", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("LOGLEVEL", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_READ", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_WRITE", "1");
$item["UserRoleSettingsCollection"]->value[] = $this->getNewUserRoleSettingCollectionItem("ACCESS_DOWNLOAD", "1");
$this->dbUserRepository->dbUserRoleRepository->save($item);
}
$this->dbUserRepository->dbUserRoleRepository->commitTransaction();
}
catch (\Throwable $e)
{
$this->dbUserRepository->dbUserRoleRepository->rollbackTransaction();
throw $e;
}
}
private function getNewUserRoleSettingCollectionItem($userRoleSettingName, $value)
{
$userRoleSettingCollectionItem = $this->dbUserRepository->dbUserRoleRepository->getNewItemInstance($this->dbUserRepository->dbUserRoleRepository->getUserRoleUserRoleSettingsCollectionItemAttributes());
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Name", $userRoleSettingName);
$userRoleSetting = $this->dbUserRepository->dbUserRoleRepository->dbUserRoleSettingRepository->loadByFilter2($filters);
$userRoleSettingCollectionItem["UserRoleSetting"]->value = $userRoleSetting[0];
$userRoleSettingCollectionItem["Value"]->value = $value;
return $userRoleSettingCollectionItem;
}
public function login($loginName, $password)
{
$returnValue = false;
$currentDate = date('Y-m-d H:i:s');
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("LoginName", $loginName);
$filters[] = new Param("Password", sha1($password));
if ($this->dbUserRepository->checkItemInDB($filters, $this->userLogin))
{
$this->userLogin = $this->userLogin[0];
$this->userLogin["IsLogged"]->value = 1;
$this->userLogin["LastLoginDateTime"]->value = $currentDate;
$this->dbUserRepository->saveWithTransaction($this->userLogin);
$returnValue = true;
echo "Login success!".LINE_SEPARATOR;
}
else
{
echo "Login failed!".LINE_SEPARATOR;
}
return $returnValue;
}
public function logout()
{
if ($this->userLogin !== null)
{
$this->userLogin["IsLogged"]->value = 0;
$this->dbUserRepository->saveWithTransaction($this->userLogin);
$this->userLogin = null;
echo "Logout success!".LINE_SEPARATOR;
}
}
public function showUserSomeData()
{
if ($this->userLogin !== null)
{
//We will load the user's all data
$user = $this->dbUserRepository->loadByIdWithTransaction($this->userLogin["Id"]->value);
echo LINE_SEPARATOR;
echo "User:";
$this->dbUserRepository->writeOutSimpleData($user);
echo "UserRolesCollection.UserRole.Code:".LINE_SEPARATOR;
$attribute = ItemAttribute::getItemAttribute($user[0], "UserRolesCollection.UserRole.Code");
foreach($attribute as $val)
{
echo $val->value.LINE_SEPARATOR;
}
echo LINE_SEPARATOR;
Common::writeOutLetter("-", 50, LINE_SEPARATOR);
echo "UserRolesCollection.UserRole.UserRoleSettingsCollection.UserRoleSetting.Value".LINE_SEPARATOR;
$attribute = ItemAttribute::getItemAttribute($user[0], "UserRolesCollection.UserRole.UserRoleSettingsCollection.Value");
foreach($attribute as $val)
{
echo $val->value.LINE_SEPARATOR;
}
echo LINE_SEPARATOR;
Common::writeOutLetter("-", 50, LINE_SEPARATOR);
echo "UserRolesCollection:";
$this->dbUserRepository->writeOutSimpleData($user[0]["UserRolesCollection"]->value);
echo "UserRolesCollection UserRole codes with settings and values:";
echo LINE_SEPARATOR;
foreach($user[0]["UserRolesCollection"]->value as $userRoleCollectionItem)
{
echo LINE_SEPARATOR;
echo $userRoleCollectionItem["UserRole"]->value["Code"]->value.":";
echo LINE_SEPARATOR;
foreach($userRoleCollectionItem["UserRole"]->value["UserRoleSettingsCollection"]->value as $userRoleUserRoleSettingCollectionItem)
{
echo $userRoleUserRoleSettingCollectionItem["UserRoleSetting"]->value["Name"]->value." -> ".$userRoleUserRoleSettingCollectionItem["Value"]->value;
echo LINE_SEPARATOR;
}
}
echo LINE_SEPARATOR;
}
else
{
echo "User is not logged in!".LINE_SEPARATOR;
}
}
public function getNewUserRoleCollectionItem($userRoleCode)
{
$userRoleCollectionItem = $this->dbUserRepository->getNewItemInstance($this->dbUserRepository->getUserUserRolesCollectionItemAttributes());
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("Code", $userRoleCode);
$userRole = $this->dbUserRepository->dbUserRoleRepository->loadByFilter2($filters);
$userRoleCollectionItem["UserRole"]->value = $userRole[0];
return $userRoleCollectionItem;
}
public function registerNewUser($loginName, $password, $userRoleCollectionItemArray)
{
$newUser = null;
$filters = array();
$filters[] = new Param("IsDeleted", 0);
$filters[] = new Param("LoginName", $loginName);
if ($this->dbUserRepository->checkItemInDB($filters, $newUser))
{
echo "$loginName user is already existed!".LINE_SEPARATOR;
}
else
{
//Set user's base data
$passwordsha1 = sha1($password);
$newUser = $this->dbUserRepository->getNewItemInstance();
$newUser["LoginName"]->value = $loginName;
$newUser["Password"]->value = $passwordsha1;
//Set user's UserRolesCollection
$newUser["UserRolesCollection"]->value = $userRoleCollectionItemArray;
$this->dbUserRepository->saveWithTransaction($newUser);
echo "$loginName user registered!".LINE_SEPARATOR;
}
}
public function deleteUser($loginName)
{
$currentUser = null;
$filters = array();
$filters[] = new Param("LoginName", $loginName);
if (!$this->dbUserRepository->checkItemInDB($filters, $currentUser))
{
echo "$loginName user is not existed!".LINE_SEPARATOR;
}
else
{
//We will load the user's all data
$currentUser = $this->dbUserRepository->loadByIdWithTransaction($currentUser[0]["Id"]->value);
$this->dbUserRepository->deleteWithTransaction($currentUser[0]);
echo "$loginName user deleted!".LINE_SEPARATOR;
}
}
public function generateUsers($count, $startIndex = 1)
{
for($i = $startIndex; $i < ($startIndex + $count); $i++)
{
$userRoleCollectionItemArray = array(
$this->getNewUserRoleCollectionItem("BASE_USER"),
$this->getNewUserRoleCollectionItem("GUEST"));
$this->registerNewUser("user_$i", "123", $userRoleCollectionItemArray);
}
}
}
try
{
//TEST
error_reporting(0); //only production environment
//error_reporting(E_ALL); //for detail error reporting
//Fill connectionData out before using
//$connectionData = new ConnectionData("localhost", "userName", "password", "test"); // use it with MySQLi extension
//$connectionData = new ConnectionData("mysql:host=localhost;dbname=test", "userName", "password"); // use it with PDO extension (MySQL)
$connectionData = new ConnectionData("sqlsrv:server=(local);Database=test","",""); //PDO MSSQL
//DbUserRoleSettingRepository single instance
$dbUserRoleSettingRepository = new DbUserRoleSettingRepository($connectionData, true, "Name"); //Caching by Name
//DbUserRoleRepository single instance
$dbUserRoleRepository = new DbUserRoleRepository($connectionData,$dbUserRoleSettingRepository, true, "Code"); //Caching by Code
//DbUserRepository single instance
$dbUserRepository = new DbUserRepository($connectionData, $dbUserRoleRepository); //default no cache
$loginTest = new LoginTest($dbUserRepository);
//Comment out if you want to modify this class for several times!
//unset($_SESSION["LoginTest"]);
if (!isset($_SESSION["LoginTest"]))
{
$_SESSION["LoginTest"] = json_encode($loginTest);
}
else
{
$loginTest = json_decode($loginTest);
}
$loginTest->deleteUserData(); //User and related data deleting
$loginTest->deleteUserRelatedBaseData(); //UserRole + UserRoleSetting deleting
$loginTest->createUserRelatedBaseData(); //UserRole + UserRoleSetting creating
//TEST DATA generation: creating 500 users
$loginTest->generateUsers(500, 3);
//Caching will be slow when you have much more data!!!
//It is important to overthink you really need caching.
$dbUserRepository = new DbUserRepository($connectionData, $dbUserRoleRepository, true);
//Build cache
echo "Using cached items:".LINE_SEPARATOR;
$dbUserRoleRepository->buildCache(true);
$dbUserRoleSettingRepository->buildCache(true);
$userRoleItem = $dbUserRoleRepository->getItemFromCache("GUEST");
echo LINE_SEPARATOR;
echo $userRoleItem["Name"]->value.LINE_SEPARATOR;
$userRoleSettingItem = $dbUserRoleSettingRepository->getItemFromCache("ACTIVE");
echo $userRoleSettingItem["Name"]->value.LINE_SEPARATOR;
//Add new userRoleSetting items to itemCache
$userRoleSettingItem = $dbUserRoleSettingRepository->getNewItemInstance();
$userRoleSettingItem["Name"]->value = "TEST1";
$userRoleSettingItem["DefaultValue"]->value = "TEST1";
$dbUserRoleSettingRepository->addItemToCache($userRoleSettingItem);
$userRoleSettingItem = $dbUserRoleSettingRepository->getItemFromCache("TEST1");
echo $userRoleSettingItem["Name"]->value."(Id: ".$userRoleSettingItem["Id"]->value.")".LINE_SEPARATOR;
$userRoleSettingItem = $dbUserRoleSettingRepository->getNewItemInstance();
$userRoleSettingItem["Name"]->value = "TEST2";
$userRoleSettingItem["DefaultValue"]->value = "TEST2";
$dbUserRoleSettingRepository->addItemToCache($userRoleSettingItem);
$userRoleSettingItem = $dbUserRoleSettingRepository->getItemFromCache("TEST2");
echo $userRoleSettingItem["Name"]->value."(Id: ".$userRoleSettingItem["Id"]->value.")".LINE_SEPARATOR;
//Save new userRoleSetting items to DB
$dbUserRoleSettingRepository->saveCache();
$userRoleSettingItem = $dbUserRoleSettingRepository->getItemFromCache("TEST1");
echo $userRoleSettingItem["Name"]->value."(Id: ".$userRoleSettingItem["Id"]->value.")".LINE_SEPARATOR;
$userRoleSettingItem = $dbUserRoleSettingRepository->getItemFromCache("TEST2");
echo $userRoleSettingItem["Name"]->value."(Id: ".$userRoleSettingItem["Id"]->value.")".LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #1
echo "Finding item test #1";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("Name","Gues%", Operator::OP_LIKE);
$param[] = new Param("Code","AA", Operator::OP_NOT_LIKE);
$filterParam = new FilterParam($param, LogicalOperator::LO_AND);
$foundItems = $dbUserRoleRepository->find($dbUserRoleRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #2
echo "Finding item test #2";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("Name","Gues%", Operator::OP_LIKE);
$param[] = new Param("Code","%ASE%", Operator::OP_LIKE);
$filterParam = new FilterParam($param, LogicalOperator::LO_OR);
$foundItems = $dbUserRoleRepository->find($dbUserRoleRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
$userRoleCollectionItemArray = array(
$loginTest->getNewUserRoleCollectionItem("BASE_USER"),
$loginTest->getNewUserRoleCollectionItem("GUEST"));
$loginTest->registerNewUser("user_1", "123", $userRoleCollectionItemArray);
$loginTest->login("user_1", "123");
$loginTest->showUserSomeData();
$loginTest->logout();
$userRoleCollectionItemArray = array(
$loginTest->getNewUserRoleCollectionItem("BASE_USER"));
$loginTest->registerNewUser("user_2", "123", $userRoleCollectionItemArray);
$userRoleCollectionItemArray = array(
$loginTest->getNewUserRoleCollectionItem("ADMIN"));
$loginTest->registerNewUser("admin", "admin", $userRoleCollectionItemArray);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
$dbUserRepository->buildCache(true);
//Find test #3
echo "Finding item test #3";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("LastLoginDateTime", date('Y-m-d H:i:s', strtotime("2024-08-08")), Operator::OP_LESS_THAN);
$filterParam = new FilterParam($param);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #4
echo "Finding item test #4";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("LastLoginDateTime", date('Y-m-d H:i:s', strtotime("2023-08-08")), Operator::OP_GREATER_THAN_OR_EQUAL);
$param[] = new Param("LastLoginDateTime", null, Operator::OP_EQUAL);
$filterParam = new FilterParam($param, LogicalOperator::LO_OR);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #5: any user who has "BASE_USER" UserRole and has "LOGLEVEL" = 3 setting
echo "Finding item test #5";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("UserRolesCollection.UserRole.Code","BASE_USER", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.UserRoleSetting.Name", "LOGLEVEL", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.Value", "3", Operator::OP_EQUAL);
$filterParam = new FilterParam($param, LogicalOperator::LO_AND);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #6: any user who has "BASE_USER" UserRole and has "LOGLEVEL" = 10 setting
//DbUserRepository.depth = 2, if you set it to 0 you cannot get the correct result
echo "Finding item test #6";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("UserRolesCollection.UserRole.Code", "BASE_USER", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.Value", "10", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.UserRoleSetting.Name", "LOGLEVEL", Operator::OP_EQUAL);
$filterParam = new FilterParam($param, LogicalOperator::LO_AND);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #7:
echo "Finding item test #7";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.Value", "10", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.Code", "GUEST", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.UserRoleSetting.Name", "LOGLEVEL1", Operator::OP_EQUAL); //no LOGLEVEL1
$filterParam = new FilterParam($param, LogicalOperator::LO_AND);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Find test #8:
echo "Finding item test #8";
echo LINE_SEPARATOR;
$param = array();
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.Value", "10", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.Code", "GUEST", Operator::OP_EQUAL);
$param[] = new Param("UserRolesCollection.UserRole.UserRoleSettingsCollection.UserRoleSetting.Name", "LOGLEVEL1", Operator::OP_EQUAL); //no LOGLEVEL1
$filterParam = new FilterParam($param, LogicalOperator::LO_OR);
$foundItems = $dbUserRepository->find($dbUserRepository->getAllItemsFromCache(true), $filterParam, false);
echo "count: ".count($foundItems);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
echo "DB - IS NULL Test #1";
echo LINE_SEPARATOR;
$filters = array();
$filters[] = new Param("LastLoginDateTime", null, Operator::OP_IS_NULL);
$users = $dbUserRepository->LoadByFilter2($filters);
echo "count: ".count($users);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
echo "DB - IS NOT NULL Test #2";
echo LINE_SEPARATOR;
$filters = array();
$filters[] = new Param("LastLoginDateTime", null, Operator::OP_IS_NOT_NULL);
$users = $dbUserRepository->LoadByFilter2($filters);
echo "count: ".count($users);
echo LINE_SEPARATOR;
echo LINE_SEPARATOR;
//Testing user's delete
$loginTest->deleteUser("user_1"); //physically delete
$loginTest->deleteUser("user_2"); //physically delete
}
catch(\Throwable $e)
{
echo $e->getMessage();
}
?>
|