/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> |