summaryrefslogtreecommitdiff
path: root/webmail/vendor
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /webmail/vendor
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'webmail/vendor')
-rwxr-xr-xwebmail/vendor/bin/rcubeinitdb.sh130
-rw-r--r--webmail/vendor/composer/installed.json53
m---------webmail/vendor/roundcube/plugin-installer0
3 files changed, 183 insertions, 0 deletions
diff --git a/webmail/vendor/bin/rcubeinitdb.sh b/webmail/vendor/bin/rcubeinitdb.sh
new file mode 100755
index 0000000..10862ea
--- /dev/null
+++ b/webmail/vendor/bin/rcubeinitdb.sh
@@ -0,0 +1,130 @@
+#!/usr/bin/env php
+<?php
+
+define('INSTALL_PATH', getcwd() . '/' );
+
+require_once INSTALL_PATH . 'program/include/clisetup.php';
+
+// get arguments
+$opts = rcube_utils::get_opt(array(
+ 'd' => 'dir',
+ 'p' => 'package',
+));
+
+if (empty($opts['dir'])) {
+ rcube::raise_error("Database schema directory not specified (--dir).", false, true);
+}
+if (empty($opts['package'])) {
+ rcube::raise_error("Database schema package name not specified (--package).", false, true);
+}
+
+// Check if directory exists
+if (!file_exists($opts['dir'])) {
+ rcube::raise_error("Specified database schema directory doesn't exist.", false, true);
+}
+
+$RC = rcube::get_instance();
+$DB = rcube_db::factory($RC->config->get('db_dsnw'));
+
+// Connect to database
+$DB->db_connect('w');
+if (!$DB->is_connected()) {
+ rcube::raise_error("Error connecting to database: " . $DB->is_error(), false, true);
+}
+
+$opts['dir'] = rtrim($opts['dir'], DIRECTORY_SEPARATOR);
+$file = $opts['dir'] . DIRECTORY_SEPARATOR . $DB->db_provider . '.initial.sql';
+if (!file_exists($file)) {
+ rcube::raise_error("No DDL file found for " . $DB->db_provider . " driver.", false, true);
+}
+
+$package = $opts['package'];
+$error = false;
+
+// read DDL file
+if ($lines = file($file)) {
+ $sql = '';
+ foreach ($lines as $line) {
+ if (preg_match('/^--/', $line) || trim($line) == '')
+ continue;
+
+ $sql .= $line . "\n";
+ if (preg_match('/(;|^GO)$/', trim($line))) {
+ @$DB->query(fix_table_names($sql));
+ $sql = '';
+ if ($error = $DB->is_error()) {
+ break;
+ }
+ }
+ }
+}
+
+if (!$error) {
+ $version = date('Ymd00');
+ $system_table = $DB->quote_identifier($DB->table_name('system'));
+ $name_col = $DB->quote_identifier('name');
+ $value_col = $DB->quote_identifier('value');
+ $package_version = $package . '-version';
+
+ $DB->query("SELECT * FROM $system_table WHERE $name_col=?",
+ $package_version);
+
+ if ($DB->fetch_assoc()) {
+ $DB->query("UPDATE $system_table SET $value_col=? WHERE $name_col=?",
+ $version, $package_version);
+ }
+ else {
+ $DB->query("INSERT INTO $system_table ($name_col, $value_col) VALUES (?, ?)",
+ $package_version, $version);
+ }
+
+ $error = $DB->is_error();
+}
+
+if ($error) {
+ echo "[FAILED]\n";
+ rcube::raise_error("Error in DDL schema $file: $error", false, true);
+}
+echo "[OK]\n";
+
+
+function fix_table_names($sql)
+{
+ global $DB, $RC;
+
+ $prefix = $RC->config->get('db_prefix');
+ $engine = $DB->db_provider;
+
+ if (empty($prefix)) {
+ return $sql;
+ }
+
+ $tables = array();
+ $sequences = array();
+
+ // find table names
+ if (preg_match_all('/CREATE TABLE (\[dbo\]\.|IF NOT EXISTS )?[`"\[\]]*([^`"\[\] \r\n]+)/i', $sql, $matches)) {
+ foreach ($matches[2] as $table) {
+ $tables[$table] = $prefix . $table;
+ }
+ }
+ // find sequence names
+ if ($engine == 'postgres' && preg_match_all('/CREATE SEQUENCE (IF NOT EXISTS )?"?([^" \n\r]+)/i', $sql, $matches)) {
+ foreach ($matches[2] as $sequence) {
+ $sequences[$sequence] = $prefix . $sequence;
+ }
+ }
+
+ // replace table names
+ foreach ($tables as $table => $real_table) {
+ $sql = preg_replace("/([^a-zA-Z0-9_])$table([^a-zA-Z0-9_])/", "\\1$real_table\\2", $sql);
+ }
+ // replace sequence names
+ foreach ($sequences as $sequence => $real_sequence) {
+ $sql = preg_replace("/([^a-zA-Z0-9_])$sequence([^a-zA-Z0-9_])/", "\\1$real_sequence\\2", $sql);
+ }
+
+ return $sql;
+}
+
+?>
diff --git a/webmail/vendor/composer/installed.json b/webmail/vendor/composer/installed.json
new file mode 100644
index 0000000..c87bfee
--- /dev/null
+++ b/webmail/vendor/composer/installed.json
@@ -0,0 +1,53 @@
+[
+ {
+ "name": "roundcube/plugin-installer",
+ "version": "dev-master",
+ "version_normalized": "9999999-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roundcube/plugin-installer.git",
+ "reference": "8a050c5a59d3a70218b1c598f3bba08a8872fac8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roundcube/plugin-installer/zipball/8a050c5a59d3a70218b1c598f3bba08a8872fac8",
+ "reference": "8a050c5a59d3a70218b1c598f3bba08a8872fac8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "composer/composer": "*"
+ },
+ "time": "2013-07-27 09:11:42",
+ "bin": [
+ "src/bin/rcubeinitdb.sh"
+ ],
+ "type": "composer-installer",
+ "extra": {
+ "class": "Roundcube\\Composer\\PluginInstaller"
+ },
+ "installation-source": "source",
+ "autoload": {
+ "psr-0": {
+ "Roundcube\\Composer": "src/"
+ }
+ },
+ "notification-url": "http://plugins.roundcube.net/downloads/%package%",
+ "license": [
+ "GPL-3.0+"
+ ],
+ "authors": [
+ {
+ "name": "Till Klampaeckel",
+ "email": "till@php.net"
+ },
+ {
+ "name": "Thomas Bruederli",
+ "email": "thomas@roundcube.net"
+ }
+ ],
+ "description": "A composer-installer for Roundcube plugins."
+ }
+]
diff --git a/webmail/vendor/roundcube/plugin-installer b/webmail/vendor/roundcube/plugin-installer
new file mode 160000
+Subproject 8a050c5a59d3a70218b1c598f3bba08a8872fac