|
|
@@ -3,6 +3,7 @@
|
|
|
Lib::loadClass('Core_AclSimpleSchemaBase');
|
|
|
Lib::loadClass('ParseOgcFilter');
|
|
|
Lib::loadClass('Router');
|
|
|
+Lib::loadClass('SchemaVersionUpgrade');
|
|
|
|
|
|
class Schema_SystemObjectStorageAcl extends Core_AclSimpleSchemaBase {
|
|
|
|
|
|
@@ -32,69 +33,10 @@ class Schema_SystemObjectStorageAcl extends Core_AclSimpleSchemaBase {
|
|
|
];
|
|
|
// public $_rootTableName = 'CRM_LISTA_ZASOBOW';
|
|
|
public $_rootTableName = 'CRM_#CACHE_ACL_OBJECT';
|
|
|
- public $_version = '2';
|
|
|
|
|
|
public function __construct($simpleSchema = null) {
|
|
|
parent::__construct($simpleSchema);
|
|
|
-
|
|
|
- $dbVersion = $this->getDBVersion();
|
|
|
- if (!$dbVersion || $dbVersion < 2) { // version is 1 - upgrade to 2
|
|
|
- DB::getPDO()->execSql("
|
|
|
- create table if not exists `{$this->_rootTableName}` (
|
|
|
- `idZasob` int(11) DEFAULT NULL,
|
|
|
- `idDatabase` int(11) NOT NULL,
|
|
|
- `namespace` varchar(255) DEFAULT '',
|
|
|
- `_rootTableName` varchar(255) DEFAULT '',
|
|
|
- `_type` varchar(255) DEFAULT '',
|
|
|
- `hasStruct` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'has structure',
|
|
|
- `isStructInstalled` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'has installed structure',
|
|
|
- `isObjectActive` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'object is active',
|
|
|
- `description` varchar(255) DEFAULT '',
|
|
|
- `primaryKey` varchar(255) DEFAULT '',
|
|
|
- `hasWriteGroupField` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- `hasReadGroupField` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- `hasOwnerField` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- UNIQUE KEY `idZasob` (idZasob),
|
|
|
- UNIQUE KEY `namespace` (namespace),
|
|
|
- KEY `isObjectActive` (isObjectActive)
|
|
|
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
|
|
- ");
|
|
|
- try {
|
|
|
- DB::getPDO()->execSql(" ALTER TABLE `{$this->_rootTableName}` ADD `primaryKey` VARCHAR(255) NOT NULL DEFAULT '' AFTER `description` ");
|
|
|
- } catch (Exception $e) {
|
|
|
- DBG::log($e);
|
|
|
- }
|
|
|
- try {
|
|
|
- DB::getPDO()->execSql(" ALTER TABLE `{$this->_rootTableName}` ADD `hasWriteGroupField` tinyint(1) NOT NULL DEFAULT 0 ");
|
|
|
- } catch (Exception $e) {
|
|
|
- DBG::log($e);
|
|
|
- }
|
|
|
- try {
|
|
|
- DB::getPDO()->execSql(" ALTER TABLE `{$this->_rootTableName}` ADD `hasReadGroupField` tinyint(1) NOT NULL DEFAULT 0 ");
|
|
|
- } catch (Exception $e) {
|
|
|
- DBG::log($e);
|
|
|
- }
|
|
|
- try {
|
|
|
- DB::getPDO()->execSql(" ALTER TABLE `{$this->_rootTableName}` ADD `hasOwnerField` tinyint(1) NOT NULL DEFAULT 0 ");
|
|
|
- } catch (Exception $e) {
|
|
|
- DBG::log($e);
|
|
|
- }
|
|
|
-
|
|
|
- $this->_fixCoreTablesStructInstalled();
|
|
|
-
|
|
|
- $dbVersion = 2; $this->updateDBVersion($dbVersion);
|
|
|
- }
|
|
|
-
|
|
|
- // if ($dbVersion < 3) {
|
|
|
- // // sql ...
|
|
|
- // $dbVersion = 3; $this->updateDBVersion($dbVersion);
|
|
|
- // }
|
|
|
- }
|
|
|
- function getDBVersion() {
|
|
|
- return (int)DB::getPDO()->fetchValue(" select `CONF_VAL` from `CRM_CONFIG` where `CONF_KEY` = 'Schema_SystemObjectStorageAcl__version' ");
|
|
|
- }
|
|
|
- function updateDBVersion($version) {
|
|
|
- DB::getPDO()->execSql(" REPLACE INTO CRM_CONFIG (`CONF_KEY`,`CONF_VAL`) VALUES ('Schema_SystemObjectStorageAcl__version', '{$version}') ");
|
|
|
+ SchemaVersionUpgrade::upgradeSchema();
|
|
|
}
|
|
|
|
|
|
public function updateCache($idDatabase = null) {
|
|
|
@@ -348,56 +290,7 @@ class Schema_SystemObjectStorageAcl extends Core_AclSimpleSchemaBase {
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
- $this->_fixCoreTablesStructInstalled();
|
|
|
- }
|
|
|
-
|
|
|
- function _fixCoreTablesStructInstalled() { // Fix hasWriteGroupField, hasReadGroupField, hasOwnerField
|
|
|
- // TODO: mv to updateCache function - required after clear cache tables
|
|
|
- // public function hasWriteGroupField() { // return $this->hasField('A_ADM_COMPANY');
|
|
|
- // public function hasReadGroupField() { // return $this->hasField('A_CLASSIFIED');
|
|
|
- // public function hasOwnerField() { // return $this->hasField('L_APPOITMENT_USER');
|
|
|
- DB::getPDO()->execSql("
|
|
|
- CREATE TABLE IF NOT EXISTS `tmp_cache_acl_fields` (
|
|
|
- `table_name` varchar(64) NOT NULL DEFAULT '',
|
|
|
- `column_name` varchar(64) NOT NULL DEFAULT '',
|
|
|
- UNIQUE KEY `table_2` (`table_name`,`column_name`),
|
|
|
- KEY `table` (`table_name`)
|
|
|
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
|
|
- ");
|
|
|
- DB::getPDO()->execSql("
|
|
|
- CREATE TABLE IF NOT EXISTS `tmp_cache_acl_group_fields` (
|
|
|
- `table_name` varchar(64) NOT NULL DEFAULT '',
|
|
|
- `has_write` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- `has_read` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- `has_owner` tinyint(1) NOT NULL DEFAULT 0,
|
|
|
- UNIQUE KEY `table_name` (`table_name`)
|
|
|
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
|
|
- ");
|
|
|
- DB::getPDO()->execSql(" TRUNCATE TABLE `tmp_cache_acl_fields` ");
|
|
|
- DB::getPDO()->execSql(" TRUNCATE TABLE `tmp_cache_acl_group_fields` ");
|
|
|
- DB::getPDO()->execSql("
|
|
|
- insert into tmp_cache_acl_group_fields(table_name, has_write, has_read, has_owner)
|
|
|
- select c.TABLE_NAME as table_name
|
|
|
- , IF(c.COLUMN_NAME = 'A_ADM_COMPANY', 1, 0) as has_write
|
|
|
- , IF(c.COLUMN_NAME = 'A_CLASSIFIED', 1, 0) as has_read
|
|
|
- , IF(c.COLUMN_NAME = 'L_APPOITMENT_USER', 1, 0) as has_owner
|
|
|
- from information_schema.COLUMNS c
|
|
|
- where c.TABLE_SCHEMA = 'SES_USERS2'
|
|
|
- and c.COLUMN_NAME in ('A_ADM_COMPANY', 'A_CLASSIFIED', 'L_APPOITMENT_USER')
|
|
|
- ON DUPLICATE KEY UPDATE
|
|
|
- has_write = has_write + IF(c.COLUMN_NAME = 'A_ADM_COMPANY', 1, 0),
|
|
|
- has_read = has_read + IF(c.COLUMN_NAME = 'A_CLASSIFIED', 1, 0),
|
|
|
- has_owner = has_owner + IF(c.COLUMN_NAME = 'L_APPOITMENT_USER', 1, 0)
|
|
|
- ");
|
|
|
-
|
|
|
- DB::getPDO()->execSql("
|
|
|
- update `CRM_#CACHE_ACL_OBJECT` c
|
|
|
- join `tmp_cache_acl_group_fields` t on (t.table_name = c._rootTableName)
|
|
|
- set
|
|
|
- c.hasWriteGroupField = t.has_write,
|
|
|
- c.hasReadGroupField = t.has_read,
|
|
|
- c.hasOwnerField = t.has_owner
|
|
|
- ");
|
|
|
+ SchemaVersionUpgrade::fixSystemObjectCoreTablesStructInstalled();
|
|
|
}
|
|
|
|
|
|
public function _parseWhere($params = []) {
|