diff --git a/web/modules/custom/joinup_core/joinup_core.deploy.php b/web/modules/custom/joinup_core/joinup_core.deploy.php index c72b2b0a431ccee9dcf3a0c7a93de33f24754835..d23968e7228443fda98e0ee39020ff58a89ecadd 100644 --- a/web/modules/custom/joinup_core/joinup_core.deploy.php +++ b/web/modules/custom/joinup_core/joinup_core.deploy.php @@ -13,89 +13,3 @@ */ declare(strict_types = 1); - -use Drupal\joinup_user\JoinupUserDefaultAvatarImageHelper; - -/** - * Revert removal of collection that was lost. - */ -function joinup_core_deploy_0109101(): void { - $ntriples = <<<EOF -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/collection/content_creation> "only_members" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "IMAPS" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/language/default> "1" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/ns/dcat#Catalog> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/5fe7b050-1a31-43a0-94c5-8a23003eba70> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "simaps" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/44d6d394-1c00-4ef3-9563-6f4066e8871e> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "organisational" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/collection/field_newsletter/service_id> "0"^^<http://www.w3.org/2001/XMLSchema#integer> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/RightsStatement> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/owner/uid> "700890"^^<http://www.w3.org/2001/XMLSchema#integer> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "technical" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/a60a2758-28d0-441c-b1ea-68a6a178fd0f> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/ca2aafe3-e32c-4a3b-8c94-c8113847fcbc> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/site-pinned> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "structural" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/f586affc-6701-46ac-b860-e1a28651ff26> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "structural interoperability" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/e57137e7-0781-43c1-a974-07b646e01a32> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/language> "en"@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "IATs" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://xmlns.com/foaf/0.1/Image> "573736"^^<http://www.w3.org/2001/XMLSchema#string> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/site-featured> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/language/translation_status> "1"@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/publisher> <http://data.europa.eu/w21/10ec5d16-3753-4eea-a921-1bed604b12a9> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/af8c0501-b85c-4405-9389-856cbea70271> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "behavioural interoperability" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "interoperability" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/issued> "2018-05-28T10:00:30+02:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "SIQAT" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/8f67de7b-9478-49fa-b665-833dcb82e255> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "timaps" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/vocabulary/topic> <http://joinup.eu/ontology/topic#egovernment> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/language/translation_author> "700890"@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/28bb4f0d-931e-4d2e-ba55-546d10ca6ebd> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/bf99e6e4-8530-44b9-a69e-4433366692ec> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/ar/workflow_status> "validated"^^<http://www.w3.org/2001/XMLSchema#string> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/language/translation_source> "und"@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "governance" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "governance interoperability" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/d7fc7333-7911-4c97-8faa-ee58eaefcdfd> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/badeee45-24e0-41f0-be4b-cb8f5e7267b2> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "GIQAT" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/collection/field_newsletter/enabled> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/description> """<p><em><strong>Start your own assessment with </strong><a href=\"https://ec.europa.eu/eusurvey/runner/IMAPS_v_2_2_0\">IMAPS v2.2.0</a>, <a href=\"https://ec.europa.eu/eusurvey/runner/SIQAT_v_2_1_0\">SIQAT v2.1.0</a> or </em><em><a href=\"https://ec.europa.eu/eusurvey/runner/GIQAT_v_2_1_0\">GIQAT </a><a href=\"https://ec.europa.eu/eusurvey/runner/GIQAT_v_2_1_0\">v2.1.0</a>.</em></p>\r\n\r\n<h2>The interoperability challenge</h2>\r\n\r\n<p><strong>Interoperability</strong> is more than a strategic priority on the political agenda. Today, it is expected to be <strong>standard practice </strong>in the day-to-day operations of public administrations. Public service owners are facing a number of <strong>challenges</strong> when it comes to delivering public services that are <strong>digital by default</strong>. These include:</p>\r\n\r\n<ul>\r\n\t<li>Improving interoperability of digital public services and bringing their <strong>maturity </strong>to a higher level;</li>\r\n\t<li>Optimising the <strong>customer experience </strong>by providing \u2018one-click\u2019 digital public services;</li>\r\n\t<li>Redesigning and standardising procedures to make digital public services <strong>more </strong><strong>efficient, </strong><strong>effective and transparent</strong></li>\r\n\t<li>Enabling <strong>seamless interaction </strong>of shared public services and promoting a culture of collaboration.</li>\r\n</ul>\r\n\r\n<p>Although the IATs are publicly available for any organisation and citizens interested,<strong> the main target audience is the public service owners of digital public services </strong>that operate in an environment where interoperability is required to deliver a public service to end users.</p>\r\n\r\n<p>Particularly the <strong>structural interoperability</strong> is assessed with <strong>SIQAT</strong>, the governance interoperability is assessed with <strong>GIQAT and the </strong>behavioural interoperability is assessed with <strong>IMAPS.</strong> Furthermore, each one of those solutions includes a set of questions that are assessing different interoperability aspects from a legal, organisational, semantic and technical interoperability viewpoint.</p>\r\n\r\n<p>The below image illustrates the different interoperability aspects in the digital public services context:</p>\r\n<img alt=\"interoperability_perspective\" data-align=\"center\" data-entity-type=\"file\" data-entity-uuid=\"fcd0936f-583c-4736-9443-6b5f8c8167ad\" data-image-style=\"wysiwyg_full_width\" height=\"369\" src=\"/sites/default/files/inline-images/interoperability%20perspective%20new_0.png\" width=\"920\" />\r\n<h2>What is <a href=\"https://joinup.ec.europa.eu/collection/imaps-interoperability-maturity-assessment-public-service/solution/siqat\">SIQAT</a>?</h2>\r\n\r\n<p>The <strong>Structural Interoperability</strong> <strong>Quick Assessment Toolkit (SIQAT\u00A9)</strong> has been developed in the context of Action 2016.36 Assessment of trans-European systems supporting EU policies of the Interoperability solutions and common frameworks for European public administrations, businesses and citizens (<a href=\"https://ec.europa.eu/isa2/isa2_en\">ISA2 programme</a>). </p>\r\n\r\n<p>The <strong>objective</strong> of the <strong>SIQAT\u00A9 </strong>is to allows public service owners to evaluate the <strong>structural interoperability maturity level of their digital public service. </strong>The Structural Interoperability Quick Assessment Tool (SIQAT) which provides public administrations with insight into two key aspects of the structural interoperability of their digital public service:</p>\r\n\r\n<ul>\r\n\t<li><strong>Shareability:</strong> It is the extent that an open standard enables prospective coexistence of an off-the-shelf asset in a given domain set of digital public service value chains.</li>\r\n</ul>\r\n\r\n<ul>\r\n\t<li><strong>Reusability:</strong> It is the extent that an open standard enables the coexistence of an off-the-shelf asset in a given value chain of a digital public service.</li>\r\n</ul>\r\n\r\n<h2>What is <a href=\"https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/giqat\">GIQAT</a>?</h2>\r\n\r\n<p>The <strong>Governance Interoperability</strong> <strong>Quick Assessment Toolkit (GIQAT\u00A9)</strong> has been developed in the context of Action 2016.36 Assessment of trans-European systems supporting EU policies of the Interoperability solutions and common frameworks for European public administrations, businesses and citizens (<a href=\"https://ec.europa.eu/isa2/isa2_en\">ISA2 programme</a>). </p>\r\n\r\n<p>The <strong>objective</strong> of the <strong>GIQAT\u00A9 </strong>is to allows public service owners to evaluate the <strong>governance interoperability maturity level of their digital public service. </strong>The Governance Interoperability Quick Assessment Tool (GIQAT) which provides public administrations with insight into two key aspects of the governance interoperability of their digital public service:</p>\r\n\r\n<ul>\r\n\t<li><strong>Collaboration Assurance: </strong>Is the extent that an open standard enables the collaboration assurance of a digital public service with another digital public service.</li>\r\n\t<li><strong>Collaboration Control: </strong>Is the extent that an open standard enables the collaboration control of a digital public service with another digital public service.</li>\r\n</ul>\r\n\r\n<h2>What is <a href=\"https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/imaps\">IMAPS</a>?</h2>\r\n\r\n<p>IMAPS is an online survey that helps public service owners evaluate, consider and improve <strong>all key interoperability aspects</strong> of their digital public service (legal, semantic, organisational, or technical). Ultimately, they can view and monitor the service\u2019s compliance with the <strong>New <a href=\"https://ec.europa.eu/isa2/eif_en\" target=\"_blank\">European Interoperability Framework (EIF)</a>.</strong></p>\r\n\r\n<p>Not only can IMAPS be used to assess the interoperability of <strong>any public service </strong>\u2013 from open data portals, and e-voting platforms, to public procurement services, and much more \u2013 it is applicable to services at <strong>all levels of government</strong> (international, national, regional and local).</p>\r\n\r\n<p>IMAPS looks at three <strong>different service areas</strong> (see IMAPS conceptual model below):</p>\r\n\r\n<ul>\r\n\t<li><strong>Service Delivery</strong> (D) \u2013 Delivery of the digital public service;</li>\r\n\t<li><strong>Service Consumption</strong> (C) \u2013 Consumption of reusable machine-to-machine services from other public administrations and businesses. This can include the consumption of functionalities, base registry information and security services;</li>\r\n\t<li><strong>Service Management </strong>(B) \u2013 Controlling and monitoring the process flow related to service interactions with the external domain from trigger to outcome. This area includes Service Management aspects such as enterprise architecture, procurement, and service level management.</li>\r\n</ul>\r\n<img alt=\"IMAPS_conceptual_model\" data-align=\"center\" data-entity-type=\"file\" data-entity-uuid=\"7c7928a6-d063-4ee7-aa2b-552f6cb33457\" data-image-style=\"wysiwyg_half_width\" height=\"717\" src=\"/sites/default/files/inline-images/IMAPS%20Conceptual%20model_0.png\" width=\"460\" />\r\n<h3>IATs define <strong>five levels of interoperability maturity</strong>:</h3>\r\n\r\n<ul>\r\n\t<li><strong>Ad hoc</strong><em> (level 1)</em>: Poor interoperability \u2013 the digital public service cannot be considered interoperable</li>\r\n\t<li><strong>Opportunistic </strong><em>(level 2)</em>: Fair interoperability \u2013 the digital public service implements some elements of interoperability best practices</li>\r\n\t<li><strong>Essential </strong><em>(level 3)</em>: Essential interoperability \u2013 the digital public service implements the essential best practices for interoperability</li>\r\n\t<li><strong>Sustainable</strong> <em>(level 4)</em>: Good interoperability \u2013 all relevant interoperability best practices are implemented by the digital public service</li>\r\n\t<li><strong>Seamless</strong> <em>(level 5)</em>: Interoperability leading practice \u2013 the digital public service is a leading interoperability practice example for others</li>\r\n</ul>\r\n<img alt=\"Interoperability maturity score\" data-align=\"center\" data-entity-type=\"file\" data-entity-uuid=\"9f2e2f8c-0ffe-4516-958a-af137e599605\" data-image-style=\"\" src=\"/sites/default/files/inline-images/MicrosoftTeams-image_3.png\" />\r\n<h2>Are they relevant for you?</h2>\r\n\r\n<p>You are involved in the design, development, management or delivery of a digital public service?</p>\r\n\r\n<p>IATs give you the tools to evaluate the interoperability maturity of your digital public service.</p>\r\n\r\n<p>IATs can be used at <strong>all government levels</strong>: national, regional, local and international.</p>\r\n\r\n<p><em>Discover the latest release of IMAPS (<a href=\"https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/imaps/release/v220\">v2.2.0</a>) and <strong>start your own assessment </strong>(<a href=\"https://ec.europa.eu/eusurvey/runner/IMAPS_v_2_2_0\">link</a> to online survey).</em></p>\r\n\r\n<p><em>Discover the latest release of SIQAT (<a href=\"https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/siqat/release/v210https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/siqat/release/v210\">v2.1.0</a>) and <strong>start your own assessment </strong>(<a href=\"https://ec.europa.eu/eusurvey/runner/SIQAT_v_2_1_0\">link</a> to online survey).</em></p>\r\n\r\n<p><em>Discover the latest release of GIQAT (<a href=\"https://joinup.ec.europa.eu/collection/interoperability-assessment-tools-iats-digital-public-services/solution/giqat/release/v210\">v2.1.0</a>) and <strong>start your own assessment </strong>(<a href=\"https://ec.europa.eu/eusurvey/runner/GIQAT_v_2_1_0\">link</a> to online survey).</em></p>\r\n\r\n<h2>What are the benefits of IATs?</h2>\r\n\r\n<p>IATs provide you with:</p>\r\n\r\n<ul>\r\n\t<li>A compact, highly user-friendly and free-of-charge <strong>online survey questionnaire, </strong>which can be completed in 30 minutes;</li>\r\n\t<li>An<strong> interoperability maturity score </strong>that captures the current maturity level of your digital public service;</li>\r\n\t<li>A <strong>set of recommendations</strong> tailored to your digital public service for improving its interoperability maturity;</li>\r\n\t<li>A set of <strong>interoperability good practices</strong> and <strong>standards</strong>;</li>\r\n\t<li>A <strong>confirmation of conformance</strong> of your digital public service with the <a href=\"https://ec.europa.eu/isa2/eif_en\">European Interoperability Framework (EIF)</a>.</li>\r\n</ul>\r\n\r\n<h2>IMAPS Specialisations</h2>\r\n\r\n<p>The IMAPS action has also developed specialised versions of IMAPS, which enable public service owners to assess their digital public services in terms of their:</p>\r\n\r\n<ul>\r\n\t<li><strong>Legal Interoperability (<a href=\"https://joinup.ec.europa.eu/solution/limaps\">LIMAPS</a>)</strong>: the LIMAPS survey provides insights into legal interoperability aspects enabling the provision of a digital public service in a cross-border context and provides recommendations;</li>\r\n\t<li><strong>Organisational Interoperability (<a href=\"https://joinup.ec.europa.eu/solution/oimaps/about\">OIMAPS</a>)</strong>: the OIMAPS survey provides insights into organisational interoperability aspects enabling the provision of a digital public service in a cross-border context and provides recommendations;</li>\r\n\t<li><strong>Semantic Interoperability (<a href=\"https://joinup.ec.europa.eu/solution/simaps\">SIMAPS</a>)</strong>: the SIMAPS survey focuses on semantic interoperability aspects enabling the provision of a digital public service in a cross-border context and provides recommendations </li>\r\n\t<li><strong>Technical Interoperability (<a href=\"https://joinup.ec.europa.eu/solution/timaps/about\">TIMAPS</a>)</strong>: the TIMAPS survey focuses on technical interoperability aspects enabling the provision of a digital public service in a cross-border context and provides recommendations. </li>\r\n</ul>\r\n\r\n<p>All IMAPS specialisations are compliant with the latest version of the <a href=\"https://ec.europa.eu/isa2/eif_en\" target=\"_blank\">European Interoperability Framework (EIF)</a>.</p>\r\n\r\n<p> </p>\r\n\r\n<h2>How can we support your organisation in the uptake of IATs?</h2>\r\n\r\n<p>We organise <strong>knowledge transfer sessions </strong>with public administrations across Europe to support them in their assessments and their uptake of SIQAT, GIQAT and IMAPS specialisations. If you are interested in participating in an IATs knowledge transfer, please contact us via e-mail: <a href=\"DIGIT-IMAPS@ec.europa.eu\">DIGIT-IMAPS@ec.europa.eu</a>.</p>\r\n\r\n<h2>Insights</h2>\r\n\r\n<p>The team publishes a regular report which analyses the <strong>state of interoperability maturity of European digital public services</strong> which have been assessed with IATs.</p>\r\n\r\n<p>The latest version of the IMAPS report (<a href=\"https://joinup.ec.europa.eu/sites/default/files/document/2020-10/Report%20on%20IMAPS%20results%202020%20edition_0.pdf\">2020</a>) reveals that all of the digital public services assessed are on average below the Essential interoperability level (IMAPS maturity level 3). Up-to-date, IMAPS has been used by public administrations across Europe for assessing more than 200 digital public services. </p>\r\n\r\n<p>Discover the <strong>experience of other users</strong> <a href=\"https://joinup.ec.europa.eu/collection/imaps-interoperability-maturity-assessment-public-service/imaps-user-stories\">here</a>.</p>\r\n\r\n<h2>Context</h2>\r\n\r\n<p>IATs is an action of the <a href=\"https://joinup.ec.europa.eu/collection/interoperable-europe/interoperable-europe\">Interoperable Europe</a> public policy initiative under the <a href=\"https://digital-strategy.ec.europa.eu/en/library/digital-europe-programme-eu75-billion-funding-2021-2027\">Digital Europe programme</a>. The Digital Europe programme is designed to bridge the gap between digital technology research and market deployment. It will benefit Europe's citizens and businesses, especially SMEs. Investment under the Digital Europe Programme supports the European Union\u2019s twin objectives of a green transition and digital transformation while strengthening the Union\u2019s resilience and digital sovereignty. Modernising European public administrations and increasing their interoperability is an important contribution to the completion of the Digital Single Market, as one of the top 10 political priorities of the EU (<a href=\"https://ec.europa.eu/digital-single-market/en/digital-single-market\">https://ec.europa.eu/digital-single-market/en/digital-single-market</a>).</p>\r\n\r\n<h2>Release frequency and change management process</h2>\r\n\r\n<p>The <strong>frequency </strong>of a major release version for IATs, including incompatible changes, is released once per year.</p>\r\n\r\n<p><strong>New Change Requests</strong> (CR) for each one of the IATs questionnaires can be shared from the users via e-mail: <a href=\"DIGIT-IMAPS@ec.europa.eu\">DIGIT-IMAPS@ec.europa.eu</a>.</p>\r\n\r\n<p>The operational team receives each CR for IATs and describes it in a brief manner in the configuration checklist. Then, the team analyses the CR in the configuration checklist (e.g., CR Problem Statement, Key Risk identified with this CR, etc.) and registers it as a ticket in JIRA. The operational team requests for Project Officer's (PO) validation.</p>\r\n\r\n<p>If the PO validates the CR, the operational team plans its implementation as follows:</p>\r\n\r\n<ul>\r\n\t<li>In case the CR needs to be implemented immediately, the operational team shall implement it and the CR obtains the status \u201CImplemented\u201D;</li>\r\n\t<li>In case the CR does not need to be implemented immediately, the CR obtains the status \u201CPostponed\u201D and the operational team re-plans its implementation.</li>\r\n</ul>\r\n\r\n<p>Finally, the operational team deploys all CRs with the status \u201CImplemented\u201D in the EU Survey Portal in the respective tool (e.g., IMAPS, SIMAPS, GIQAT, etc.), updates the impacted element (e.g., Questionnaire, User guide, etc.) accordingly.</p>\r\n\r\n<p>In case the PO does not validate the CR, the CR will not be implemented.</p>\r\n\r\n<h2>How to contact us</h2>\r\n\r\n<p>In case of questions, please contact the IATs team via e-mail at <a href=\"mailto:DIGIT-IMAPS@ec.europa.eu\">DIGIT-IMAPS@ec.europa.eu</a>.</p>\r\n\r\n<h2>Useful material </h2>\r\n\r\n<p>Download the <a data-entity-type=\"file\" data-entity-uuid=\"38da9072-7826-4e7c-8fb7-d89e36f274c7\" href=\"/sites/default/files/inline-files/IATs%20Starter%20Guide_v1.00.pdf\">IATs starter guide</a>.</p>\r\n<img alt=\"IATs Starter guide\" data-align=\"center\" data-entity-type=\"file\" data-entity-uuid=\"c0f659c6-f340-4c5c-addc-d4c59527772b\" data-image-style=\"\" src=\"/sites/default/files/inline-images/IATs_Starter%20Guide_v1.00_0.png\" />\r\n<p> </p>\r\n"""@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/f1f76c60-db16-46c8-8df8-36064775305b> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/search> "a:4:{s:6:\"fields\";a:3:{s:15:\"collection_type\";a:2:{s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:3:\"top\";}s:21:\"collection_event_type\";a:2:{s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:13:\"inline_facets\";}s:16:\"collection_topic\";a:2:{s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:6:\"hidden\";}}s:7:\"enabled\";i:1;s:13:\"query_presets\";s:0:\"\";s:5:\"limit\";s:2:\"12\";}"^^<http://www.w3.org/2001/XMLSchema#string> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/7b90cdea-9343-43ed-b49f-ff62510f10a1> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/930aaef3-e02c-4836-a2ed-9d1a4e0a80b9> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "legal" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "interoperability assessment tools" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "semantic" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/title> "Interoperability Assessment Tools (IATs) for Digital Public Services"@en . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/terms/modified> "2023-03-16T22:39:02+01:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#contactPoint> <http://data.europa.eu/w21/3d5ba686-c1b7-4618-bf70-dc16ab2dc1a1> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "limaps" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://joinup.eu/collection/moderation> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#dataset> <http://data.europa.eu/w21/22514c30-2966-4820-8a88-11db42868ee8> . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://www.w3.org/ns/dcat#keyword> "oimaps" . -<http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> <http://purl.org/dc/dcmitype/StillImage> "613597"^^<http://www.w3.org/2001/XMLSchema#string> . -EOF; - - $query = <<<QUERY -WITH <http://joinup.eu/collection/published> -DELETE { <http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> ?p ?o } -INSERT { $ntriples } -WHERE { <http://data.europa.eu/w21/abe7d0f7-8c41-465b-86c0-93d2f857f998> ?p ?o } -QUERY; - - \Drupal::getContainer()->get('sparql.endpoint')->update($query); -} - -/** - * Update the default user avatar image. - */ -function joinup_core_deploy_0109102(): void { - \Drupal::classResolver(JoinupUserDefaultAvatarImageHelper::class)->createOrUpdate(); -} diff --git a/web/modules/custom/joinup_core/joinup_core.install b/web/modules/custom/joinup_core/joinup_core.install index eba6087b09a214484dd301b54e550ced5b793ff3..3b6ea26f2bbcc0edce7a26bbd563a2689a1a033a 100644 --- a/web/modules/custom/joinup_core/joinup_core.install +++ b/web/modules/custom/joinup_core/joinup_core.install @@ -8,7 +8,6 @@ declare(strict_types = 1); use Drupal\Core\Site\Settings; -use Drupal\sparql_entity_storage\UriEncoder; use Drupal\user\Entity\User; /** @@ -93,62 +92,3 @@ function joinup_core_requirements($phase): array { return $requirements; } - -/** - * Fix group OG menu links. - */ -function joinup_core_update_109100(?array &$sandbox = NULL): string { - $menu_link_content_storage = \Drupal::entityTypeManager()->getStorage('menu_link_content'); - $uri = [ - 'Overview' => 'entity:rdf_entity/%s', - 'About' => 'route:entity.rdf_entity.about_page;rdf_entity=%s', - 'Members' => 'route:entity.rdf_entity.member_overview;rdf_entity=%s', - 'Glossary' => 'route:entity.rdf_entity.glossary;letter=&rdf_entity=%s', - ]; - - if (!isset($sandbox['ids'])) { - $query = $menu_link_content_storage->getQuery()->accessCheck(FALSE); - - // The following condition is a safety net in the case when some custom - // pages are using the standard labels ('Overview', 'About', etc). - $safety_net = ($query->orConditionGroup()) - ->condition('link.uri', 'route:collection.glossary_page', 'STARTS_WITH') - ->condition('link.uri', 'route:entity.rdf_entity.about_page', 'STARTS_WITH') - ->condition('link.uri', 'route:entity.rdf_entity.member_overview', 'STARTS_WITH') - ->condition('link.uri', 'route:entity.rdf_entity.canonical', 'STARTS_WITH') - ->condition('link.uri', 'entity:rdf_entity/', 'STARTS_WITH'); - - $sandbox['ids'] = array_values($query - ->condition('menu_name', 'ogmenu-', 'STARTS_WITH') - ->condition('title', ['Overview', 'About', 'Members', 'Glossary'], 'IN') - ->condition($safety_net) - ->execute()); - $sandbox['og_menu'] = \Drupal::database()->query("SELECT entity_id, og_audience_target_id FROM {ogmenu_instance__og_audience}")->fetchAllKeyed(); - $sandbox['total'] = count($sandbox['ids']); - $sandbox['progress'] = 0; - $sandbox['links_to_delete'] = []; - } - - $ids = array_splice($sandbox['ids'], 0, 50); - /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link */ - foreach ($menu_link_content_storage->loadMultiple($ids) as $menu_link) { - $og_menu_instance_id = str_replace('ogmenu-', '', $menu_link->getMenuName()); - $group_id = $sandbox['og_menu'][$og_menu_instance_id] ?? NULL; - if ($group_id) { - // Fix the link URI. - $menu_link->link->uri = sprintf($uri[$menu_link->getTitle()], UriEncoder::encodeUrl($group_id)); - $menu_link->save(); - continue; - } - // Collect orphan links to be deleted on finish. - $sandbox['links_to_delete'][] = $menu_link->id(); - } - $sandbox['progress'] += count($ids); - - $sandbox['#finished'] = (int) empty($sandbox['ids']); - if ($sandbox['#finished'] === 1 && $sandbox['links_to_delete']) { - $menu_link_content_storage->delete($menu_link_content_storage->loadMultiple($sandbox['links_to_delete'])); - } - - return "Processed {$sandbox['progress']} out of {$sandbox['total']} menu links"; -} diff --git a/web/modules/custom/joinup_core/joinup_core.post_update.php b/web/modules/custom/joinup_core/joinup_core.post_update.php index e011783b11e2c3c5097e3bfa8db74a03e095bece..031777be204cd926bb93f68c66d13c042bed6816 100644 --- a/web/modules/custom/joinup_core/joinup_core.post_update.php +++ b/web/modules/custom/joinup_core/joinup_core.post_update.php @@ -14,64 +14,3 @@ */ declare(strict_types = 1); - -use Drupal\contact_information\ContactInformationEmailConfirmInterface; -use Drupal\email_confirmer\EmailConfirmationInterface; - -/** - * Clean up the email confirmations. - */ -function joinup_core_post_update_109100(array &$sandbox): string { - if (empty($sandbox['emails'])) { - // Select email confirmations from the email_confirmation table, that has - // the status to 1, with the same `realm` where there are more than one - // confirmed confirmations. Return the `email` column to load the - // confirmations by it. - $query = \Drupal::database()->select('email_confirmer_confirmation', 'ec') - ->fields('ec', ['email']) - ->condition('ec.status', 1) - ->condition('ec.confirmed', 1) - ->condition('ec.realm', ContactInformationEmailConfirmInterface::REALM) - ->groupBy('ec.email') - ->having('COUNT(ec.email) > 1'); - - $sandbox['emails'] = $query->execute()->fetchCol(); - $sandbox['current'] = 0; - $sandbox['total'] = count($sandbox['emails']); - } - - $limit = 50; - $emails = array_slice($sandbox['emails'], $sandbox['current'], $limit); - $sandbox['current'] += count($emails); - $email_confirmer = \Drupal::getContainer()->get('email_confirmer'); - - foreach ($emails as $email) { - $email_confirmations = $email_confirmer->getConfirmations($email, EmailConfirmationInterface::CONFIRMED, 0, ContactInformationEmailConfirmInterface::REALM); - // Failsafe check. - if (count($email_confirmations) <= 1) { - throw new \Exception('Attempt to run this on a single confirmation.'); - } - - // Prepare for deletion only the confirmations with IP set to '127.0.0.1'. - $email_confirmations_to_delete = array_filter($email_confirmations, function (EmailConfirmationInterface $email_confirmation): bool { - return $email_confirmation->getIp() === '127.0.0.1'; - }); - - // If the number of confirmations to delete is the same as the initial - // confirmations, then keep the first one. Otherwise, delete all of them. - // This is to ensure that if our code created more than one confirmation - // but the user did not create one manually, then still keep one so that - // the email is confirmed. - if (count($email_confirmations_to_delete) === count($email_confirmations)) { - array_shift($email_confirmations_to_delete); - } - - // Delete the confirmations. - foreach ($email_confirmations_to_delete as $email_confirmation) { - $email_confirmation->delete(); - } - } - - $sandbox['#finished'] = empty($sandbox['emails']) ? 1 : ($sandbox['current'] / $sandbox['total']); - return "Cleaned up {$sandbox['current']} email confirmations."; -}