Current Path : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/landing/lib/ |
Current File : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/modules/landing/lib/urlrewrite.php |
<?php namespace Bitrix\Landing; use Bitrix\Landing\Internals\SiteTable; use \Bitrix\Landing\Internals\UrlRewriteTable; class UrlRewrite { /** * Set rule for the site. * @param int $siteId Site id. * @param string $rule Rule. * @param int $landingId Landing id. If empty then remove. * @return void */ public static function set($siteId, $rule, $landingId = null) { $rule = trim($rule); // check for exist $check = SiteTable::getList([ 'select' => [ 'ID' ], 'filter' => [ 'ID' => $siteId, '=DELETED' => ['Y', 'N'] ] ])->fetch(); if (!$check) { return; } if ($landingId) { $check = SiteTable::getList([ 'select' => [ 'ID' ], 'filter' => [ 'ID' => $landingId, '=DELETED' => ['Y', 'N'] ] ])->fetch(); if (!$check) { return; } } // set or unset $filter = [ 'SITE_ID' => $siteId, '=RULE' => $rule ]; if ($landingId) { $filter['!LANDING_ID'] = $landingId; } $res = UrlRewriteTable::getList([ 'select' => [ 'ID' ], 'filter' => $filter ]); if ($row = $res->fetch()) { if ($landingId) { UrlRewriteTable::update($row['ID'], [ 'LANDING_ID' => $landingId ]); } else { UrlRewriteTable::delete( $row['ID'] ); } } else if ($landingId) { UrlRewriteTable::add([ 'SITE_ID' => $siteId, 'RULE' => $rule, 'LANDING_ID' => $landingId ]); } } /** * Unset rule for the site. * @param int $siteId Site id. * @param string $rule Rule. * @return void */ public static function remove($siteId, $rule) { self::set($siteId, $rule); } /** * Matching rule for url. * @param int $siteId Site id. * @param string $url Some url. * @return int Landing id. */ public static function matchUrl($siteId, $url) { // } /** * Clear rules for one site. * @param int $siteId Site id. * @return void */ public static function removeForSite($siteId) { $res = UrlRewriteTable::getList([ 'select' => [ 'ID' ], 'filter' => [ 'SITE_ID' => $siteId ] ]); while ($row = $res->fetch()) { UrlRewriteTable::delete($row['ID']); } } /** * Clear rules for one site. * @param int $landingId Landing id. * @return void */ public static function removeForLanding($landingId) { $res = UrlRewriteTable::getList([ 'select' => [ 'ID' ], 'filter' => [ 'LANDING_ID' => $landingId ] ]); while ($row = $res->fetch()) { UrlRewriteTable::delete($row['ID']); } } }