Просмотр исходного кода

Upgrade script from 13.0.0-B1 to 13.0.0-B2

Alex Trofimov 4 лет назад
Родитель
Сommit
01112df5cf

+ 18 - 0
upgrade/files/13.0.0.B1-13.0.0.B2/files/inc/classes/BxDolPage.php

@@ -299,6 +299,21 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
         if (!$a || empty($a[0]))
             return false;
 
+        // check page URI rewrite redirect
+        $aSeoUriRewrites = BxDolPageQuery::getSeoUriRewrites();
+        if (isset($aSeoUriRewrites[$a[0]])) {
+            unset($_GET['_q']);
+            $a[0] = $aSeoUriRewrites[$a[0]];
+            $sUrl = BX_DOL_URL_ROOT . bx_append_url_params(mb_strtolower(implode('/', $a)), $_GET);
+            header('Location:' . $sUrl, true, 301);
+            exit;            
+        }
+
+        // check page URI rewrite
+        $aSeoUriRewritesInv = array_flip($aSeoUriRewrites);
+        if (isset($aSeoUriRewritesInv[$a[0]]))
+            $a[0] = $aSeoUriRewritesInv[$a[0]];
+
         // get page
         $sPageName = BxDolPageQuery::getPageObjectNameByURI($a[0]);
         $aPage = $sPageName ? BxDolPageQuery::getPageObject($sPageName) : false;
@@ -367,6 +382,9 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
             return false;
 
         $sSeoPageUri = $sPageUri;
+        $aSeoUriRewrites = BxDolPageQuery::getSeoUriRewrites();
+        if (isset($aSeoUriRewrites[$sSeoPageUri]))
+            $sSeoPageUri = $aSeoUriRewrites[$sSeoPageUri];
 
         if ($sSeoParamName && $sSeoParamValue) { // process page with SEO param
             $sPageName = BxDolPageQuery::getPageObjectNameByURI($sPageUri);

+ 186 - 0
upgrade/files/13.0.0.B1-13.0.0.B2/files/inc/classes/BxDolPageQuery.php

@@ -0,0 +1,186 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaCore UNA Core
+ * @{
+ */
+
+/**
+ * Database queries for pages.
+ * @see BxDolPage
+ */
+class BxDolPageQuery extends BxDolDb
+{
+    protected $_aObject;
+
+    public function __construct($aObject)
+    {
+        parent::__construct();
+        $this->_aObject = $aObject;
+    }
+
+    static public function getPageObject ($sObject)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT `o`.*, `l`.`template`, `l`.`cells_number` FROM `sys_objects_page` AS `o` INNER JOIN `sys_pages_layouts` AS `l` ON (`l`.`id` = `o`.`layout_id`) WHERE `o`.`object` = ?", $sObject);
+        $aObject = $oDb->getRow($sQuery);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        return $aObject;
+    }
+
+    static public function getPageObjectNameByURI($sURI, $sModule = false)
+    {
+        $oDb = BxDolDb::getInstance();
+        $a = array('uri' => $sURI);
+        $sQuery = "SELECT `object` FROM `sys_objects_page` WHERE `uri` = :uri";
+        if ($sModule) {
+            $a['module'] = $sModule;
+            $sQuery .= " AND `module` = :module";
+        }
+        return $oDb->getOne($sQuery, $a);
+    }
+    
+    static public function getContentInfoObjectNameByURI($sURI)
+    {
+        $oDb = BxDolDb::getInstance();
+        $a = array('uri' => $sURI);
+        $sQuery = "SELECT `module`, `content_info` FROM `sys_objects_page` WHERE `uri` = :uri";
+        $aRow = $oDb->getRow($sQuery, $a);
+        if ($aRow['content_info'] != '') 
+            return $aRow['content_info'];
+        
+        return $aRow['module'];
+    }
+
+	static public function getPageTriggers($sTriggerName)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT * FROM `sys_pages_blocks` WHERE `object` = ? ORDER BY `id` ASC", $sTriggerName);
+        return $oDb->getAll($sQuery);
+    }
+
+    static public function addPageBlockToPage($aPageBlock)
+    {
+        $oDb = BxDolDb::getInstance();
+
+        if (empty($aPageBlock['object']))
+            return false;
+
+        // check if block already exists, 
+        // so the block position will not reset when it's unnecessary
+        $sQuery = $oDb->prepare("SELECT `id` FROM `sys_pages_blocks` WHERE `object` = ? AND `type` = ? AND `title` = ?", $aPageBlock['object'], $aPageBlock['type'], $aPageBlock['title']);
+        if ($oDb->getOne($sQuery))
+            return true;
+        
+        // get order
+        if (empty($aPageBlock['order'])) {
+        	$iCellId = !empty($aPageBlock['cell_id']) ? (int)$aPageBlock['cell_id'] : 1;
+            $sQuery = $oDb->prepare("SELECT `order` FROM `sys_pages_blocks` WHERE `object` = ? AND `cell_id` = ? AND `active` = 1 ORDER BY `order` DESC LIMIT 1", $aPageBlock['object'], $iCellId);
+            $aPageBlock['order'] = (int)$oDb->getOne($sQuery) + 1;
+        }
+
+        // add new block
+        unset($aPageBlock['id']);
+        return $oDb->query("INSERT INTO `sys_pages_blocks` SET " . $oDb->arrayToSQL($aPageBlock));
+    }
+
+    static public function getPageType($iId)
+    {
+        return BxDolDb::getInstance()->getRow("SELECT * FROM `sys_pages_types` WHERE `id`=:id LIMIT 1", [
+            'id' => $iId
+        ]);
+    }
+
+    static public function getPageTypes()
+    {
+        return BxDolDb::getInstance()->getAll("SELECT * FROM `sys_pages_types` WHERE 1");
+    }
+
+    public function getPageBlocks()
+    {
+        $aRet = array ();
+        for ($i = 1 ; $i <= $this->_aObject['cells_number'] ; ++$i) {
+            $sQuery = $this->prepare("SELECT * FROM `sys_pages_blocks` WHERE `object` = ? AND `cell_id` = ? AND `active` = 1 ORDER BY `order` ASC", $this->_aObject['object'], $i);
+            $aRet['cell_'.$i] = $this->getAll($sQuery);
+        }
+        return $aRet;
+    }
+
+    public function getPageBlock($iBlockId)
+    {
+        $sQuery = $this->prepare("SELECT * FROM `sys_pages_blocks` WHERE `object` = ? AND `id` = ?", $this->_aObject['object'], $iBlockId);
+        return $this->getRow($sQuery);
+    }
+
+    public function getPageBlockContent($iId)
+    {
+        $sQuery = $this->prepare("SELECT `content` FROM `sys_pages_blocks` WHERE `id` = ?", $iId);
+        return $this->getOne($sQuery);
+    }
+
+    public function getPageBlockContentPlaceholder($iId)
+    {
+        $sQuery = $this->prepare("SELECT `id`, `module`, `template` FROM `sys_pages_content_placeholders` WHERE `id` = ?", $iId);
+        return $this->getRow($sQuery);
+    }
+
+    static public function getSeoUriRewrites()
+    {
+        $oDb = BxDolDb::getInstance();
+        return $oDb->fromCache('sys_seo_uri_rewrites', 'getPairs', 'SELECT `uri_orig`, `uri_rewrite` FROM `sys_seo_uri_rewrites`', 'uri_orig', 'uri_rewrite');
+    }
+
+    static public function getSeoLink($sModule, $sPageUri, $aCond = [])
+    {
+        $oDb = BxDolDb::getInstance();
+        $sWhere = " 1 ";
+        if ($aCond)
+            $sWhere = $oDb->arrayToSQL($aCond, " AND ");
+        return $oDb->getRow("SELECT `uri`, `param_name`, `param_value` FROM `sys_seo_links` WHERE " . $sWhere . " AND `module` = :module AND `page_uri` = :page_uri", [
+            'module' => $sModule,
+            'page_uri' => $sPageUri,
+        ]);
+    }
+
+    static public function insertSeoLink($sModule, $sPageUri, $sSeoParamName, $sSeoParamValue, $sUri)
+    {
+        return BxDolDb::getInstance()->query("INSERT INTO `sys_seo_links` SET `module` = :module, `page_uri` = :page_uri, `param_name` = :param_name, `param_value` = :param_value, `uri` = :uri, `added` = :ts", [
+            'module' => $sModule,
+            'page_uri' => $sPageUri,
+            'param_name' => $sSeoParamName,
+            'param_value' => $sSeoParamValue,
+            'uri' => $sUri,
+            'ts' => time(),
+        ]);
+    }
+
+    static public function deleteSeoLink($sModule, $sContentInfoObject, $sId)
+    {
+        return BxDolDb::getInstance()->query("DELETE FROM `sys_seo_links` WHERE `module` = :module AND `page_uri` IN (SELECT `uri` FROM `sys_objects_page` WHERE `module` = :content_info OR `content_info` = :content_info) AND `param_value` = :param_value", [
+            'module' => $sModule,
+            'content_info' => $sContentInfoObject,
+            'param_value' => $sId,
+        ]);
+    }
+
+    static public function deleteSeoLinkByParam($sParamName, $sId)
+    {
+        return BxDolDb::getInstance()->query("DELETE FROM `sys_seo_links` WHERE `param_name` = :param_name AND `param_value` = :param_value", [
+            'param_name' => $sParamName,
+            'param_value' => $sId,
+        ]);
+    }
+
+    static public function deleteSeoLinkByModule($sModule)
+    {
+        return BxDolDb::getInstance()->query("DELETE FROM `sys_seo_links` WHERE `module` = :module", [
+            'module' => $sModule,
+        ]);
+    }
+}
+
+/** @} */

+ 1 - 1
upgrade/files/13.0.0.B1-13.0.0.B2/files/plugins/autoload.php

@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62::getLoader();
+return ComposerAutoloaderInitb3256b538e59582ac5c4d876ff129efe::getLoader();

+ 15 - 0
upgrade/files/13.0.0.B1-13.0.0.B2/files/plugins/composer/autoload_files.php

@@ -0,0 +1,15 @@
+<?php
+
+// autoload_files.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
+    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+    'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
+    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
+    '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+    'c65d09b6820da036953a371c8c73a9b1' => $vendorDir . '/facebook/graph-sdk/src/Facebook/polyfills.php',
+);

+ 7 - 7
upgrade/files/13.0.0.B1-13.0.0.B2/files/plugins/composer/autoload_real.php

@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62
+class ComposerAutoloaderInitb3256b538e59582ac5c4d876ff129efe
 {
     private static $loader;
 
@@ -24,15 +24,15 @@ class ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInitb3256b538e59582ac5c4d876ff129efe', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
-        spl_autoload_unregister(array('ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInitb3256b538e59582ac5c4d876ff129efe', 'loadClassLoader'));
 
         $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
         if ($useStaticLoader) {
             require __DIR__ . '/autoload_static.php';
 
-            call_user_func(\Composer\Autoload\ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::getInitializer($loader));
+            call_user_func(\Composer\Autoload\ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::getInitializer($loader));
         } else {
             $map = require __DIR__ . '/autoload_namespaces.php';
             foreach ($map as $namespace => $path) {
@@ -53,19 +53,19 @@ class ComposerAutoloaderInitaf17cf87f5bb62f386b8dd43aae5dd62
         $loader->register(true);
 
         if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::$files;
+            $includeFiles = Composer\Autoload\ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::$files;
         } else {
             $includeFiles = require __DIR__ . '/autoload_files.php';
         }
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequireaf17cf87f5bb62f386b8dd43aae5dd62($fileIdentifier, $file);
+            composerRequireb3256b538e59582ac5c4d876ff129efe($fileIdentifier, $file);
         }
 
         return $loader;
     }
 }
 
-function composerRequireaf17cf87f5bb62f386b8dd43aae5dd62($fileIdentifier, $file)
+function composerRequireb3256b538e59582ac5c4d876ff129efe($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         require $file;

+ 6 - 6
upgrade/files/13.0.0.B1-13.0.0.B2/files/plugins/composer/autoload_static.php

@@ -4,15 +4,15 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62
+class ComposerStaticInitb3256b538e59582ac5c4d876ff129efe
 {
     public static $files = array (
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
         '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
-        'c65d09b6820da036953a371c8c73a9b1' => __DIR__ . '/..' . '/facebook/graph-sdk/src/Facebook/polyfills.php',
         '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+        'c65d09b6820da036953a371c8c73a9b1' => __DIR__ . '/..' . '/facebook/graph-sdk/src/Facebook/polyfills.php',
     );
 
     public static $prefixLengthsPsr4 = array (
@@ -214,10 +214,10 @@ class ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::$prefixesPsr0;
-            $loader->classMap = ComposerStaticInitaf17cf87f5bb62f386b8dd43aae5dd62::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::$prefixesPsr0;
+            $loader->classMap = ComposerStaticInitb3256b538e59582ac5c4d876ff129efe::$classMap;
 
         }, null, ClassLoader::class);
     }

+ 2 - 2
upgrade/files/13.0.0.B1-13.0.0.B2/files/plugins/composer/installed.php

@@ -5,7 +5,7 @@
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => '6dece6cd8d7dd59c6e9e76634e45fa4c2b0f12b4',
+        'reference' => 'aee684bbc74b65df1c20fbe9fbdc91a73939e103',
         'name' => 'unaio/una',
         'dev' => true,
     ),
@@ -332,7 +332,7 @@
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => '6dece6cd8d7dd59c6e9e76634e45fa4c2b0f12b4',
+            'reference' => 'aee684bbc74b65df1c20fbe9fbdc91a73939e103',
             'dev_requirement' => false,
         ),
         'wikimedia/less.php' => array(

+ 2 - 1
upgrade/files/13.0.0.B1-13.0.0.B2/files/template/scripts/BxBaseSearchResult.php

@@ -400,7 +400,8 @@ class BxBaseSearchResult extends BxDolSearchResult
      */
     function applyContainerClass ()
     {
-        return implode(' ', $this->aContainerClasses) . ' '. str_replace('_', '-', $this->getMain()->getName()) . '-wrapper';
+        $sModule = $this->getMain() ? $this->getMain()->getName() : 'sys';
+        return implode(' ', $this->aContainerClasses) . ' '. str_replace('_', '-', $sModule) . '-wrapper';
     }
 
     /**