%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sender/lib/internals/model/ |
Current File : /home/bitrix/www/bitrix/modules/sender/lib/internals/model/counter.php |
<?php namespace Bitrix\Sender\Internals\Model; use Bitrix\Main\DB; use Bitrix\Main\Entity; use Bitrix\Main\Type\DateTime; /** * Class CounterTable * @package Bitrix\Sender\Internals\Model **/ class CounterTable extends Entity\DataManager { /** * Returns DB table name for entity. * * @return string */ public static function getTableName() { return 'b_sender_counter'; } /** * Returns entity map definition. * * @return array */ public static function getMap() { return [ 'CODE' =>[ 'data_type' => 'string', 'primary' => true, 'required' => true, ], 'VALUE' => [ 'data_type' => 'integer', 'required' => false ], 'DATE_UPDATE' => array( 'data_type' => 'datetime', 'default_value' => new DateTime(), ), ]; } /** * Merge data. * * @param array $insert Insert data. * @param array $update Update data. * @return void */ public static function mergeData(array $insert, array $update) { $entity = static::getEntity(); $connection = $entity->getConnection(); $helper = $connection->getSqlHelper(); $sql = $helper->prepareMerge($entity->getDBTableName(), $entity->getPrimaryArray(), $insert, $update); $sql = current($sql); if($sql <> '') { $connection->queryExecute($sql); $entity->cleanCache(); } } /** * Increment value. * * @param string $code Code. * @param int $increment Increment. * @return void */ public static function incrementByCode($code, $increment = 1) { $date = new DateTime(); $insert = ['CODE' => $code, 'VALUE' => $increment, 'DATE_UPDATE' => $date]; $update = [ 'VALUE' => new DB\SqlExpression("?# + ?i", 'VALUE', $increment), 'DATE_UPDATE' => $date ]; static::mergeData($insert, $update); } /** * Get value by code. * * @param string $code Code. * @return int */ public static function getValueByCode($code) { $row = static::getRow(['filter' => ['=CODE' => $code], 'cache' => ['ttl' => 36000]]); return intval($row ? $row['VALUE'] : 0); } /** * Get value by code. * * @param string $code Code. * @return bool */ public static function resetValueByCode($code) { return static::delete(['CODE' => $code])->isSuccess(); } }