![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Module/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Module; use \Magento\Framework\Model\ResourceModel\Db\AbstractDb; /** * Resource Model * * @deprecated 102.0.0 Declarative schema and data patches replace old functionality and setup_module table * So all resources related to this table, will be deprecated since 2.3.0 */ class ModuleResource extends AbstractDb implements ResourceInterface { /** * Database versions * * @var array */ protected static $schemaVersions = null; /** * Resource data versions cache array * * @var array */ protected static $dataVersions = null; /** * Define main table * * @return void */ protected function _construct() { $this->_init('setup_module', 'module'); } /** * Fill static versions arrays. * This routine fetches Db and Data versions of at once to optimize sql requests. However, when upgrading, it's * possible that 'data' column will be created only after all Db installs are passed. So $neededType contains * information on main purpose of calling this routine, and even when 'data' column is absent - it won't require * reissuing new sql just to get 'db' version of module. * * @param string $needType Can be 'db' or 'data' * @return $this */ protected function _loadVersion($needType) { if ($needType == 'db' && self::$schemaVersions === null || $needType == 'data' && self::$dataVersions === null ) { self::$schemaVersions = []; // Db version column always exists self::$dataVersions = null; // Data version array will be filled only if Data column exist if ($this->getConnection()->isTableExists($this->getMainTable())) { $select = $this->getConnection()->select()->from($this->getMainTable(), '*'); $rowset = $this->getConnection()->fetchAll($select); foreach ($rowset as $row) { self::$schemaVersions[$row['module']] = $row['schema_version']; if (array_key_exists('data_version', $row)) { if (self::$dataVersions === null) { self::$dataVersions = []; } self::$dataVersions[$row['module']] = $row['data_version']; } } } } return $this; } /** * {@inheritdoc} */ public function getDbVersion($moduleName) { if (!$this->getConnection()) { return false; } $this->_loadVersion('db'); return self::$schemaVersions[$moduleName] ?? false; } /** * {@inheritdoc} */ public function setDbVersion($moduleName, $version) { $dbModuleInfo = ['module' => $moduleName, 'schema_version' => $version]; if ($this->getDbVersion($moduleName)) { self::$schemaVersions[$moduleName] = $version; return $this->getConnection()->update( $this->getMainTable(), $dbModuleInfo, ['module = ?' => $moduleName] ); } else { self::$schemaVersions[$moduleName] = $version; return $this->getConnection()->insert($this->getMainTable(), $dbModuleInfo); } } /** * {@inheritdoc} */ public function getDataVersion($moduleName) { if (!$this->getConnection()) { return false; } $this->_loadVersion('data'); return self::$dataVersions[$moduleName] ?? false; } /** * {@inheritdoc} */ public function setDataVersion($moduleName, $version) { $data = ['module' => $moduleName, 'data_version' => $version]; if ($this->getDbVersion($moduleName) || $this->getDataVersion($moduleName)) { self::$dataVersions[$moduleName] = $version; $this->getConnection()->update($this->getMainTable(), $data, ['module = ?' => $moduleName]); } else { self::$dataVersions[$moduleName] = $version; $this->getConnection()->insert($this->getMainTable(), $data); } } /** * Flush all class cache * * @deprecated 102.0.0 This method was added as temporary solution, to increase modularity: * Because before new modules appears in resource only on next bootstrap * @return void */ public static function flush() { self::$dataVersions = null; self::$schemaVersions = []; } }