Wiki

Clone wiki

BibSonomy / documentation / releases / 2021 / 4.0.0

4.0.0

Date: 2021/08/?? (dzo/mho/kch)

https://bitbucket.org/bibsonomy/bibsonomy/issues?milestone=4.0.0

released

  • CRIS features:
    • projects
    • organizations (special groups)
    • group hierarchy
    • links between persons, projects
    • person linking fixes
      • person are now linked with the community post
    • new search indices for
      • people
      • community posts (contains the community post or a normal post)
      • groups
    • CRIS system only:
      • new people overview page
      • new publications overview page
  • new community page layout
  • RIS snippet on /postPublication
  • sorting full publication lists using fulltext search (for title, author)
  • removed piwik stats option
  • Group Explore Feature
  • new overview layouts for groups, organizations, persons, projects
  • preset tags for group
    • group settings to add preset tags for the group, that will shown upon using the sentTo system tag
    • option to only allow preset tags for the sent post
  • updated sentTo and relevantFor UI, when creating/editing post

Necessary Changes

Person <-> Community Posts Migration

People are now linked with the community post and not with any publication of a user. To create the community posts, the person-community-migrator must be executed. See the project for more details.

The migrator must be executed after the release, because the migrator requires some changes that can be used.

Person no names Fix

Some people in the database do not have a name. Please execute the script in the person-name-fix project to add a main name "Unknown" to these people.

The fix must be executed after the release, because the fix requires new API endpoints.

database

Please note the 3.8.15 and 3.8.16 releases where special cris pre-releases.

-- 3.8.15
ALTER TABLE pub_person MODIFY person_index INT;
ALTER TABLE log_pub_person MODIFY person_index INT;

-- 3.8.16
ALTER TABLE `log_person` DROP PRIMARY KEY;
ALTER TABLE `log_person` DROP KEY `person_change_id`;
ALTER TABLE `log_person` ADD COLUMN `id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

-- 4.0.0
-- add_person_posts_fields.sql
ALTER TABLE `user` ADD COLUMN `person_posts_style` tinyint(4) NOT NULL DEFAULT '0' AFTER `useExternalPicture`;
ALTER TABLE `user` ADD COLUMN `person_posts_layout` varchar(255) NOT NULL DEFAULT '' AFTER `person_posts_style`;
ALTER TABLE `pendingUser` ADD COLUMN `person_posts_style` tinyint(4) NOT NULL DEFAULT '0' AFTER `useExternalPicture`;
ALTER TABLE `pendingUser` ADD COLUMN `person_posts_layout` varchar(255) NOT NULL DEFAULT '' AFTER `person_posts_style`;
-- add_organizations_to_groups.sql
ALTER TABLE `groupids` ADD COLUMN `organization` BOOLEAN DEFAULT FALSE;
ALTER TABLE `pending_groupids` ADD COLUMN `organization` BOOLEAN DEFAULT FALSE;
-- add_person_researcherid.sql
ALTER TABLE `person` ADD `researcherid` char(16) DEFAULT NULL;
ALTER TABLE `log_person` ADD `researcherid` char(16) DEFAULT NULL;
-- add_db_projects.sql
DROP TABLE IF EXISTS `projects`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `projects` (
  `id` int(11) unsigned NOT NULL,
  `internal_id` varchar(255) DEFAULT NULL,
  `project_id` varchar(255) DEFAULT NULL,
  `title` varchar(255) DEFAULT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `description` text,
  `start_date` timestamp NULL DEFAULT NULL,
  `end_date` timestamp NULL DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL,
  `sponsor` varchar(255) DEFAULT NULL,
  `budget` double DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `updated_by` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `project_id` (`project_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `log_projects`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `log_projects` (
  `id` int(11) unsigned NOT NULL,
  `internal_id` varchar(255) DEFAULT NULL,
  `project_id` varchar(255) DEFAULT NULL,
  `title` varchar(255) DEFAULT NULL,
  `subtitle` varchar(255) DEFAULT NULL,
  `description` text,
  `start_date` timestamp NULL DEFAULT NULL,
  `end_date` timestamp NULL DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL,
  `sponsor` varchar(255) DEFAULT NULL,
  `budget` double DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `updated_by` varchar(30) DEFAULT NULL,
  `new_id` int(11) NOT NULL,
  `log_date` timestamp NULL DEFAULT NULL,
  `log_user` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- insert the new id into the database
INSERT INTO `ids` VALUES
    (18, 0, 'project_id');
-- add_person_additional_keys.sql
CREATE TABLE `person_additional_keys` (
  `person_id` varchar(64) NOT NULL,
  `key_name` varchar(64) NOT NULL,
  `key_value` varchar(64) NOT NULL,
  UNIQUE KEY (`person_id`, `key_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- add_group_internal_id.sql
-- adds the external id to the group database table (used for syncing groups with organisation units)
ALTER TABLE `groupids` ADD COLUMN `internal_id` VARCHAR(255) DEFAULT NULL;
ALTER TABLE `pending_groupids` ADD COLUMN `internal_id` VARCHAR(255) DEFAULT NULL;
-- add_group_logging.sql
DROP TABLE IF EXISTS `log_groupids`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `log_groupids` (
  `group_name` varchar(30) NOT NULL default '',
  `group` int(10) NOT NULL default '0',
  `parent` int(10) DEFAULT NULL,
  `privlevel` tinyint(3) unsigned default '1',
  `sharedDocuments` tinyint(1) default '0',
  `allow_join` TINYINT(1) NULL DEFAULT '1',
  `shortDescription` TEXT NULL,
  `publ_reporting_mail` varchar(255) DEFAULT NULL,
  `publ_reporting_mail_template` text,
  `publ_reporting_external_url` varchar(255) DEFAULT NULL,
  `organization` BOOLEAN DEFAULT FALSE,
  `internal_id` VARCHAR(255) DEFAULT NULL,
  `log_reason` int(2) DEFAULT NULL,
  `log_date` timestamp NULL DEFAULT NULL,
  `log_user` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `log_group_memberships`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `log_group_memberships` (
  `user_name` varchar(30) NOT NULL default '',
  `group` int(10) default '0',
  `defaultgroup` int(10) default '0',
  `start_date` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `group_role` int(10) NOT NULL default '2',
  `user_shared_documents` tinyint(1) default '0',
  `log_reason` int(2) DEFAULT NULL,
  `log_date` timestamp NULL DEFAULT NULL,
  `log_user` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- add_db_cris_links.sql
DROP TABLE IF EXISTS `cris_links`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `cris_links` (
  `id` int(11) unsigned NOT NULL,
  `source_id` int(11) DEFAULT NULL,
  `source_type` int(2) DEFAULT NULL,
  `target_id` int(11) DEFAULT NULL,
  `target_type` int(2) DEFAULT NULL,
  `start_date` timestamp NULL DEFAULT NULL,
  `end_date` timestamp NULL DEFAULT NULL,
  `linktype_type` int(11) DEFAULT NULL,
  `linktype_value` varchar(30) DEFAULT NULL,
  `link_source` int(2) DEFAULT NULL,
  `updated_by` varchar(30) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `log_cris_links`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `log_cris_links` (
  `id` int(11) unsigned NOT NULL,
  `source_id` int(11) DEFAULT NULL,
  `source_type` int(2) DEFAULT NULL,
  `target_id` int(11) DEFAULT NULL,
  `target_type` int(2) DEFAULT NULL,
  `start_date` timestamp NULL DEFAULT NULL,
  `end_date` timestamp NULL DEFAULT NULL,
  `linktype_type` int(11) DEFAULT NULL,
  `linktype_value` varchar(30) DEFAULT NULL,
  `link_source` int(2) DEFAULT NULL,
  `updated_by` varchar(30) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `new_id` int(11) NOT NULL,
  `log_date` timestamp NULL DEFAULT NULL,
  `log_user` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- insert the new id into the database
INSERT INTO `ids` VALUES
    (19, 0, 'cris_link_id');
-- add_group_hierarchies.sql
ALTER TABLE `groupids` ADD `parent` int(10) DEFAULT NULL;
ALTER TABLE `pending_groupids` ADD `parent` int(10) DEFAULT NULL;

--
-- Table structure for table `group_hierarchy`
--

DROP TABLE IF EXISTS `group_hierarchy`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `group_hierarchy` (
  `child_group_id` int(10) NOT NULL,
  `parent_group_id` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

INSERT INTO ids (`name`, `value`, `description`) VALUES (20, (SELECT max(`group`) + 1 FROM groupids), 'group_id');

Property files (webapp):

changes

  • project.defaultLocale renamed to system.locales.default

new properties

  • system.cris: true or false enables specific layouts and
  • system.cris.college: sets the college of the CRIS system
  • system.cris.project.links: true or false enables display of project links
  • system.locales.supported: supported locales as a comma-separated list, available: en, de, ru
  • system.nav.order: navigation elements order as a comma-separated list, available: user, posts, groups, organizations, publications, persons, projects, explore, popular
  • system.nav.order.cris: navigation elements order for CRIS system as a comma-separated list, available: see above
  • goldstandard.service.mail: true or false enables mailing service for gold standard publication updates
  • profile.picture.default: true or false enables the set default image to be displayed
  • project.theme.help: theme name to add custom images or text for the help content
  • group.explore.nav.id: ID of a group to be highlighted in the navigation (explore in order necessary!)
  • group.presetTags.enabled: true or false enables preset tags for groups
  • group.sentTo.merge.enabled: true or false enables merge for sent group post, when duplicates exist. When enabled and a duplicate post is sent to the post, the entered tags of the duplicate will be merged into the exisiting tag.
  • group.sentTo.userTags.enabled: true or false enables user tags for the sent group post. When enabled and a user sents a post to a group, all entered tags including the selected preset tags will be copied to the group post.

removed properties

  • project.statistics.service.url
  • project.statisitics.siteid

Updated