1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
statmethod.php
См. документацию.
1<?php
2namespace Bitrix\Rest;
3
4use Bitrix\Main;
5
31
32class StatMethodTable extends Main\Entity\DataManager
33{
34 const METHOD_TYPE_METHOD = 'M';
35 const METHOD_TYPE_EVENT = 'E';
37 const METHOD_TYPE_ROBOT = 'R';
39
40 protected static $methodCache = null;
41
47 public static function getTableName()
48 {
49 return 'b_rest_stat_method';
50 }
51
57 public static function getMap()
58 {
59 return array(
60 'ID' => array(
61 'data_type' => 'integer',
62 'primary' => true,
63 'autocomplete' => true,
64 ),
65 'NAME' => array(
66 'data_type' => 'string',
67 'required' => true,
68 'validation' => array(__CLASS__, 'validateName'),
69 ),
70 'METHOD_TYPE' => array(
71 'data_type' => 'enum',
72 'required' => false,
73 'values' => array(
74 self::METHOD_TYPE_METHOD,
75 self::METHOD_TYPE_EVENT,
76 self::METHOD_TYPE_PLACEMENT,
77 self::METHOD_TYPE_ROBOT,
78 self::METHOD_TYPE_ACTIVITY,
79 ),
80 ),
81 );
82 }
83
88 public static function validateName()
89 {
90 return array(
91 new Main\Entity\Validator\Unique(),
92 );
93 }
94
95 public static function getId($methodName)
96 {
97 static::checkList(array($methodName));
98
99 return static::$methodCache[$methodName];
100 }
101
102 public static function checkList($methodList, $methodType = self::METHOD_TYPE_METHOD)
103 {
104 static::loadFromCache();
105
106 $update = false;
107 foreach($methodList as $method)
108 {
109 if(!array_key_exists($method, static::$methodCache))
110 {
111 static::addMethod($method, $methodType);
112 $update = true;
113 }
114 }
115
116 if($update)
117 {
118 static::loadFromCache(true);
119 }
120
121 }
122
123 protected static function addMethod($methodName, $methodType): void
124 {
126 $helper = $connection->getSqlHelper();
127
128 $sqlTableName = static::getTableName();
129 $sqlMethodName = $helper->forSql($methodName);
130 $sqlMethodType = in_array(
131 $methodType, [
132 static::METHOD_TYPE_METHOD,
133 static::METHOD_TYPE_EVENT,
134 static::METHOD_TYPE_PLACEMENT,
135 static::METHOD_TYPE_ROBOT,
136 static::METHOD_TYPE_ACTIVITY,
137 ]
138 ) ? $methodType : self::METHOD_TYPE_METHOD;
139
140 $query = $helper->getInsertIgnore(
141 $sqlTableName,
142 '(NAME, METHOD_TYPE)',
143 "VALUES ('{$sqlMethodName}', '{$sqlMethodType}')"
144 );
145 $connection->query($query);
146 }
147
148 protected static function loadFromCache($force = false)
149 {
150 $managedCache = Main\Application::getInstance()->getManagedCache();
151 $cacheId = 'stat_method_cache';
152
153 if($force)
154 {
155 static::$methodCache = null;
156 $managedCache->clean($cacheId);
157 }
158
159 if(static::$methodCache === null)
160 {
161 if($managedCache->read(86400, $cacheId))
162 {
163 static::$methodCache = $managedCache->get($cacheId);
164 }
165 else
166 {
167 static::$methodCache = array();
168 $dbRes = static::getList();
169 while($method = $dbRes->fetch())
170 {
171 static::$methodCache[$method['NAME']] = $method['ID'];
172 }
173 $managedCache->set($cacheId, static::$methodCache);
174 }
175 }
176 }
177}
$connection
Определения actionsdefinitions.php:38
static getInstance()
Определения application.php:98
static getConnection($name="")
Определения application.php:638
static getId($methodName)
Определения statmethod.php:95
const METHOD_TYPE_ACTIVITY
Определения statmethod.php:38
static getMap()
Определения statmethod.php:57
const METHOD_TYPE_EVENT
Определения statmethod.php:35
static $methodCache
Определения statmethod.php:40
static checkList($methodList, $methodType=self::METHOD_TYPE_METHOD)
Определения statmethod.php:102
const METHOD_TYPE_PLACEMENT
Определения statmethod.php:36
static addMethod($methodName, $methodType)
Определения statmethod.php:123
static loadFromCache($force=false)
Определения statmethod.php:148
const METHOD_TYPE_ROBOT
Определения statmethod.php:37
const METHOD_TYPE_METHOD
Определения statmethod.php:34
static validateName()
Определения statmethod.php:88
static getTableName()
Определения statmethod.php:47
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$query
Определения get_search.php:11
Определения ufield.php:9
$method
Определения index.php:27
$dbRes
Определения yandex_detail.php:168