Skip to content

Commit

Permalink
Item15294: mysql/mariadb require utf8mb4_bin
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDaum committed Jan 31, 2024
1 parent 8fe3f51 commit ec4b694
Show file tree
Hide file tree
Showing 33 changed files with 83,657 additions and 45 deletions.
3 changes: 2 additions & 1 deletion data/System/LikePlugin.txt
Expand Up @@ -246,6 +246,7 @@ then use
---++ Change History

%TABLE{columnwidths="7em" tablewidth="100%"}%
| 31 Jan 2024 | mysql and mariadb require utf8mb4_bin collation and characterset |
| 03 May 2022 | rewrite using Foswiki:Extensions/DBIPlugin |
| 18 Nov 2019 | added likeiconformat and dislikeiconformat paramerters |
| 02 Sep 2016 | add support for fontawesome icon; initial support for <nop>WebSocketPlugin |
Expand All @@ -258,7 +259,7 @@ then use
%META:FIELD{name="Release" title="Release" value="%25$RELEASE%25"}%
%META:FIELD{name="Description" title="Description" value="%25$SHORTDESCRIPTION%25"}%
%META:FIELD{name="Repository" title="Repository" value="https://github.com/foswiki/%25$ROOTMODULE%25"}%
%META:FIELD{name="Copyright" title="Copyright" value="2015-2022 Michael Daum"}%
%META:FIELD{name="Copyright" title="Copyright" value="2015-2023 Michael Daum"}%
%META:FIELD{name="License" title="License" value="GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]])"}%
%META:FIELD{name="Home" title="Home" value="https://foswiki.org/Extensions/%25$ROOTMODULE%25"}%
%META:FIELD{name="Support" title="Support" value="https://foswiki.org/Support/%25$ROOTMODULE%25"}%
Expand Down
12 changes: 6 additions & 6 deletions lib/Foswiki/Plugins/LikePlugin.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, http://foswiki.org/
#
# LikePlugin is Copyright (C) 2015-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2015-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand All @@ -22,9 +22,10 @@ use Foswiki::Func ();
use Foswiki::Plugins::JQueryPlugin ();
use Foswiki::Contrib::JsonRpcContrib ();

our $VERSION = '3.00';
our $RELEASE = '03 May 2022';
our $VERSION = '3.01';
our $RELEASE = '%$RELEASE%';
our $SHORTDESCRIPTION = 'Like-style voting for content';
our $LICENSECODE = '%$LICENSECODE%';
our $NO_PREFS_IN_TOPIC = 1;
our $core;
our @knownAfterLikeHandler = ();
Expand All @@ -37,14 +38,14 @@ sub initPlugin {
return getCore()->jsonRpcVote(@_);
});

if ($Foswiki::cfg{Plugins}{SolrPlugin} && $Foswiki::cfg{Plugins}{SolrPlugin}{Enabled}) {
if (exists $Foswiki::cfg{Plugins}{SolrPlugin} && $Foswiki::cfg{Plugins}{SolrPlugin}{Enabled}) {
require Foswiki::Plugins::SolrPlugin;
Foswiki::Plugins::SolrPlugin::registerIndexTopicHandler(sub {
return getCore()->solrIndexTopicHandler(@_);
});
}

if ($Foswiki::cfg{Plugins}{DBCachePlugin}{Enabled}) {
if (exists $Foswiki::cfg{Plugins}{DBCachePlugin} && $Foswiki::cfg{Plugins}{DBCachePlugin}{Enabled}) {
require Foswiki::Plugins::DBCachePlugin;
Foswiki::Plugins::DBCachePlugin::registerIndexTopicHandler(sub {
return getCore()->dbcacheIndexTopicHandler(@_);
Expand Down Expand Up @@ -76,5 +77,4 @@ sub finishPlugin {
@knownAfterLikeHandler = ();
}


1;
6 changes: 3 additions & 3 deletions lib/Foswiki/Plugins/LikePlugin/Core.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, http://foswiki.org/
#
# LikePlugin is Copyright (C) 2015-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2015-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand Down Expand Up @@ -152,7 +152,7 @@ sub getStatementHandler {

throw Error::Simple("unknown statement id '$id'") unless $statement;

$sth = $this->{_sths}{$id} = $this->db->handler->prepare($statement);
$sth = $this->{_sths}{$id} = $this->db->handler->prepare_cached($statement);
}

return $sth;
Expand Down Expand Up @@ -302,7 +302,7 @@ sub LIKE {
sub getTheme {
my ($this, $name) = @_;

$name ||= 'default',
$name ||= 'default';
return $this->{themes}{$name} || $this->{themes}{default};
}

Expand Down
3 changes: 1 addition & 2 deletions lib/Foswiki/Plugins/LikePlugin/JQUERY.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, http://foswiki.org/
#
# BookPlugin is Copyright (C) 2015-2019 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2015-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand Down Expand Up @@ -48,4 +48,3 @@ sub new {
}

1;

22 changes: 22 additions & 0 deletions lib/Foswiki/Plugins/LikePlugin/MANIFEST
Expand Up @@ -8,8 +8,30 @@ lib/Foswiki/Plugins/LikePlugin/Schema/MariaDB.pm 0644
lib/Foswiki/Plugins/LikePlugin/Schema/MySQL.pm 0644
lib/Foswiki/Plugins/LikePlugin/Schema.pm 0644
lib/Foswiki/Plugins/LikePlugin/Schema/SQLite.pm 0644
locale/LikePlugin/bg.po 0644
locale/LikePlugin/cs.po 0644
locale/LikePlugin/da.po 0644
locale/LikePlugin/de.po 0644
locale/LikePlugin/el.po 0644
locale/LikePlugin/es.po 0644
locale/LikePlugin/fi.po 0644
locale/LikePlugin/Foswiki.pot 0644
locale/LikePlugin/fr.po 0644
locale/LikePlugin/it.po 0644
locale/LikePlugin/ja.po 0644
locale/LikePlugin/ko.po 0644
locale/LikePlugin/nl.po 0644
locale/LikePlugin/no.po 0644
locale/LikePlugin/pl.po 0644
locale/LikePlugin/pt-br.po 0644
locale/LikePlugin/pt.po 0644
locale/LikePlugin/ru.po 0644
locale/LikePlugin/sv.po 0644
locale/LikePlugin/tlh.po 0644
locale/LikePlugin/tr.po 0644
locale/LikePlugin/uk.po 0644
locale/LikePlugin/zh-cn.po 0644
locale/LikePlugin/zh-tw.po 0644
pub/System/LikePlugin/like.css 0644
pub/System/LikePlugin/like.css.gz 0644
pub/System/LikePlugin/like.js 0644
Expand Down
2 changes: 1 addition & 1 deletion lib/Foswiki/Plugins/LikePlugin/Schema.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, https://foswiki.org/
#
# LikePlugin is Copyright (C) 2021-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2021-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand Down
31 changes: 16 additions & 15 deletions lib/Foswiki/Plugins/LikePlugin/Schema/MariaDB.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, https://foswiki.org/
#
# LikePlugin is Copyright (C) 2021-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2021-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand All @@ -24,22 +24,23 @@ our @ISA = ('Foswiki::Plugins::LikePlugin::Schema');
sub getDefinition {
return [[
'CREATE TABLE IF NOT EXISTS %prefix%likes (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
web VARCHAR(255),
topic VARCHAR(255),
meta_type CHAR(20),
meta_id CHAR(20),
username VARCHAR(255),
like_count INTEGER DEFAULT 0,
dislike_count INTEGER DEFAULT 0,
timestamp INTEGER
) DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_unicode_ci',
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
web VARCHAR(255),
topic VARCHAR(255),
meta_type CHAR(20),
meta_id CHAR(20),
username VARCHAR(255),
like_count INTEGER DEFAULT 0,
dislike_count INTEGER DEFAULT 0,
timestamp INTEGER
) DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_bin',

'CREATE UNIQUE INDEX IF NOT EXISTS %prefix%_idx_likes on %prefix%likes (web, topic, username, meta_type, meta_id)'
], [
'ALTER TABLE %prefix%likes MODIFY meta_id VARCHAR(200)'
]];
};
], [],
['ALTER TABLE %prefix%likes MODIFY meta_id VARCHAR(100)', 'ALTER TABLE %prefix%likes MODIFY username VARCHAR(100)'],
['ALTER TABLE %prefix%likes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin',]
];
}

1;

15 changes: 8 additions & 7 deletions lib/Foswiki/Plugins/LikePlugin/Schema/MySQL.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, https://foswiki.org/
#
# LikePlugin is Copyright (C) 2021-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2021-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand Down Expand Up @@ -33,12 +33,13 @@ sub getDefinition {
like_count INTEGER DEFAULT 0,
dislike_count INTEGER DEFAULT 0,
timestamp INTEGER
) DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_unicode_ci',
) DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_bin',

'CREATE UNIQUE INDEX %prefix%_idx_likes on %prefix%likes (web, topic, username, meta_type, meta_id)'
], [
'ALTER TABLE %prefix%likes MODIFY meta_id VARCHAR(200)'
]];
};

], [],
['ALTER TABLE %prefix%likes MODIFY meta_id VARCHAR(100)' 'ALTER TABLE %prefix%likes MODIFY username VARCHAR(100)'],
['ALTER TABLE %prefix%likes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin',]
];
}

1;
7 changes: 4 additions & 3 deletions lib/Foswiki/Plugins/LikePlugin/Schema/SQLite.pm
@@ -1,6 +1,6 @@
# Plugin for Foswiki - The Free and Open Source Wiki, https://foswiki.org/
#
# LikePlugin is Copyright (C) 2021-2022 Michael Daum http://michaeldaumconsulting.com
# LikePlugin is Copyright (C) 2021-2024 Michael Daum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
Expand Down Expand Up @@ -36,7 +36,8 @@ sub getDefinition {
)',

'CREATE UNIQUE INDEX IF NOT EXISTS %prefix%_idx_likes on %prefix%likes (web, topic, username, meta_type, meta_id)'
]];
};
]
];
}

1;
6 changes: 3 additions & 3 deletions locale/LikePlugin/Foswiki.pot
Expand Up @@ -16,14 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: lib/Foswiki/Plugins/LikePlugin/Core.pm:244
#: lib/Foswiki/Plugins/LikePlugin/Core.pm:192
msgid "Click to vote"
msgstr ""

#: data/System/LikePlugin.txt:130 lib/Foswiki/Plugins/LikePlugin/Core.pm:263
#: data/System/LikePlugin.txt:134 lib/Foswiki/Plugins/LikePlugin/Core.pm:211
msgid "I don&#39;t like this"
msgstr ""

#: data/System/LikePlugin.txt:120 lib/Foswiki/Plugins/LikePlugin/Core.pm:258
#: data/System/LikePlugin.txt:122 lib/Foswiki/Plugins/LikePlugin/Core.pm:206
msgid "I like this"
msgstr ""

0 comments on commit ec4b694

Please sign in to comment.