Subversion Repositories oidplus

Compare Revisions

No changes between revisions

Regard whitespace Rev 1429 → Rev 1430

/trunk/dev/release.sh
108,5 → 108,7
 
# 8. (ViaThinkSoft internal / runs automatically) Sync SVN to GitHub
 
# 9. (ViaThinkSoft internal / runs automatically) Run plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_v3
 
# 9. (ViaThinkSoft internal / runs automatically) Run plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_git
# or plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_svn
# depending wheather you want to use GIT or SVN as your development base
# (Repos are read from includes/edition.ini)
/trunk/plugins/viathinksoft/adminPages/900_software_update/OIDplusPageAdminSoftwareUpdate.class.php
242,7 → 242,7
if (isset(OIDplus::getEditionInfo()['svnrepo']) && (OIDplus::getEditionInfo()['svnrepo'] != '')) {
$out['text'] .= '<p><b>'._L('Method A').'</b>: '._L('Install OIDplus using the subversion tool in your SSH/Linux shell using the command <code>svn co %1</code> and update it regularly with the command <code>svn update</code> . This will automatically download the latest version and check for conflicts.',htmlentities(OIDplus::getEditionInfo()['svnrepo']).'/trunk/');
if (!str_starts_with(PHP_OS, 'WIN')) {
$out['text'] .= ' '._L('Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>chown -R</code> the files after invoking <code>%1</code>','svn update');
$out['text'] .= ' '._L('Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>%1</code> the files after invoking <code>%2</code>','chown -R ...','svn update');
}
$out['text'] .= '</p>';
} else {
252,7 → 252,7
if (isset(OIDplus::getEditionInfo()['gitrepo']) && (OIDplus::getEditionInfo()['gitrepo'] != '')) {
$out['text'] .= '<p><b>'._L('Method B').'</b>: '._L('Install OIDplus using the Git client in your SSH/Linux shell using the command <code>git clone %1</code> and update it regularly with the command <code>git pull</code> . This will automatically download the latest version and check for conflicts.',htmlentities(OIDplus::getEditionInfo()['gitrepo'].'.git'));
if (!str_starts_with(PHP_OS, 'WIN')) {
$out['text'] .= ' '._L('Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>chown -R</code> the files after invoking <code>%1</code>','git pull');
$out['text'] .= ' '._L('Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>%1</code> the files after invoking <code>%2</code>','chown -R ...','git pull');
}
$out['text'] .= '</p>';
} else {
260,7 → 260,7
}
 
if (isset(OIDplus::getEditionInfo()['downloadpage']) && (OIDplus::getEditionInfo()['downloadpage'] != '')) {
$out['text'] .= '<p><b>'._L('Method C').'</b>: '._L('Install OIDplus by downloading a TAR.GZ file from %1, which contains an SVN snapshot, and extract it to your webspace. The TAR.GZ file contains a file named "changelog.json.php" which contains the current program version. This update-tool will then try to update your files on-the-fly by downloading them from the ViaThinkSoft SVN repository directly into your webspace directory. A change conflict detection is NOT implemented. It is required that the files on your webspace have create/write/delete permissions. Only recommended if you have no access to the SSH/Linux shell.','<a href="'.OIDplus::getEditionInfo()['downloadpage'].'">'.parse_url(OIDplus::getEditionInfo()['downloadpage'])['host'].'</a>').'</p>';
$out['text'] .= '<p><b>'._L('Method C').'</b>: '._L('Install OIDplus by downloading an archive file from %1, which contains the latest development version, and extract it to your webspace. This update-tool will then update the files using change-scripts from the remote update server. It is required that the files on your webspace have create/write/delete permissions.','<a href="'.OIDplus::getEditionInfo()['downloadpage'].'">'.parse_url(OIDplus::getEditionInfo()['downloadpage'])['host'].'</a>').'</p>';
} else {
$out['text'] .= '<p><b>'._L('Method C').'</b>: '._L('Distribution via %1 is not possible with this edition of OIDplus','Snapshot').'</p>';
}
286,7 → 286,7
$requireInfo = _L('shell access with Git client');
$updateCommand = $this->getGitCommand();
} else if ($installType === 'manual') {
$out['text'] .= '<p>'._L('You are using <b>method C</b> (Snapshot TAR.GZ file).').'</p>';
$out['text'] .= '<p>'._L('You are using <b>method C</b> (Snapshot file).').'</p>';
$requireInfo = ''; // unused
$updateCommand = ''; // unused
} else {
359,7 → 359,7
 
// TODO: Open "system_file_check" without page reload.
// TODO: Only show link if the plugin is installed
$out['text'] .= '<p><font color="red">'.mb_strtoupper(_L('Warning')).': '._L('Please make a backup of your files before updating. In case of an error, the OIDplus system (including this update-assistant) might become unavailable. Also, since the web-update does not contain collision-detection, changes you have applied (like adding, removing or modified files) might get reverted/lost! (<a href="%1">Click here to check which files have been modified</a>) In case the update fails, you can download and extract the complete <a href="%s">TAR.GZ file</a> again. Since all your data should lay inside the folder "userdata" and "userdata_pub", this should be safe.','?goto='.urlencode('oidplus:system_file_check'),OIDplus::getEditionInfo()['downloadpage']).'</font></p>';
$out['text'] .= '<p><font color="red">'.mb_strtoupper(_L('Warning')).': '._L('Please make a backup of your files before updating. In case of an error, the OIDplus system (including this update-assistant) might become unavailable. Also, since the web-update does not contain collision-detection, changes you have applied (like adding, removing or modified files) might get reverted/lost! (<a href="%1">Click here to check which files have been modified</a>) In case the update fails, you can download and extract the complete <a href="%s">archive file</a> again. Since all your data should lay inside the folder "userdata" and "userdata_pub", this should be safe.','?goto='.urlencode('oidplus:system_file_check'),OIDplus::getEditionInfo()['downloadpage']).'</font></p>';
 
$out['text'] .= '</div>';
 
/trunk/plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/trunk/plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_v3
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/trunk/plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_git
0,0 → 1,184
#!/usr/bin/env php
<?php
 
/*
* OIDplus 2.0
* Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
 
// This script will be called at the ViaThinkSoft server side
 
use ViaThinkSoft\OIDplus\OIDplus;
 
require_once __DIR__.'/funcs.inc.php';
 
include __DIR__.'/../../../../../includes/oidplus.inc.php';
 
 
// Generate keypair with:
// openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:8192
// openssl rsa -pubout -in private.pem -out public.pem
 
$argc = $_SERVER['argc']; // to please Eclipse for PHP
$argv = $_SERVER['argv']; // to please Eclipse for PHP
 
if (PHP_SAPI != 'cli') {
fwrite(STDERR, "This file can only be invoked in CLI mode.\n");
die();
}
 
if (DIRECTORY_SEPARATOR != '/') {
fwrite(STDERR, "This script can only run on Unix like systems\n");
exit(2);
}
 
if ($argc != 4) {
fwrite(STDERR, "Usage: ".$argv[0]." <targetpath> <privkey> <force(1|0)>\n");
exit(2);
}
 
$output_dir = $argv[1];
$priv_key = $argv[2];
$force = $argv[3];
 
if (!is_dir($output_dir)) {
fwrite(STDERR, "Path $output_dir does not exist!\n");
exit(1);
}
 
if (!is_file($priv_key)) {
fwrite(STDERR, "Private key file $priv_key does not exist!\n");
exit(1);
}
 
if (($force != '1') && ($force != '0')) {
fwrite(STDERR, "Argument 'force' must be 0 or 1\n");
exit(1);
}
 
 
// Step 0: We need two copies of a up-to-date GIT working copy (to compare old-new for changescripts)
// We do not delete the file in /tmp, because we can re-use it
// It's no secret, so other users can read it. They must not write to it, though.
 
foreach (['a','b'] as $ab) {
$tmpdir = '/tmp/oidplus_git_'.$ab;
if (!is_dir($tmpdir)) {
exec('git clone '.escapeshellarg(OIDplus::getEditionInfo()['gitrepo']).' '.escapeshellarg($tmpdir).' --quiet', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "GIT Clone failed\n");
exit(1);
}
}
exec('cd '.escapeshellarg($tmpdir).' && git reset --hard --quiet && git checkout master --quiet && git pull --quiet', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "GIT Pull failed\n");
exit(1);
}
}
 
// Step 1: List all GIT commits and determine its OIDplus versions
 
$git_version_cache_file = OIDplus::localpath() . 'userdata/cache/git_version_cache.json';
$git_version_cache = file_exists($git_version_cache_file) ? json_decode(file_get_contents($git_version_cache_file),true) : ["git-to-ver"=>[],"version-first-commit"=>[]];
 
$ec = -1;
$out = array();
exec('cd /tmp/oidplus_git_a && git reset --hard --quiet && git checkout master --quiet && git log --reverse --quiet', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "GIT Log failed\n");
exit(1);
}
 
$cont = implode("\n", $out);
preg_match_all('%^commit (.+)\n.+trunk@(\d+) 02e%smU', $cont, $git_commits, PREG_SET_ORDER);
$svn_git = [];
foreach ($git_commits as $git_commit) {
// ViaThinkSoft uses "Git-to-Svn" to synchronize SVN revisions to GitHub
// We need to find the revision numbers for each commit, so we can identify
// which commits were revision 1..1425, so we can see where version 2.0.0.<svnrev> applies
// and when changelog.json.php applies.
$svn_git[$git_commit[1]] = $git_commit[2];
}
preg_match_all('%^commit (.+)\n%smU', $cont, $git_commits, PREG_SET_ORDER);
foreach ($git_commits as $git_commit) {
if (isset($git_version_cache["git-to-ver"][$git_commit[1]])) continue;
 
$ary = explode('/',OIDplus::getEditionInfo()['gitrepo']);
$github_user = $ary[3];
$github_project = $ary[4];
$v3_versionfile = 'https://raw.githubusercontent.com/'.$github_user.'/'.$github_project.'/'.$git_commit[1].'/changelog.json.php';
 
$svn = $svn_git[$git_commit[1]] ?? 0;
if (($svn >= 1) && ($svn <= 1425)) {
// SVN Revision 0..1425 were named 2.0.0.<svnrev>. They did not have a changelog.json.php. Every revision was a new version.
$ver = "2.0.0.$svn";
$git_version_cache["git-to-ver"][$git_commit[1]] = $ver;
if (!isset($git_version_cache["version-first-commit"][$ver])) {
$git_version_cache["version-first-commit"][$ver] = $git_commit[1];
}
} else if ($ver = OIDplus::getVersion($v3_versionfile)) {
// Beginning with SVN revision 1426, versions are defined by the first revision/commit that adds a new version to changelog.json.php
$git_version_cache["git-to-ver"][$git_commit[1]] = $ver;
if (!isset($git_version_cache["version-first-commit"][$ver])) {
$git_version_cache["version-first-commit"][$ver] = $git_commit[1];
}
} else {
fwrite(STDERR, "PROBLEM: " . $git_commit[1] . "\n");
}
}
 
file_put_contents($git_version_cache_file, json_encode($git_version_cache, JSON_PRETTY_PRINT));
 
// Step 2: Write change-scripts (for ZIP/TAR-GZ distribution channel)
// The order of $git_version_cache is very critical here!
 
$prev_commit = '-';
$prev_version = '2.0.0.0';
foreach ($git_version_cache["version-first-commit"] as $version => $version_first_commit) {
$changescript_file = $output_dir.'/changescript_'.$version.'.txt';
if ($force || !file_exists($changescript_file) || !file_exists($changescript_file.'.gz')) {
echo "Generate changescript for version $version ($version_first_commit)\n";
 
if ($prev_commit == '-') {
$old_dir = '/tmp/oidplus_git_empty';
if (!is_dir($old_dir)) mkdir($old_dir);
} else {
$old_dir = '/tmp/oidplus_git_a';
exec('cd '.escapeshellarg($old_dir).' && git reset --hard --quiet && git checkout '.escapeshellarg($prev_commit).' --quiet >/dev/null 2>&1', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "GIT Checkout $prev_commit failed\n");
exit(1);
}
hotfix_dir($prev_version, $old_dir);
}
 
$new_dir = '/tmp/oidplus_git_b';
exec('cd '.escapeshellarg($new_dir).' && git reset --hard --quiet && git checkout '.escapeshellarg($version_first_commit).' --quiet >/dev/null 2>&1', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "GIT Checkout $version_first_commit failed\n");
exit(1);
}
hotfix_dir($version, $new_dir);
 
oidplus_create_changescript($old_dir, $new_dir, $changescript_file, $prev_version, $version, $priv_key);
 
if ($prev_commit == '-') {
rmdir($old_dir);
}
}
$prev_commit = $version_first_commit;
$prev_version = $version;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/plugins/viathinksoft/adminPages/900_software_update/private/gen_serverside_svn
0,0 → 1,168
#!/usr/bin/env php
<?php
 
/*
* OIDplus 2.0
* Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
 
// This script will be called at the ViaThinkSoft server side
 
use ViaThinkSoft\OIDplus\OIDplus;
 
require_once __DIR__.'/funcs.inc.php';
 
include __DIR__.'/../../../../../includes/oidplus.inc.php';
 
 
// Generate keypair with:
// openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:8192
// openssl rsa -pubout -in private.pem -out public.pem
 
$argc = $_SERVER['argc']; // to please Eclipse for PHP
$argv = $_SERVER['argv']; // to please Eclipse for PHP
 
if (PHP_SAPI != 'cli') {
fwrite(STDERR, "This file can only be invoked in CLI mode.\n");
die();
}
 
if (DIRECTORY_SEPARATOR != '/') {
fwrite(STDERR, "This script can only run on Unix like systems\n");
exit(2);
}
 
if ($argc != 4) {
fwrite(STDERR, "Usage: ".$argv[0]." <targetpath> <privkey> <force(1|0)>\n");
exit(2);
}
 
$output_dir = $argv[1];
$priv_key = $argv[2];
$force = $argv[3];
 
if (!is_dir($output_dir)) {
fwrite(STDERR, "Path $output_dir does not exist!\n");
exit(1);
}
 
if (!is_file($priv_key)) {
fwrite(STDERR, "Private key file $priv_key does not exist!\n");
exit(1);
}
 
if (($force != '1') && ($force != '0')) {
fwrite(STDERR, "Argument 'force' must be 0 or 1\n");
exit(1);
}
 
 
// Step 1: List all SVN revisions and determine their OIDplus versions
 
$svn_version_cache_file = OIDplus::localpath() . 'userdata/cache/svn_version_cache.json';
$svn_version_cache = file_exists($svn_version_cache_file) ? json_decode(file_get_contents($svn_version_cache_file),true) : ["svn-to-ver"=>[],"version-first-revision"=>[]];
 
 
$out = array();
$ec = -1;
exec('svn info '.OIDplus::getEditionInfo()['svnrepo'].'/trunk/ | grep "Revision:" | cut -d " " -f 2', $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "SVN Info failed\n");
exit(1);
}
$max_svn = implode("", $out);
 
for ($i=2; $i<=$max_svn; $i++) {
echo "SVN revision $i / $max_svn\r";
 
if (isset($svn_version_cache["svn-to-ver"][$i])) continue;
 
$v3_versionfile = OIDplus::getEditionInfo()['svnrepo'].'/trunk/changelog.json.php?p='.$i;
 
if (($i >= 1) && ($i <= 1425)) {
// SVN Revision 0..1425 were named 2.0.0.<svnrev>. They did not have a changelog.json.php. Every revision was a new version.
$ver = "2.0.0.$i";
$svn_version_cache["svn-to-ver"][$i] = $ver;
if (!isset($svn_version_cache["version-first-revision"][$ver])) {
$svn_version_cache["version-first-revision"][$ver] = $i;
}
} else if ($ver = OIDplus::getVersion($v3_versionfile)) {
// Beginning with SVN revision 1426, versions are defined by the first revision/commit that adds a new version to changelog.json.php
$svn_version_cache["svn-to-ver"][$i] = $ver;
if (!isset($svn_version_cache["version-first-revision"][$ver])) {
$svn_version_cache["version-first-revision"][$ver] = $i;
}
} else {
fwrite(STDERR, "PROBLEM: " . $i . "\n");
}
}
 
file_put_contents($svn_version_cache_file, json_encode($svn_version_cache, JSON_PRETTY_PRINT));
 
// Step 2: Write change-scripts (for ZIP/TAR-GZ distribution channel)
// The order of $svn_version_cache is very critical here!
 
$prev_commit = '-';
$prev_version = '2.0.0.0';
foreach ($svn_version_cache["version-first-revision"] as $version => $version_first_revision) {
$i = $version_first_revision;
 
// changescript_file = $output_dir."/update_".($i-1)."_to_$i.txt"; // Version 2 name
$changescript_file = $output_dir.'/changescript_'.$version.'.txt'; // Version 3 name
if ($force || !file_exists($changescript_file) || !file_exists($changescript_file.'.gz')) {
echo "Generate changescript for version $version ($version_first_revision)\n";
 
if ($prev_commit == '-') {
$old_dir = '/tmp/oidplus_svntmp2_0/';
if (!is_dir($old_dir)) mkdir($old_dir);
} else {
$old_dir = "/tmp/oidplus_svntmp2_".($i-1)."/";
if ($old_dir && is_dir($old_dir)) exec("rm -rf $old_dir", $out, $ec);
exec("svn co ".OIDplus::getEditionInfo()['svnrepo']."/trunk/@".($i-1)." $old_dir", $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "Checkout of SVN Rev ".($i-1)." failed!!!\n");
exit(1);
}
hotfix_dir($prev_version, $old_dir);
}
 
$new_dir = "/tmp/oidplus_svntmp2_".$i."/";
if ($new_dir && is_dir($new_dir)) exec("rm -rf $new_dir", $out, $ec);
exec("svn co ".OIDplus::getEditionInfo()['svnrepo']."/trunk/@$i $new_dir", $out, $ec);
if ($ec != 0) {
fwrite(STDERR, "Checkout of SVN Rev ".($i)." failed!!!\n");
exit(1);
}
hotfix_dir($version, $new_dir);
 
oidplus_create_changescript($old_dir, $new_dir, $changescript_file, $prev_version, $version, $priv_key);
 
if ($prev_commit == '-') {
if ($old_dir && is_dir($old_dir)) {
$ec = -1;
$out = array();
exec("rm -rf $old_dir", $out, $ec);
}
}
if ($new_dir && is_dir($new_dir)) {
$ec = -1;
$out = array();
exec("rm -rf $new_dir", $out, $ec);
}
}
 
$prev_commit = $version_first_revision;
$prev_version = $version;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/plugins/viathinksoft/adminPages/902_systemfile_check/OIDplusPageAdminSystemFileCheck.class.php
69,7 → 69,7
$out['text'] .= '<p>'._L('Please note: If you believe that you were hacked, you should not trust the output of this tool, because it might be compromised, too.').'</p>';
 
if ($parts[1] !== 'go') {
$out['text'] .= '<p><input type="button" '.OIDplus::gui()->link('oidplus:system_file_check$go').' value="'._L('Start scan').'"></p>';
$out['text'] .= '<p><input type="button" '.OIDplus::gui()->link('oidplus:system_file_check$go').' value="'._L('Start scan').'"> ('._L('This process might be slow on some systems').')</p>';
} else {
@set_time_limit(0);
 
/trunk/plugins/viathinksoft/adminPages/902_systemfile_check/checksums.json
Cannot display: file marked as a binary type.
svn:mime-type = application/json
/trunk/plugins/viathinksoft/database/mysqli/OIDplusDatabaseConnectionMySQLi.class.php
280,7 → 280,7
protected function doGetSlang(bool $mustExist=true)/*: ?OIDplusSqlSlangPlugin*/ {
$slang = OIDplus::getSqlSlangPlugin('mysql');
if (is_null($slang)) {
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.','mysql'));
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.','mysql'));
}
return $slang;
}
/trunk/plugins/viathinksoft/database/oci/OIDplusDatabaseConnectionOci.class.php
214,7 → 214,7
protected function doGetSlang(bool $mustExist=true)/*: ?OIDplusSqlSlangPlugin*/ {
$slang = OIDplus::getSqlSlangPlugin('oracle');
if (is_null($slang)) {
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.','oracle'));
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.','oracle'));
}
return $slang;
}
/trunk/plugins/viathinksoft/database/pgsql/OIDplusDatabaseConnectionPgSql.class.php
233,7 → 233,7
protected function doGetSlang(bool $mustExist=true)/*: ?OIDplusSqlSlangPlugin*/ {
$slang = OIDplus::getSqlSlangPlugin('pgsql');
if (is_null($slang)) {
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.','pgsql'));
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.','pgsql'));
}
return $slang;
}
/trunk/plugins/viathinksoft/database/sqlite3/OIDplusDatabaseConnectionSQLite3.class.php
229,7 → 229,7
protected function doGetSlang(bool $mustExist=true)/*: ?OIDplusSqlSlangPlugin*/ {
$slang = OIDplus::getSqlSlangPlugin('sqlite');
if (is_null($slang)) {
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.','sqlite'));
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.','sqlite'));
}
return $slang;
}
/trunk/plugins/viathinksoft/database/sqlsrv/OIDplusDatabaseConnectionSqlSrv.class.php
225,7 → 225,7
protected function doGetSlang(bool $mustExist=true)/*: ?OIDplusSqlSlangPlugin*/ {
$slang = OIDplus::getSqlSlangPlugin('mssql');
if (is_null($slang)) {
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.','mssql'));
throw new OIDplusConfigInitializationException(_L('SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.','mssql'));
}
return $slang;
}
/trunk/plugins/viathinksoft/language/dede/messages.xml
3542,10 → 3542,10
</message>
<message>
<source><![CDATA[
Install OIDplus by downloading a TAR.GZ file from %1, which contains an SVN snapshot, and extract it to your webspace. The TAR.GZ file contains a file named "changelog.json.php" which contains the current program version. This update-tool will then try to update your files on-the-fly by downloading them from the ViaThinkSoft SVN repository directly into your webspace directory. A change conflict detection is NOT implemented. It is required that the files on your webspace have create/write/delete permissions. Only recommended if you have no access to the SSH/Linux shell.
Install OIDplus by downloading an archive file from %1, which contains the latest development version, and extract it to your webspace. This update-tool will then update the files using change-scripts from the remote update server. It is required that the files on your webspace have create/write/delete permissions.
]]></source>
<target><![CDATA[
OIDplus durch das Downloaden und Entpacken eines TAR.GZ-Archivs von %1 installieren. Dieses TAR.GZ-Archiv enthält einen Snapshot der aktuellen SVN-Revision, sowie eine Datei "changelog.json.php", die die aktuelle Programmversion enthält. Dieses Update-Tool wird versuchen, die geänderten Dateien "on-the-fly" aus dem ViaThinkSoft SVN-Repository herunterzuladen und im Serververzeichnis zu entpacken (Schreibrechte erforderlich). Achtung: Ein Änderungskonflikt wird nicht erkannt und führt zum Überschreiben der Datei! Die TAR.GZ-Archiv-Methode ist nur empfohlen, wenn die andere Methode (Verwenden eines Subversion-Clients) nicht möglich ist.
OIDplus durch das Downloaden und Entpacken eines komprimierten Archivs von %1 installieren. Diese Archivdatei enthält die aktuelle Entwickler-Version von OIDplus. Dieses Update-Tool aktualisiert das System durch Herunterladen von Änderungs-Scripts von einem Update-Server. Hierfür sind Schreibrechte am Serververzeichnis erforderlich.
]]></target>
</message>
<message>
4222,10 → 4222,10
</message>
<message>
<source><![CDATA[
Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>chown -R</code> the files after invoking <code>%1</code>
Make sure that you invoke the <code>%1</code> command as the user who runs PHP or that you <code>%1</code> the files after invoking <code>%2</code>
]]></source>
<target><![CDATA[
Stellen Sie bitte sicher, dass der Befehl <code>%1</code> als der Benutzer ausgeführt wird, der die PHP-Scripte ausführt, oder führen Sie nach dem Update (<code>%1</code>) noch ein <code>chown -R</code> durch.
Stellen Sie bitte sicher, dass der Befehl <code>%1</code> als der Benutzer ausgeführt wird, der die PHP-Scripte ausführt, oder führen Sie nach dem Update (<code>%2</code>) noch ein <code>%1</code> durch.
]]></target>
</message>
<message>
5862,10 → 5862,10
</message>
<message>
<source><![CDATA[
Please make a backup of your files before updating. In case of an error, the OIDplus system (including this update-assistant) might become unavailable. Also, since the web-update does not contain collision-detection, changes you have applied (like adding, removing or modified files) might get reverted/lost! (<a href="%1">Click here to check which files have been modified</a>) In case the update fails, you can download and extract the complete <a href="%s">TAR.GZ file</a> again. Since all your data should lay inside the folder "userdata" and "userdata_pub", this should be safe.
Please make a backup of your files before updating. In case of an error, the OIDplus system (including this update-assistant) might become unavailable. Also, since the web-update does not contain collision-detection, changes you have applied (like adding, removing or modified files) might get reverted/lost! (<a href="%1">Click here to check which files have been modified</a>) In case the update fails, you can download and extract the complete <a href="%s">archive file</a> again. Since all your data should lay inside the folder "userdata" and "userdata_pub", this should be safe.
]]></source>
<target><![CDATA[
Bitte fertigen Sie eine Datensicherung Ihrer Dateien vor der Aktualisierung an. Im Falle eines Fehlers könnte das OIDplus-System (inklusive diesem Update-Assistenten) ausfallen. Außerdem besitzt dieses Web-Update keine Kollissions-Kontrolle, d.h. Datei-Änderungen, die Sie durchgeführt haben, können zurückgesetzt/verloren gehen. (<a href="%1">Klicken Sie hier um zu sehen, welche Dateien geändert wurden</a>) Im Falle eines Fehlschlags können Sie ein komplettes <a href="%s">TAR.GZ-Archiv</a> herunterladen und hier entpacken. Da alle Ihre Daten innerhalb des Ordners "userdata" und "userdata_pub" liegen sollten, sollte dies sicher sein.
Bitte fertigen Sie eine Datensicherung Ihrer Dateien vor der Aktualisierung an. Im Falle eines Fehlers könnte das OIDplus-System (inklusive diesem Update-Assistenten) ausfallen. Außerdem besitzt dieses Web-Update keine Kollissions-Kontrolle, d.h. Datei-Änderungen, die Sie durchgeführt haben, können zurückgesetzt/verloren gehen. (<a href="%1">Klicken Sie hier um zu sehen, welche Dateien geändert wurden</a>) Im Falle eines Fehlschlags können Sie eine <a href="%s">Archivdatei</a> herunterladen und hier entpacken. Da alle Ihre Daten innerhalb des Ordners "userdata" und "userdata_pub" liegen sollten, sollte dies sicher sein.
]]></target>
</message>
<message>
6790,10 → 6790,10
</message>
<message>
<source><![CDATA[
SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an SVN snapshot or OIDplus TAR.GZ file.
SQL-Slang plugin "%1" is missing. Please check if it exists in the directory "plugin/sqlSlang". If it is not existing, please recover it from an GIT/SVN snapshot or OIDplus archive file.
]]></source>
<target><![CDATA[
SQL-Dialekt-Plugin "%1" fehlt. Bitte prüfen Sie, ob es im Verzeichnis "plugin/sqlSlang" existiert. Wenn nicht, dann stellen Sie es bitte aus einem SVN-Snapshot oder OIDplus-TAR.GZ-Archiv wieder her.
SQL-Dialekt-Plugin "%1" fehlt. Bitte prüfen Sie, ob es im Verzeichnis "plugin/sqlSlang" existiert. Wenn nicht, dann stellen Sie es bitte aus einem GIT/SVN-Snapshot oder OIDplus-Archivdatei wieder her.
]]></target>
</message>
<message>
8158,6 → 8158,14
</message>
<message>
<source><![CDATA[
This process might be slow on some systems
]]></source>
<target><![CDATA[
Dieser Vorgang kann auf einigen Systemen langsam sein
]]></target>
</message>
<message>
<source><![CDATA[
This request is invalid
]]></source>
<target><![CDATA[
8998,10 → 9006,10
</message>
<message>
<source><![CDATA[
You are using <b>method C</b> (Snapshot TAR.GZ file).
You are using <b>method C</b> (Snapshot file).
]]></source>
<target><![CDATA[
Sie verwenden <b>Methode C</b> (TAR.GZ-Archiv mit Snapshot).
Sie verwenden <b>Methode C</b> (Datei mit Snapshot).
]]></target>
</message>
<message>