Your IP : 3.148.210.23


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/disk/lib/internals/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/disk/lib/internals/folder.php

<?php

namespace Bitrix\Disk\Internals;

use Bitrix\Main\Entity\DeleteResult;
use Bitrix\Main\Entity\EntityError;
use Bitrix\Main\Entity\ExpressionField;
use Bitrix\Main\Entity\Result;
use Bitrix\Main\Localization\Loc;

final class FolderTable extends ObjectTable
{
	const TYPE = ObjectTable::TYPE_FOLDER;

	public static function getMap()
	{
		$map = parent::getMap();
		$map['TYPE']['validation'] = array(__CLASS__, 'validateType');
		$map[] = new ExpressionField('HAS_SUBFOLDERS',
			'CASE WHEN EXISTS(
			SELECT \'x\' FROM b_disk_object_path p
				INNER JOIN b_disk_object o ON o.ID=p.OBJECT_ID AND o.TYPE=2
			WHERE p.PARENT_ID = %1$s AND p.DEPTH_LEVEL = 1 AND o.DELETED_TYPE = 0) THEN 1 ELSE 0 END',
		array('REAL_OBJECT_ID',), array('data_type' => 'boolean',));


		return $map;
	}

	public static function checkFields(Result $result, $primary, array $data)
	{
		if($result instanceof DeleteResult)
		{
			if(!ObjectPathTable::isLeaf($primary))
			{
				$result->addError(new EntityError(Loc::getMessage("DISK_OBJECT_ENTITY_ERROR_DELETE_NODE")));
			}
		}

		parent::checkFields($result, $primary, $data);
	}

	public static function add(array $data)
	{
		$data['TYPE'] = static::TYPE;

		return parent::add($data);
	}

	public static function validateTypeLogic($value)
	{
		return $value == static::TYPE;
	}

	public static function validateType()
	{
		return array(
			array(__CLASS__, 'validateTypeLogic')
		);
	}

}