403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/acrit.cleanmaster/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/acrit.cleanmaster/classes/general/ccleanuser.php
<?php
use Bitrix\Main\Loader;
use Bitrix\Sale\Internals\OrderArchiveTable;

class CCleanUser
{
	private function DeleteUserOrders($userID): void
	{
		if (!CModule::IncludeModule('sale')) {
			return;
		}
		$userID = (int)$userID;

		$arFilter = [
			"USER_ID" => $userID,
		];
		$db_sales = CSaleOrder::GetList(["DATE_INSERT" => "ASC"], $arFilter, false, false, ['ID']);
		while ($ar_sales = $db_sales->Fetch()) {
			try {
				if (! CSaleOrder::Delete($ar_sales['ID'])) {
					/*$ex = $GLOBALS['APPLICATION']->GetException();
					CCleanMain::setLastError($ex);*/
				}
			} catch (Exception $ignore) {
				/*CCleanMain::setLastError($ignore);*/
			}
		}

		$orderIteratorParams = [
			'filter' => ['=USER_ID' => $userID],
			'select' => ['ID', 'ORDER_ID', 'USER_ID']
		];
		$orderIterator = OrderArchiveTable::getList($orderIteratorParams);
		while ($order = $orderIterator->fetch()) {
			try {
				$result = OrderArchiveTable::delete($order['ID']);
				if (! $result->isSuccess()) {
					$errors = $result->getErrors();
					foreach ($errors as $error) {
						\CCleanMain::setLastError($error);
					}
				}
			} catch (Exception $ignore) {
				\CCleanMain::setLastError($ignore);
			}
		}
	}

	private function DeleteUserBlog($userID)
	{
		if (!CModule::IncludeModule('blog')) {
			return;
		}
		$userID = (int)$userID;

		$dbBlogs = CBlog::GetList([], ['OWNER_ID' => $userID]);
		while ($arBlog = $dbBlogs->Fetch()) {
			CBlog::Delete($arBlog['ID']);
		}
		$dbBlogUser = CBlogUser::GetList([], ['USER_ID' => $userID]);
		while ($arBlogUser = $dbBlogUser->Fetch()) {
			CBlogUser::Delete($arBlogUser['ID']);
		}
	}

	private function DeleteUserAccount($userID)
	{
		if (!CModule::IncludeModule('sale')) {
			return;
		}
		$userID = (int)$userID;

		$dbUserAccount = CSaleUserAccount::GetList([], ['USER_ID' => $userID]);
		while ($arUserAccount = $dbUserAccount->Fetch()) {
			CSaleUserAccount::Delete($arUserAccount['ID']);
		}
	}

	private function DeleteUserForum($userID)
	{
		if (!CModule::IncludeModule('forum')) {
			return;
		}
		$userID = (int)$userID;

		$dbTopics = CForumTopic::GetList([], ['USER_START_ID' => $userID]);
		while ($arTopic = $dbTopics->Fetch()) {
			CForumTopic::Delete( (int)$arTopic['ID'] );
		}
		$dbForumUser = CForumUser::GetList([], ['USER_ID' => $userID]);
		while ($arForumUser = $dbForumUser->Fetch()) {
			CForumUser::Delete( (int)$arForumUser['ID'] );
		}
	}

	private function DeleteUserWebFormResult($userID)
	{
		if (! Loader::includeModule('form')) {
			return;
		}
		$userID = (int)$userID;
		$arFilter = [
			"USER_ID"               => $userID,
			"USER_ID_EXACT_MATCH"   => 'Y'
		];

		$by="s_id";
		$order="desc";

		$rsForms = CForm::GetList($by, $order, [], $is_filtered);
		while ($arForm = $rsForms->Fetch()) {
			$by="s_timestamp";
			$order="desc";

			$rsResults = CFormResult::GetList($arForm['ID'], $by, $order, $arFilter, $is_filtered,"N", 10000);
			while ($r = $rsResults->Fetch()) {
				CFormResult::Delete($r['ID'], 'N');
			}
		}
	}

	private function DeleteUserTickets($userID)
	{
		if (! Loader::includeModule('support')) {
			return;
		}
		$userID = (int)$userID;
		$arFilter = [
			'CREATED_BY'                => $userID,
			'CREATED_BY_EXACT_MATCH'    => "Y"
		];
		$by     = "s_id";
		$order  = "asc";

		$tickets = CTicket::GetList($by, $order, $arFilter, $is_filtered);
		while ($t = $tickets->Fetch()) {
			CTicket::Delete($t['ID'], "N");
		}
	}

	private function DeleteSocNetByUser($userID)
	{
		if (! Loader::includeModule('socialnetwork')) {
			return;
		}
		$userID = (int)$userID;

		$rsMess = CSocNetMessages::GetList(['ID' => 'DESC'], ['FROM_USER_ID' => $userID], false, false, ['ID', 'FROM_USER_ID']);
		while ($ar = $rsMess->Fetch()) {
			CSocNetMessages::Delete($ar['ID']);
		}
		$rsMess = CSocNetMessages::GetList(['ID' => 'DESC'], ['TO_USER_ID' => $userID], false, false, ['ID', 'TO_USER_ID']);
		while ($ar = $rsMess->Fetch()) {
			CSocNetMessages::Delete($ar['ID']);
		}
		$rsGrp = CSocNetGroup::GetList(['ID' => 'DESC'], ['OWNER_ID' => $userID], false, false, ['ID', 'OWNER_ID']);
		while ($ar = $rsGrp->Fetch()) {
			CSocNetGroup::Delete($ar['ID']);
		}
	}

	/**
	 * Точка входа, общий фасад очистки
	 *
	 * @param bool $not_authorized      = false
	 * @param bool $deleteAssets        = false удалить пользователей с данными модулей
	 *
	 * @return bool
	 */
	public function InactiveUsersDelete($not_authorized = false, $deleteAssets = false, $limit = 100)
	{
		$finish = true;

		$by = "ID";
		$order = "asc";

		$arFilter = ["ACTIVE" => "N"];
		$users = CUser::GetList($by, $order, $arFilter);

		$i = 0;
		while ($arUsers = $users->Fetch()) {
			$assets = $this->GetUserAssets($arUsers['ID']);
			$cnt = 0;
			foreach ($assets as $k => $a) {
				$cnt += $a;
			}
			if ($cnt > 0 && $deleteAssets != 'Y') {
				continue;
			}

			$this->DeleteUserAssets($arUsers['ID']);
			if (! CUser::Delete($arUsers["ID"])) {
				$ex = $GLOBALS['APPLICATION']->GetException();
				\CCleanMain::setLastError($ex);
			}

			$finish = false;
			if ($limit > 0 && ++$i > $limit) {
				break;
			}
		}

		$i = 0;
		if ($not_authorized == 'Y') {
			$not_auth = ["LAST_LOGIN" => false];

			$users = CUser::GetList($by, $order, $not_auth);
			while ($arUsers = $users->Fetch()) {
				// its be void for this users
				if ($deleteAssets == 'Y') {
					$this->DeleteUserAssets($arUsers['ID']);
				}
				if (!CUser::Delete($arUsers["ID"])) {
					$ex = $GLOBALS['APPLICATION']->GetException();
					\CCleanMain::setLastError($ex);
				}

				$finish = false;
				if ($limit > 0 && ++$i > $limit) {
					break;
				}
			}
		}
		return $finish;
	}

	public function GetDiagnosticData($step = false)
	{
		$not_auth = ["LAST_LOGIN" => false];
		$arFilter = ["ACTIVE" => "N"];
		$by = "ID";
		$order = "asc";
		$users = CUser::GetList($by, $order, $arFilter);
		while ($arUsers = $users->Fetch()) {
			$_SESSION['cleanmaster']['diagnostic']['user']['inactive'][$arUsers['LOGIN']] = [
				'NAME' => $arUsers['NAME'], 'LOGIN' => $arUsers['LOGIN'], 'ID' => $arUsers['ID'], 'EMAIL' => $arUsers['EMAIL']
			];
		}
		$users2 = CUser::GetList($by, $order, $not_auth);
		while ($arUsers = $users2->Fetch()) {
			if (! array_key_exists($arUsers['LOGIN'], (array)$_SESSION['cleanmaster']['diagnostic']['user']['inactive'])) {
				$_SESSION['cleanmaster']['diagnostic']['user']['notauth'][$arUsers['LOGIN']] = [
					'NAME' => $arUsers['NAME'], 'LOGIN' => $arUsers['LOGIN'], 'ID' => $arUsers['ID'], 'EMAIL' => $arUsers['EMAIL']
				];
			}
		}
		return false;
	}

	/////////////////////////// v2 /////////////////////////////////////

	private function GetUserAssets($userID)
	{
		$userID = (int)$userID;

		$arAssetsCnt = [
			'Blog'      => 0,
			'Forum'     => 0,
			'Form'      => 0,
			'Tickets'   => 0,
			'Orders'    => 0,
			'Account'   => 0,
			'SocNetMessages'   => 0,
			'SocNetGroup'      => 0
		];

		if (Loader::includeModule('blog')) {
			$dbBlogs = CBlog::GetList([], ['OWNER_ID' => $userID]);
			$arAssetsCnt['Blog'] = (int)$dbBlogs->SelectedRowsCount();
		}
		if (Loader::includeModule('forum')) {
			$dbTopics = CForumTopic::GetList([], ['USER_START_ID' => $userID]);
			$arAssetsCnt['Forum'] = (int)$dbTopics->SelectedRowsCount();
		}
		if (Loader::includeModule('form')) {
			$arFilter = [
				"USER_ID"               => $userID,
				"USER_ID_EXACT_MATCH"   => 'Y'
			];
			$by="s_id";
			$order="desc";
			$rsForms = CForm::GetList($by, $order, [], $is_filtered);
			while ($arForm = $rsForms->Fetch()) {
				$by="s_timestamp";
				$order="desc";
				$rsResults = CFormResult::GetList($arForm['ID'], $by, $order, $arFilter,
					$is_filtered,"N", 100);
				$arAssetsCnt['Form'] += (int)$rsResults->SelectedRowsCount();
			}
		}
		if (Loader::includeModule('support')) {
			$arFilter = [
				'CREATED_BY'                => $userID,
				'CREATED_BY_EXACT_MATCH'    => "Y"
			];
			$by="s_id";
			$order="asc";
			$tickets = CTicket::GetList($by, $order, $arFilter, $is_filtered);
			$arAssetsCnt['Tickets'] = (int)$tickets->SelectedRowsCount();
		}
		if (Loader::includeModule('sale')) {
			$db_sales = CSaleOrder::GetList(["DATE_INSERT" => "ASC"], ["USER_ID" => $userID]);
			$arAssetsCnt['Orders'] = (int)$db_sales->SelectedRowsCount();

			$dbUserAccount = CSaleUserAccount::GetList([], ['USER_ID' => $userID]);
			$arAssetsCnt['Account'] = (int)$dbUserAccount->SelectedRowsCount();
		}
		if (Loader::includeModule('socialnetwork')) {
			$rsMess = CSocNetMessages::GetList(['ID' => 'DESC'], ['FROM_USER_ID' => $userID], false, false, ['ID', 'FROM_USER_ID']);
			$arAssetsCnt['SocNetMessages'] += (int)$rsMess->SelectedRowsCount();

			$rsMess = CSocNetMessages::GetList(['ID' => 'DESC'], ['TO_USER_ID' => $userID], false, false, ['ID', 'TO_USER_ID']);
			$arAssetsCnt['SocNetMessages'] += (int)$rsMess->SelectedRowsCount();

			$rsGrp = CSocNetGroup::GetList(['ID' => 'DESC'], ['OWNER_ID' => $userID], false, false, ['ID', 'OWNER_ID']);
			$arAssetsCnt['SocNetGroup'] += (int)$rsGrp->SelectedRowsCount();
		}

		return $arAssetsCnt;
	}

	public function DeleteUserAssets($userID)
	{
		$this->DeleteUserOrders($userID);
		$this->DeleteUserBlog($userID);
		$this->DeleteUserForum($userID);
		$this->DeleteUserAccount($userID);
		$this->DeleteUserWebFormResult($userID);
		$this->DeleteUserTickets($userID);
		$this->DeleteSocNetByUser($userID);
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit