From 253e8d8d4851cb526f86454a58e74f98bf9952fb Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Tue, 30 Apr 2019 17:27:26 +0200 Subject: [PATCH] FEAT #9419 TIME 1:00 Remove entity_path from table, only available for fusion --- .../class/class_manage_entities_Abstract.php | 62 +------------------ .../datasources/letterbox_attachment.php | 1 + rest/schema.json | 5 -- sql/develop.sql | 1 + sql/structure.sql | 1 - .../entity/controllers/EntityController.php | 2 +- src/app/entity/models/EntityModelAbstract.php | 27 +++++++- 7 files changed, 29 insertions(+), 70 deletions(-) diff --git a/modules/entities/class/class_manage_entities_Abstract.php b/modules/entities/class/class_manage_entities_Abstract.php index 4f275b56b63..913bb8b2c03 100755 --- a/modules/entities/class/class_manage_entities_Abstract.php +++ b/modules/entities/class/class_manage_entities_Abstract.php @@ -1078,36 +1078,7 @@ abstract class entity_Abstract extends functions } else { - if ($_SESSION['m_admin']['entity']['parent'] == '') { - $entityPath = '/' . $_SESSION['m_admin']['entity']['entityId']; - } else { - require_once 'modules/entities/class/EntityControler.php'; - $entityCtrl = new EntityControler(); - $entityTree = $entityCtrl->getEntityParentTreeOf($_SESSION['m_admin']['entity']['parent']); - - if (count($entityTree) > 0) { - for ($cptTree = 0;$cptTree<count($entityTree);$cptTree++) { - $stmt = $db->query("select entity_id from entities where entity_id = ?",array($entityTree[$cptTree]->__get('parent_entity_id'))); - $resShortLabel = $stmt->fetchObject(); - if ($resShortLabel->entity_id <> '') { - $entityIdForTree = functions::show_string($resShortLabel->entity_id); - } else { - $entityIdForTree = $entityTree[$cptTree]->__get('parent_entity_id'); - } - $entityPath .= $entityIdForTree . '/'; - } - } - $stmt = $db->query("select entity_id from entities where entity_id = ?",array($_SESSION['m_admin']['entity']['parent'])); - $resShortLabel = $stmt->fetchObject(); - if ($resShortLabel->entity_id <> '') { - $entityIdForTree = functions::show_string($resShortLabel->entity_id); - } else { - $entityIdForTree = $_SESSION['m_admin']['entity']['parent']; - } - $entityPath .= $entityIdForTree . '/' . $_SESSION['m_admin']['entity']['entityId']; - } - - $stmt = $db->query('INSERT INTO '.ENT_ENTITIES." (entity_id, entity_label, short_label, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type, entity_path, archival_agency, archival_agreement, entity_full_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",array($_SESSION['m_admin']['entity']['entityId'],$_SESSION['m_admin']['entity']['label'],$_SESSION['m_admin']['entity']['short_label'],$_SESSION['m_admin']['entity']['adrs1'],$_SESSION['m_admin']['entity']['adrs2'],$_SESSION['m_admin']['entity']['adrs3'],$_SESSION['m_admin']['entity']['zcode'],$_SESSION['m_admin']['entity']['city'],$_SESSION['m_admin']['entity']['country'],$_SESSION['m_admin']['entity']['email'],$_SESSION['m_admin']['entity']['business'],$_SESSION['m_admin']['entity']['parent'],$_SESSION['m_admin']['entity']['type'],$entityPath,$_SESSION['m_admin']['entity']['archival_agency'],$_SESSION['m_admin']['entity']['archival_agreement'],$_SESSION['m_admin']['entity']['entity_full_name'])); + $stmt = $db->query('INSERT INTO '.ENT_ENTITIES." (entity_id, entity_label, short_label, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type, archival_agency, archival_agreement, entity_full_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",array($_SESSION['m_admin']['entity']['entityId'],$_SESSION['m_admin']['entity']['label'],$_SESSION['m_admin']['entity']['short_label'],$_SESSION['m_admin']['entity']['adrs1'],$_SESSION['m_admin']['entity']['adrs2'],$_SESSION['m_admin']['entity']['adrs3'],$_SESSION['m_admin']['entity']['zcode'],$_SESSION['m_admin']['entity']['city'],$_SESSION['m_admin']['entity']['country'],$_SESSION['m_admin']['entity']['email'],$_SESSION['m_admin']['entity']['business'],$_SESSION['m_admin']['entity']['parent'],$_SESSION['m_admin']['entity']['type'],$_SESSION['m_admin']['entity']['archival_agency'],$_SESSION['m_admin']['entity']['archival_agreement'],$_SESSION['m_admin']['entity']['entity_full_name'])); $_SESSION['service_tag'] = 'entity_add_db'; $core->execute_modules_services($_SESSION['modules_services'], 'entity_add_db', "include"); $core->execute_app_services($_SESSION['app_services'], 'entity_add_db', 'include'); @@ -1128,36 +1099,7 @@ abstract class entity_Abstract extends functions } elseif($mode == 'up') { - if ($_SESSION['m_admin']['entity']['parent'] == '') { - $entityPath = '/' . $_SESSION['m_admin']['entity']['entityId']; - } else { - require_once 'modules/entities/class/EntityControler.php'; - $entityCtrl = new EntityControler(); - $entityTree = $entityCtrl->getEntityParentTreeOf($_SESSION['m_admin']['entity']['parent']); - - if (count($entityTree) > 0) { - for ($cptTree = 0;$cptTree<count($entityTree);$cptTree++) { - $stmt = $db->query("select entity_id from entities where entity_id = ?",array($entityTree[$cptTree]->__get('parent_entity_id'))); - $resShortLabel = $stmt->fetchObject(); - if ($resShortLabel->entity_id <> '') { - $entityIdForTree = functions::show_string($resShortLabel->entity_id); - } else { - $entityIdForTree = $entityTree[$cptTree]->__get('parent_entity_id'); - } - $entityPath .= $entityIdForTree . '/'; - } - } - $stmt = $db->query("select entity_id from entities where entity_id = ?",array($_SESSION['m_admin']['entity']['parent'])); - $resShortLabel = $stmt->fetchObject(); - if ($resShortLabel->entity_id <> '') { - $entityIdForTree = functions::show_string($resShortLabel->entity_id); - } else { - $entityIdForTree = $_SESSION['m_admin']['entity']['parent']; - } - $entityPath .= $entityIdForTree . '/' . $_SESSION['m_admin']['entity']['entityId']; - } - - $stmt = $db->query('UPDATE '.ENT_ENTITIES." set entity_label = ? , short_label = ? , adrs_1 = ?, adrs_2 = ?, adrs_3 = ?, zipcode = ?, city = ?, country = ?, email = ?, business_id = ?, parent_entity_id = ?, entity_type = ?, entity_path = ?, archival_agency = ?, archival_agreement = ?, entity_full_name = ? where entity_id = ?",array($_SESSION['m_admin']['entity']['label'], $_SESSION['m_admin']['entity']['short_label'], $_SESSION['m_admin']['entity']['adrs1'], $_SESSION['m_admin']['entity']['adrs2'],$_SESSION['m_admin']['entity']['adrs3'], $_SESSION['m_admin']['entity']['zcode'], $_SESSION['m_admin']['entity']['city'], $_SESSION['m_admin']['entity']['country'], $_SESSION['m_admin']['entity']['email'], $_SESSION['m_admin']['entity']['business'], $_SESSION['m_admin']['entity']['parent'], $_SESSION['m_admin']['entity']['type'], $entityPath, $_SESSION['m_admin']['entity']['archival_agency'], $_SESSION['m_admin']['entity']['archival_agreement'], $_SESSION['m_admin']['entity']['entity_full_name'], $_SESSION['m_admin']['entity']['entityId'])); + $stmt = $db->query('UPDATE '.ENT_ENTITIES." set entity_label = ? , short_label = ? , adrs_1 = ?, adrs_2 = ?, adrs_3 = ?, zipcode = ?, city = ?, country = ?, email = ?, business_id = ?, parent_entity_id = ?, entity_type = ?, archival_agency = ?, archival_agreement = ?, entity_full_name = ? where entity_id = ?",array($_SESSION['m_admin']['entity']['label'], $_SESSION['m_admin']['entity']['short_label'], $_SESSION['m_admin']['entity']['adrs1'], $_SESSION['m_admin']['entity']['adrs2'],$_SESSION['m_admin']['entity']['adrs3'], $_SESSION['m_admin']['entity']['zcode'], $_SESSION['m_admin']['entity']['city'], $_SESSION['m_admin']['entity']['country'], $_SESSION['m_admin']['entity']['email'], $_SESSION['m_admin']['entity']['business'], $_SESSION['m_admin']['entity']['parent'], $_SESSION['m_admin']['entity']['type'], $_SESSION['m_admin']['entity']['archival_agency'], $_SESSION['m_admin']['entity']['archival_agreement'], $_SESSION['m_admin']['entity']['entity_full_name'], $_SESSION['m_admin']['entity']['entityId'])); $_SESSION['service_tag'] = 'entity_up_db'; $core->execute_modules_services($_SESSION['modules_services'], 'entity_up_db', "include"); $core->execute_app_services($_SESSION['app_services'], 'entity_up_db', 'include'); diff --git a/modules/templates/datasources/letterbox_attachment.php b/modules/templates/datasources/letterbox_attachment.php index 28c6797f534..f670794d887 100755 --- a/modules/templates/datasources/letterbox_attachment.php +++ b/modules/templates/datasources/letterbox_attachment.php @@ -46,6 +46,7 @@ if (!empty($res_id)) { foreach ($initiator as $column => $value) { $doc['initiator_'.$column] = $value; } + $doc['initiator_entity_path'] = \Entity\models\EntityModel::getEntityPathByEntityId(['entityId' => $doc['initiator'], 'path' => '']); } $datasources['res_letterbox'][] = $doc; diff --git a/rest/schema.json b/rest/schema.json index 2b2d85041cf..ac40ff6e3dc 100755 --- a/rest/schema.json +++ b/rest/schema.json @@ -147,7 +147,6 @@ "business_id" : "", "parent_entity_id" : "", "entity_type" : "Direction", - "entity_path" : "", "ldap_id" : "", "archival_agency" : "", "archival_agreement" : "", @@ -248,10 +247,6 @@ "type" : "string", "maxLength" : 64 }, - "entity_path" : { - "type" : "string", - "maxLength" : 2048 - }, "ldap_id" : { "type" : "string", "maxLength" : 255 diff --git a/sql/develop.sql b/sql/develop.sql index 8de0a8a0c35..48b060d5d77 100755 --- a/sql/develop.sql +++ b/sql/develop.sql @@ -246,6 +246,7 @@ ALTER TABLE notes DROP COLUMN IF EXISTS coll_id; ALTER TABLE notes DROP COLUMN IF EXISTS type; ALTER TABLE notes ADD COLUMN type CHARACTER VARYING (32) DEFAULT 'resource' NOT NULL; ALTER TABLE users DROP COLUMN IF EXISTS thumbprint; +ALTER TABLE entities DROP COLUMN IF EXISTS entity_path; DO $$ BEGIN IF (SELECT count(attname) FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'notes') AND attname = 'date_note') = 1 THEN diff --git a/sql/structure.sql b/sql/structure.sql index 3c7fc3e63c2..c59b7bcfdab 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -447,7 +447,6 @@ CREATE TABLE entities business_id character varying(32), parent_entity_id character varying(32), entity_type character varying(64), - entity_path character varying(2048), ldap_id character varying(255), archival_agency character varying(255), archival_agreement character varying(255), diff --git a/src/app/entity/controllers/EntityController.php b/src/app/entity/controllers/EntityController.php index b3a30f27c55..a464cc05cd4 100755 --- a/src/app/entity/controllers/EntityController.php +++ b/src/app/entity/controllers/EntityController.php @@ -253,7 +253,7 @@ class EntityController $neededData = [ 'entity_label', 'short_label', 'entity_type', 'adrs_1', 'adrs_2', 'adrs_3', 'zipcode', 'city', 'country', 'email', 'business_id', 'parent_entity_id', - 'entity_path', 'ldap_id', 'archival_agreement', 'archival_agency', 'entity_full_name' + 'ldap_id', 'archival_agreement', 'archival_agency', 'entity_full_name' ]; foreach ($data as $key => $value) { if (!in_array($key, $neededData)) { diff --git a/src/app/entity/models/EntityModelAbstract.php b/src/app/entity/models/EntityModelAbstract.php index 80051b3a6e3..2a6d4f68043 100755 --- a/src/app/entity/models/EntityModelAbstract.php +++ b/src/app/entity/models/EntityModelAbstract.php @@ -83,7 +83,7 @@ abstract class EntityModelAbstract ValidatorModel::stringType($aArgs, [ 'entity_id', 'entity_label', 'short_label', 'entity_type', 'adrs_1', 'adrs_2', 'adrs_3', 'zipcode', 'city', 'country', 'email', 'business_id', 'parent_entity_id', - 'entity_path', 'ldap_id', 'transferring_agency', 'archival_agreement', 'archival_agency', 'entity_full_name' + 'ldap_id', 'transferring_agency', 'archival_agreement', 'archival_agency', 'entity_full_name' ]); DatabaseModel::insert([ @@ -102,7 +102,6 @@ abstract class EntityModelAbstract 'business_id' => $aArgs['business_id'], 'parent_entity_id' => $aArgs['parent_entity_id'], 'entity_type' => $aArgs['entity_type'], - 'entity_path' => $aArgs['entity_path'], 'ldap_id' => $aArgs['ldap_id'], 'archival_agreement' => $aArgs['archival_agreement'], 'archival_agency' => $aArgs['archival_agency'], @@ -120,7 +119,7 @@ abstract class EntityModelAbstract ValidatorModel::stringType($aArgs['set'], [ 'entity_label', 'short_label', 'entity_type', 'adrs_1', 'adrs_2', 'adrs_3', 'zipcode', 'city', 'country', 'email', 'business_id', 'parent_entity_id', - 'entity_path', 'ldap_id', 'transferring_agency', 'archival_agreement', 'archival_agency', 'entity_full_name' + 'ldap_id', 'transferring_agency', 'archival_agreement', 'archival_agency', 'entity_full_name' ]); DatabaseModel::update([ @@ -407,4 +406,26 @@ abstract class EntityModelAbstract return $roles; } + + public static function getEntityPathByEntityId(array $args) + { + ValidatorModel::notEmpty($args, ['entityId']); + ValidatorModel::stringType($args, ['entityId', 'path']); + + $entity = EntityModel::getByEntityId([ + 'select' => ['entity_id', 'parent_entity_id'], + 'entityId' => $args['entityId'] + ]); + + if (!empty($args['path'])) { + $args['path'] = "/{$args['path']}"; + } + $args['path'] = $entity['entity_id'] . $args['path']; + + if (empty($entity['parent_entity_id'])) { + return $args['path']; + } + + return EntityModel::getEntityPathByEntityId(['entityId' => $entity['parent_entity_id'], 'path' => $args['path']]); + } } -- GitLab