Bitrix-D7  20.0.0
Класс SitemapIblockTable
Граф наследования:SitemapIblockTable:

Открытые статические члены

static getTableName ()
 Returns DB table name for entity. Подробнее...
 
static getMap ()
 Returns entity map definition. Подробнее...
 
static clearBySitemap ($sitemapId)
 Clears all iblock links on sitemap settings deletion. Подробнее...
 
static getByIblock ($fields, $itemType)
 Returns array of data for sitemap update due to some iblock action. Подробнее...
 
static checkSection ($sectionId, $sectionSettings, $defaultValue)
 Checks if section $sectionId should be added to sitemap. Подробнее...
 

Поля данных

const ACTIVE = 'Y'
 
const INACTIVE = 'N'
 
const TYPE_ELEMENT = 'E'
 
const TYPE_SECTION = 'S'
 

Статические защищенные данные

static $iblockCache = array()
 

Подробное описание

См. определение в файле sitemapiblock.php строка 13

Методы

◆ checkSection()

static checkSection (   $sectionId,
  $sectionSettings,
  $defaultValue 
)
static

Checks if section $sectionId should be added to sitemap.

Аргументы
int$sectionIdSection ID.
array$sectionSettingsSitemap section settings array.
bool$defaultValueDefault value for situation of settings absence.
Возвращает
bool

См. определение в файле sitemapiblock.php строка 187

188  {
189  $value = $defaultValue;
190 
191  if(is_array($sectionSettings) && count($sectionSettings) > 0)
192  {
193  while ($sectionId > 0)
194  {
195  if(isset($sectionSettings[$sectionId]))
196  {
197  $value = $sectionSettings[$sectionId];
198  break;
199  }
200 
201  $dbRes = \CIBlockSection::getList(array(), array('ID' => $sectionId), false, array('ID', 'IBLOCK_SECTION_ID'));
202  $section = $dbRes->fetch();
203 
204  $sectionId = $section["IBLOCK_SECTION_ID"];
205  }
206  }
207 
208  return $value === 'Y';
209  }

◆ clearBySitemap()

static clearBySitemap (   $sitemapId)
static

Clears all iblock links on sitemap settings deletion.

Аргументы
int$sitemapIdSitemap settings ID.
Возвращает
void

См. определение в файле sitemapiblock.php строка 74

75  {
77  $query = $connection->query("
78 DELETE
79 FROM ".self::getTableName()."
80 WHERE SITEMAP_ID='".intval($sitemapId)."'
81 ");
82  }

◆ getByIblock()

static getByIblock (   $fields,
  $itemType 
)
static

Returns array of data for sitemap update due to some iblock action.

Аргументы
array$fieldsIblock element or section fields array.
string$itemTypeSitemapIblockTable::TYPE_ELEMENT || SitemapIblockTable::TYPE_SECTION.
Возвращает
array Array of sitemap settings
Исключения

См. определение в файле sitemapiblock.php строка 93

94  {
95  $sitemaps = array();
96 
97  if(!isset(self::$iblockCache[$fields['IBLOCK_ID']]))
98  {
99  self::$iblockCache[$fields['IBLOCK_ID']] = array();
100 
101  $dbRes = self::getList(array(
102  'filter' => array(
103  'IBLOCK_ID' => $fields['IBLOCK_ID']
104  ),
105  'select' => array('SITEMAP_ID',
106  'SITE_ID' => 'SITEMAP.SITE_ID', 'SITEMAP_SETTINGS' => 'SITEMAP.SETTINGS',
107  'IBLOCK_CODE' => 'IBLOCK.CODE', 'IBLOCK_XML_ID' => 'IBLOCK.XML_ID',
108  'DETAIL_PAGE_URL' => 'IBLOCK.DETAIL_PAGE_URL',
109  'SECTION_PAGE_URL' => 'IBLOCK.SECTION_PAGE_URL',
110  ),
111  ));
112 
113  while($res = $dbRes->fetch())
114  {
115  self::$iblockCache[$fields['IBLOCK_ID']][] = $res;
116  }
117  }
118 
119  foreach(self::$iblockCache[$fields['IBLOCK_ID']] as $res)
120  {
121  $sitemapSettings = unserialize($res['SITEMAP_SETTINGS']);
122 
123  $add = false;
124 
125  if($itemType == self::TYPE_SECTION)
126  {
127  $add = self::checkSection(
128  $fields['ID'],
129  $sitemapSettings['IBLOCK_SECTION_SECTION'][$fields['IBLOCK_ID']],
130  $sitemapSettings['IBLOCK_SECTION'][$fields['IBLOCK_ID']]
131  );
132  }
133  else
134  {
135  if(is_array($fields['IBLOCK_SECTION']) && count($fields['IBLOCK_SECTION']) > 0)
136  {
137  foreach($fields['IBLOCK_SECTION'] as $sectionId)
138  {
139  $add = self::checkSection(
140  $sectionId,
141  $sitemapSettings['IBLOCK_SECTION_ELEMENT'][$fields['IBLOCK_ID']],
142  $sitemapSettings['IBLOCK_ELEMENT'][$fields['IBLOCK_ID']]
143  );
144 
145  if($add)
146  {
147  break;
148  }
149  }
150  }
151  else
152  {
153  $add = $sitemapSettings['IBLOCK_ELEMENT'][$fields['IBLOCK_ID']] == 'Y';
154  }
155  }
156 
157  if($add)
158  {
159  $sitemaps[] = array(
160  'IBLOCK_CODE' => $res['IBLOCK_CODE'],
161  'IBLOCK_XML_ID' => $res['IBLOCK_XML_ID'],
162  'DETAIL_PAGE_URL' => $res['DETAIL_PAGE_URL'],
163  'SECTION_PAGE_URL' => $res['SECTION_PAGE_URL'],
164  'SITE_ID' => $res['SITE_ID'],
165  'PROTOCOL' => $sitemapSettings['PROTO'] == 1 ? 'https' : 'http',
166  'DOMAIN' => $sitemapSettings['DOMAIN'],
167  'ROBOTS' => $sitemapSettings['ROBOTS'],
168  'SITEMAP_DIR' => $sitemapSettings['DIR'],
169  'SITEMAP_FILE' => $sitemapSettings['FILENAME_INDEX'],
170  'SITEMAP_FILE_IBLOCK' => $sitemapSettings['FILENAME_IBLOCK'],
171  );
172  }
173  }
174 
175  return $sitemaps;
176  }

◆ getMap()

static getMap ( )
static

Returns entity map definition.

Возвращает
array

См. определение в файле sitemapiblock.php строка 38

39  {
40  $fieldsMap = array(
41  'ID' => array(
42  'data_type' => 'integer',
43  'primary' => true,
44  'autocomplete' => true,
45  ),
46  'SITEMAP_ID' => array(
47  'data_type' => 'integer',
48  'required' => true,
49  ),
50  'IBLOCK_ID' => array(
51  'data_type' => 'integer',
52  'required' => true,
53  ),
54  'SITEMAP' => array(
55  'data_type' => 'Bitrix\Seo\SitemapTable',
56  'reference' => array('=this.SITEMAP_ID' => 'ref.ID'),
57  ),
58  'IBLOCK' => array(
59  'data_type' => 'Bitrix\Iblock\IblockTable',
60  'reference' => array('=this.IBLOCK_ID' => 'ref.ID'),
61  ),
62  );
63 
64  return $fieldsMap;
65  }

◆ getTableName()

static getTableName ( )
static

Returns DB table name for entity.

Возвращает
string

См. определение в файле sitemapiblock.php строка 28

29  {
30  return 'b_seo_sitemap_iblock';
31  }

Поля

◆ $iblockCache

$iblockCache = array()
staticprotected

См. определение в файле sitemapiblock.php строка 21

◆ ACTIVE

const ACTIVE = 'Y'

См. определение в файле sitemapiblock.php строка 15

◆ INACTIVE

const INACTIVE = 'N'

См. определение в файле sitemapiblock.php строка 16

◆ TYPE_ELEMENT

const TYPE_ELEMENT = 'E'

См. определение в файле sitemapiblock.php строка 18

◆ TYPE_SECTION

const TYPE_SECTION = 'S'

См. определение в файле sitemapiblock.php строка 19


Объявления и описания членов класса находятся в файле:
Bitrix\Main\Application\getConnection
static getConnection($name="")
Static method returns database connection for the specified name.
Definition: main/lib/application.php:381
Bitrix\Seo\SitemapIblockTable\checkSection
static checkSection($sectionId, $sectionSettings, $defaultValue)
Checks if section $sectionId should be added to sitemap.
Definition: sitemapiblock.php:187