4 perl -e'require "/etc/gforge/local.pl"; print "*:*:$sys_dbname:$sys_dbuser:$sys_dbpasswd\n"' > $tmp3
6 projects=$(echo "SELECT g.unix_group_name from groups g, group_plugin gp, plugins p where g.group_id = gp.group_id and gp.plugin_id = p.plugin_id and p.plugin_name = 'mediawiki' ;" \
7 | PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge \
11 wdprefix=/var/lib/gforge/plugins/mediawiki/wikidata
13 for project in $projects ; do
14 if [ ! -d $wdprefix/$project/images ] ; then
15 mkdir -p $wdprefix/$project/images
17 if [ ! -e $wdprefix/$project/LocalSettings.php ] ; then
18 cat > $wdprefix/$project/LocalSettings.php <<EOF
20 // To enable uploads for the wiki, you'll need to edit this value:
21 \$wgEnableUploads = false;
22 // Don't forget to "chown www-data $wdprefix/$project/images"
24 // Edit permissions for group members
25 \$wgGroupPermissions['Members']['edit'] = true;
26 \$wgGroupPermissions['Members']['createpage'] = true;
27 \$wgGroupPermissions['Members']['createtalk'] = true;
29 // Edit permissions for non-members
30 \$wgGroupPermissions['ForgeUsers']['edit'] = false;
31 \$wgGroupPermissions['ForgeUsers']['createpage'] = false;
32 \$wgGroupPermissions['ForgeUsers']['createtalk'] = false;
34 // Edit permissions for anonymous users
35 \$wgGroupPermissions['*']['edit'] = false;
36 \$wgGroupPermissions['*']['createpage'] = false;
37 \$wgGroupPermissions['*']['createtalk'] = false;
41 filteredprojects="$filteredprojects $project"
45 projects=$filteredprojects
47 for project in $projects ; do
48 schema=$(echo plugin_mediawiki_$project | sed s/-/_/g)
53 if su -s /bin/sh postgres -c "/usr/bin/psql gforge" 1> $tmp1 2> $tmp2 <<-EOF \
54 && [ "$(tail -n +2 $tmp1 | head -1)" = 'CREATE SCHEMA' ] ;
55 SET LC_MESSAGES = 'C' ;
56 CREATE SCHEMA $schema ;
57 ALTER SCHEMA $schema OWNER TO gforge;
62 echo "CREATE SCHEMA's STDOUT:"
64 echo "CREATE SCHEMA's STDERR:"
66 rm -f $tmp1 $tmp2 $tmp3
73 if PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge 1> $tmp1 2> $tmp2 <<-EOF \
74 && true || [ "$(tail -1 $tmp1)" = 'COMMIT' ] ;
75 SET search_path = "$schema" ;
76 \i /usr/share/mediawiki/maintenance/postgres/tables.sql
77 CREATE TEXT SEARCH CONFIGURATION $schema.default ( COPY = pg_catalog.english );
83 echo "Database creation STDOUT:"
85 echo "Database creation STDERR:"
87 rm -f $tmp1 $tmp2 $tmp3
93 projects=$(echo "SELECT g.unix_group_name from groups g, group_plugin gp, plugins p where g.group_id = gp.group_id and gp.plugin_id = p.plugin_id and p.plugin_name = 'mediawiki' ;" \
94 | PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge \
99 # Disable read anonymous if project is private
100 for project in $projects ; do
101 ispublic=$(echo "SELECT is_public from groups where unix_group_name = '${project}' ;" \
102 | PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge \
106 # Purge anonymous read
107 cat $wdprefix/$project/LocalSettings.php | grep -vi "\$wgGroupPermissions\['Members'\]\['read'\]" > $tmp4
108 cat $tmp4 > $wdprefix/$project/LocalSettings.php
109 cat $wdprefix/$project/LocalSettings.php | grep -vi "\$wgGroupPermissions\['\*'\]\['read'\]" > $tmp4
110 cat $tmp4 > $wdprefix/$project/LocalSettings.php
112 if [ $ispublic = '0' ] ; then
113 echo "\$wgGroupPermissions['Members']['read'] = true;" >> $wdprefix/$project/LocalSettings.php
114 echo "\$wgGroupPermissions['*']['read'] = false;" >> $wdprefix/$project/LocalSettings.php