%PDF- %PDF-
| Direktori : /proc/self/root/proc/10576/cwd/home/bitrix/www/bitrix/modules/landing/lib/internals/ |
| Current File : //proc/self/root/proc/10576/cwd/home/bitrix/www/bitrix/modules/landing/lib/internals/base.php |
<?php
namespace Bitrix\Landing\Internals;
use \Bitrix\Landing\Manager;
class BaseTable
{
public static $internalClass = null;
/**
* Get internal class (must declarated in external class).
* @return string
*/
private static function getCallingClass()
{
if (static::$internalClass === null)
{
throw new \Bitrix\Main\SystemException(
'Variable static::$internalClass must be declarated in external class.'
);
}
return '\\' . __NAMESPACE__ . '\\' . static::$internalClass;
}
/**
* Get Map of table.
* @return array
*/
public static function getMap()
{
/** @var \Bitrix\Main\ORM\Data\DataManager $class */
$class = self::getCallingClass();
return $class::getMap();
}
/**
* Create new record and return it new id.
* @param array $fields Fields array.
* @return \Bitrix\Main\ORM\Data\AddResult
*/
public static function add($fields)
{
$uid = Manager::getUserId();
$uid = $uid ? $uid : 1;
$date = new \Bitrix\Main\Type\DateTime;
$charValue = array(
'ACTIVE', 'PUBLIC', 'SITEMAP', 'FOLDER'
);
foreach ($charValue as $code)
{
if (isset($fields[$code]) && $fields[$code] != 'Y')
{
$fields[$code] = 'N';
}
}
if (!isset($fields['CREATED_BY_ID']))
{
$fields['CREATED_BY_ID'] = $uid;
}
if (!isset($fields['MODIFIED_BY_ID']))
{
$fields['MODIFIED_BY_ID'] = $uid;
}
if (!isset($fields['DATE_CREATE']))
{
$fields['DATE_CREATE'] = $date;
}
if (!isset($fields['DATE_MODIFY']))
{
$fields['DATE_MODIFY'] = $date;
}
/** @var \Bitrix\Main\ORM\Data\DataManager $class */
$class = self::getCallingClass();
return $class::add($fields);
}
/**
* Update record.
* @param int $id Record key.
* @param array $fields Fields array.
* @return \Bitrix\Main\Result
*/
public static function update($id, $fields = array())
{
$uid = Manager::getUserId();
$date = new \Bitrix\Main\Type\DateTime;
$charValue = array(
'ACTIVE', 'PUBLIC', 'SITEMAP', 'FOLDER'
);
foreach ($charValue as $code)
{
if (isset($fields[$code]) && $fields[$code] != 'Y')
{
$fields[$code] = 'N';
}
}
if (!isset($fields['MODIFIED_BY_ID']))
{
$fields['MODIFIED_BY_ID'] = $uid;
}
if (!isset($fields['DATE_MODIFY']))
{
$fields['DATE_MODIFY'] = $date;
}
if (!$fields['DATE_MODIFY'])
{
unset($fields['DATE_MODIFY']);
}
/** @var \Bitrix\Main\ORM\Data\DataManager $class */
$class = self::getCallingClass();
return $class::update($id, $fields);
}
/**
* Delete record.
* @param int $id Record key.
* @return \Bitrix\Main\Result
*/
public static function delete($id)
{
/** @var \Bitrix\Main\ORM\Data\DataManager $class */
$class = self::getCallingClass();
return $class::delete($id);
}
/**
* Get records of table.
* @param array $params Params array like ORM style.
* @return \Bitrix\Main\DB\Result
*/
public static function getList($params = array())
{
$class = self::getCallingClass();
if (method_exists($class, 'setAccessFilter'))
{
$params = $class::setAccessFilter($params);
}
//@tmp
if (isset($params['filter']['CHECK_PERMISSIONS']))
{
unset($params['filter']['CHECK_PERMISSIONS']);
}
/** @var \Bitrix\Main\ORM\Data\DataManager $class */
return $class::getList($params);
}
/**
* Register calllback for internal table.
* @param string $code Type of callback.
* @param callable $callback Callback.
* @return void
*/
public static function callback($code, $callback)
{
$class = self::getCallingClass();
if (substr(strtolower($class), -5) == 'table')
{
$class = substr($class, 0, -5);
if ($class)
{
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
'landing',
$class . '::' . $code,
$callback
);
}
}
}
}