Bugzilla – Attachment 31112 Details for
Bug 12805
Proposed changes to Koha plugins system (.KPZ) structure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Adds koha-enable-plugins and koha-disable-plugins scripts
0003-Bug-12805-ENH-Adding-enable-disable-scripts-for-Koha.patch (text/plain), 10.66 KB, created by
Indranil Das Gupta
on 2014-08-22 21:31:38 UTC
(
hide
)
Description:
Adds koha-enable-plugins and koha-disable-plugins scripts
Filename:
MIME Type:
Creator:
Indranil Das Gupta
Created:
2014-08-22 21:31:38 UTC
Size:
10.66 KB
patch
obsolete
>From 334ff431b4bec2fda13887130ed41cc2b875ba8a Mon Sep 17 00:00:00 2001 >From: Indranil Das Gupta <indradg@gmail.com> >Date: Fri, 22 Aug 2014 21:13:27 +0000 >Subject: [PATCH 3/3] Bug 12805 [ENH] Adding enable/disable scripts for Koha > plugins and extending koha-list to accomodate --plugins and --noplugins > listing > >Command-line koha-* script to toggle <enable_plugins> definition in >site specific koha-conf.xml; also to add plugins listing to existing >koha-list command. These files are expected to be used for a .deb >package based installation of Koha > >Test plan: > >1) Have a koha-common setup installed > >2) Apply the patch and build a package for it. > >3) Install it. > >4) Verify that /yazgfz/config/enable_plugins is being toggled correctly > when koha-enable-plugins and koha-disable-plugins are being called > respectively. > >-idg >--- > debian/scripts/koha-disable-plugins | 77 +++++++++++++++++++++++++++++++++++++ > debian/scripts/koha-enable-plugins | 77 +++++++++++++++++++++++++++++++++++++ > debian/scripts/koha-functions.sh | 21 ++++++++++ > debian/scripts/koha-list | 49 ++++++++++++++++++++--- > 4 files changed, 218 insertions(+), 6 deletions(-) > create mode 100755 debian/scripts/koha-disable-plugins > create mode 100755 debian/scripts/koha-enable-plugins > >diff --git a/debian/scripts/koha-disable-plugins b/debian/scripts/koha-disable-plugins >new file mode 100755 >index 0000000..5251d5b >--- /dev/null >+++ b/debian/scripts/koha-disable-plugins >@@ -0,0 +1,77 @@ >+#!/bin/sh >+# >+# koha-disable-plugins -- Disable Koha's KPZ plugin system >+# Copyright (c) 2014 : Indranil Das Gupta / L2C2 Technologies >+# >+# This program is free software: you can redistribute it and/or modify >+# it under the terms of the GNU General Public License as published by >+# the Free Software Foundation, either version 3 of the License, or >+# (at your option) any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with this program. If not, see <http://www.gnu.org/licenses/>. >+ >+set -e >+ >+# include helper functions >+if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then >+ . "/usr/share/koha/bin/koha-functions.sh" >+else >+ echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2 >+ exit 1 >+fi >+ >+disable_plugins() >+{ >+ local instancename=$1 >+ local kohaconf="/etc/koha/sites/${instancename}/koha-conf.xml" >+ >+ local tmpfile=/tmp/${instancename}_koha-conf.xml >+ >+ xmlstarlet ed -u '/yazgfs/config/enable_plugins' \ >+ -v 0 /etc/koha/sites/${name}/koha-conf.xml > ${tmpfile} >+ >+ cp -v ${tmpfile} /etc/koha/sites/${name}/koha-conf.xml >+ >+ chmod 640 /etc/koha/sites/${name}/koha-conf.xml >+ >+ chgrp ${instancename}-koha /etc/koha/sites/${name}/koha-conf.xml >+ >+ rm ${tmpfile} >+ >+ echo "Disabled Koha plugins for instance $instancename." >+} >+ >+usage() >+{ >+ local scriptname=$0 >+ cat <<EOF >+Disables Koha plugins system for specified Koha instances. >+ >+Usage: $scriptname instancename1 instancename2... >+ >+EOF >+} >+ >+# Parse command line. >+[ $# -ge 1 ] || ( usage ; die "Missing instance name..." ) >+ >+for name in "$@" >+do >+ if is_instance ${name}; then >+ if is_pluginsdir_enabled ${name}; then >+ disable_plugins ${name} >+ else >+ warn "Plugins already disabled for instance ${name}" >+ fi >+ else >+ warn "Unknown instance $name." >+ fi >+done >+ >+exit 0 >diff --git a/debian/scripts/koha-enable-plugins b/debian/scripts/koha-enable-plugins >new file mode 100755 >index 0000000..3d6f74e >--- /dev/null >+++ b/debian/scripts/koha-enable-plugins >@@ -0,0 +1,77 @@ >+#!/bin/sh >+# >+# koha-enable-plugins -- Enable Koha's KPZ plugin system >+# Copyright (c) 2014 : Indranil Das Gupta / L2C2 Technologies >+# >+# This program is free software: you can redistribute it and/or modify >+# it under the terms of the GNU General Public License as published by >+# the Free Software Foundation, either version 3 of the License, or >+# (at your option) any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with this program. If not, see <http://www.gnu.org/licenses/>. >+ >+set -e >+ >+# include helper functions >+if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then >+ . "/usr/share/koha/bin/koha-functions.sh" >+else >+ echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2 >+ exit 1 >+fi >+ >+enable_plugins() >+{ >+ local instancename=$1 >+ local kohaconf="/etc/koha/sites/${instancename}/koha-conf.xml" >+ >+ local tmpfile=/tmp/${instancename}_koha-conf.xml >+ >+ xmlstarlet ed -u '/yazgfs/config/enable_plugins' \ >+ -v 1 /etc/koha/sites/${name}/koha-conf.xml > ${tmpfile} >+ >+ cp -v ${tmpfile} /etc/koha/sites/${name}/koha-conf.xml >+ >+ chmod 640 /etc/koha/sites/${name}/koha-conf.xml >+ >+ chgrp ${instancename}-koha /etc/koha/sites/${name}/koha-conf.xml >+ >+ rm ${tmpfile} >+ >+ echo "Enabled Koha plugins for instance $instancename." >+} >+ >+usage() >+{ >+ local scriptname=$0 >+ cat <<EOF >+Enables Koha plugins system for specified Koha instances. >+ >+Usage: $scriptname instancename1 instancename2... >+ >+EOF >+} >+ >+# Parse command line. >+[ $# -ge 1 ] || ( usage ; die "Missing instance name..." ) >+ >+for name in "$@" >+do >+ if is_instance ${name}; then >+ if ! is_pluginsdir_enabled ${name}; then >+ enable_plugins ${name} >+ else >+ warn "Plugins already enabled for instance ${name}" >+ fi >+ else >+ warn "Unknown instance $name." >+ fi >+done >+ >+exit 0 >diff --git a/debian/scripts/koha-functions.sh b/debian/scripts/koha-functions.sh >index 8090fc5..715606a 100755 >--- a/debian/scripts/koha-functions.sh >+++ b/debian/scripts/koha-functions.sh >@@ -17,6 +17,8 @@ > # You should have received a copy of the GNU General Public License > # along with this program. If not, see <http://www.gnu.org/licenses/>. > >+# 2014-08-22 : Added is_pluginsdir_enabled() - Indranil Das Gupta / >+# L2C2 Technologies > > die() > { >@@ -121,6 +123,25 @@ is_indexer_running() > fi > } > >+is_pluginsdir_enabled() >+{ >+ local instancename=$1 >+ >+ if [ -e /var/lib/koha/$instancename/plugins ]; then >+ local pluginsenabled=`xmlstarlet sel -t -m \ >+ '/yazgfs/config/enable_plugins' \ >+ -v . /etc/koha/sites/$instancename/koha-conf.xml` >+ >+ if [ $pluginsenabled == "1" ]; then >+ return 0 >+ else >+ return 1 >+ fi >+ else >+ return 1 >+ fi >+} >+ > get_instances() > { > find /etc/koha/sites -mindepth 1 -maxdepth 1\ >diff --git a/debian/scripts/koha-list b/debian/scripts/koha-list >index 848494b..ce0b072 100755 >--- a/debian/scripts/koha-list >+++ b/debian/scripts/koha-list >@@ -32,25 +32,29 @@ show_instances() > local show=$1 > local show_email=$2 > local show_sip=$3 >+ local show_plugins=$4 > > for instance in $( get_instances ); do > case $show in > "all") > if instance_filter_email $instance $show_email && \ >- instance_filter_sip $instance $show_sip; then >+ instance_filter_sip $instance $show_sip && \ >+ instance_filter_plugins; then > echo $instance > fi ;; > "enabled") > if is_enabled $instance; then > if instance_filter_email $instance $show_email && \ >- instance_filter_sip $instance $show_sip; then >+ instance_filter_sip $instance $show_sip && \ >+ instance_filter_plugins; then > echo $instance > fi > fi ;; > "disabled") > if ! is_enabled $instance; then > if instance_filter_email $instance $show_email && \ >- instance_filter_sip $instance $show_sip; then >+ instance_filter_sip $instance $show_sip && \ >+ instance_filter_plugins; then > echo $instance > fi > fi ;; >@@ -58,7 +62,6 @@ show_instances() > done > } > >- > instance_filter_sip() > { > local instancename=$1 >@@ -103,6 +106,25 @@ instance_filter_email() > return 1 > } > >+instance_filter_plugins() >+{ >+ local instancename=$1 >+ local show_plugins=$2; >+ >+ case $show_plugins in >+ "all") >+ return 0 ;; >+ "enabled") >+ if is_pluginsdir_enabled $instancename; then >+ return 0 >+ fi ;; >+ "disabled") >+ if ! is_pluginsdir_enabled $instancename; then >+ return 1 >+ fi ;; >+ esac >+} >+ > set_show() > { > local show_param=$1 >@@ -136,6 +158,17 @@ set_show_sip() > fi > } > >+set_show_plugins() >+{ >+ local plugins_param=$1 >+ >+ if [ "$show_plugins" = "all" ]; then >+ show_plugins=$plugins_param >+ else >+ die "Error: --plugins and --noplugins are mutually exclusive." >+ fi >+} >+ > usage() > { > local scriptname=$0 >@@ -152,6 +185,8 @@ Options: > --noemail Only show instances that do not have email enabled > --sip Only show instances that have SIP enabled > --nosip Only show instances that do not have SIP enabled >+ --plugins Only show instances that have Koha plugins enabled >+ --noplugins Only show instances that do not have Koha plugins enabled > --help | -h Show this help > > The filtering options can be combined, and you probably want to do this >@@ -163,7 +198,7 @@ show="all" > show_email="all" > show_sip="all" > >-args=$(getopt -l help,enabled,disabled,email,noemail,sip,nosip -o h -n $0 -- "$@") >+args=$(getopt -l help,enabled,disabled,email,noemail,sip,nosip,plugins,noplugins -o h -n $0 -- "$@") > set -- $args > > while [ ! -z "$1" ] >@@ -174,6 +209,8 @@ do > --noemail) set_show_email "disabled" ;; > --sip) set_show_sip "enabled" ;; > --nosip) set_show_sip "disabled" ;; >+ --plugins) set_show_plugins "enabled" ;; >+--noplugins) set_show_plugins "disabled" ;; > --enabled) set_show "enabled" ;; > --disabled) set_show "disabled" ;; > *) break;; >@@ -181,6 +218,6 @@ do > shift > done > >-show_instances $show $show_email $show_sip >+show_instances $show $show_email $show_sip $show_plugins > > exit 0 >-- >1.8.1.2 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 12805
: 31112