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 admins
25 \$wgGroupPermissions['Administrators']['*'] = true;
27 // Edit permissions for group members
28 \$wgGroupPermissions['Members']['edit'] = true;
29 \$wgGroupPermissions['Members']['createpage'] = true;
30 \$wgGroupPermissions['Members']['createtalk'] = true;
32 // Edit permissions for non-members
33 \$wgGroupPermissions['ForgeUsers']['edit'] = false;
34 \$wgGroupPermissions['ForgeUsers']['createpage'] = false;
35 \$wgGroupPermissions['ForgeUsers']['createtalk'] = false;
37 // Edit permissions for anonymous users
38 \$wgGroupPermissions['*']['edit'] = false;
39 \$wgGroupPermissions['*']['createpage'] = false;
40 \$wgGroupPermissions['*']['createtalk'] = false;
44 filteredprojects="$filteredprojects $project"
48 projects=$filteredprojects
50 for project in $projects ; do
51 schema=$(echo plugin_mediawiki_$project | sed s/-/_/g)
56 if su -s /bin/sh postgres -c "/usr/bin/psql gforge" 1> $tmp1 2> $tmp2 <<-EOF \
57 && [ "$(tail -n +2 $tmp1 | head -1)" = 'CREATE SCHEMA' ] ;
58 SET LC_MESSAGES = 'C' ;
59 CREATE SCHEMA $schema ;
60 ALTER SCHEMA $schema OWNER TO gforge;
65 echo "CREATE SCHEMA's STDOUT:"
67 echo "CREATE SCHEMA's STDERR:"
69 rm -f $tmp1 $tmp2 $tmp3
76 if PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge 1> $tmp1 2> $tmp2 <<-EOF \
77 && true || [ "$(tail -1 $tmp1)" = 'COMMIT' ] ;
78 SET search_path = "$schema" ;
79 \i /usr/share/mediawiki/maintenance/postgres/tables.sql
80 CREATE TEXT SEARCH CONFIGURATION $schema.default ( COPY = pg_catalog.english );
86 echo "Database creation STDOUT:"
88 echo "Database creation STDERR:"
90 rm -f $tmp1 $tmp2 $tmp3
96 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' ;" \
97 | PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge \
102 # Disable read anonymous if project is private
103 for project in $projects ; do
104 ispublic=$(echo "SELECT is_public from groups where unix_group_name = '${project}' ;" \
105 | PGPASSFILE=$tmp3 /usr/bin/psql -U gforge gforge \
109 # Purge anonymous read
110 cat $wdprefix/$project/LocalSettings.php | grep -vi "\$wgGroupPermissions\['Members'\]\['read'\]" > $tmp4
111 cat $tmp4 > $wdprefix/$project/LocalSettings.php
112 cat $wdprefix/$project/LocalSettings.php | grep -vi "\$wgGroupPermissions\['\*'\]\['read'\]" > $tmp4
113 cat $tmp4 > $wdprefix/$project/LocalSettings.php
115 if [ $ispublic = '0' ] ; then
116 echo "\$wgGroupPermissions['Members']['read'] = true;" >> $wdprefix/$project/LocalSettings.php
117 echo "\$wgGroupPermissions['*']['read'] = false;" >> $wdprefix/$project/LocalSettings.php