From: <sok...@us...> - 2017-05-16 23:22:05
|
Revision: 62621 http://sourceforge.net/p/tikiwiki/code/62621 Author: sokoloski Date: 2017-05-16 23:22:03 +0000 (Tue, 16 May 2017) Log Message: ----------- [FIX] Seems these changes were lost/reverted? Modified Paths: -------------- trim/Makefile trim/scripts/clone.php Modified: trim/Makefile =================================================================== --- trim/Makefile 2017-05-16 18:05:56 UTC (rev 62620) +++ trim/Makefile 2017-05-16 23:22:03 UTC (rev 62621) @@ -9,10 +9,10 @@ # No changes should be required from here default: @echo "Valid options are:" - @echo " access, backup, blank, clean, check, clone, cloneandupdate," - @echo " cloneandupgrade, convert, copysshkey, delete, detect, enablewww," - @echo " fix, instance, mirror, profile, report, restore, update, upgrade," - @echo " verify, viewdb, watch" + @echo " access, backup, blank, clean, check, clone, cloneandupgrade," + @echo " convert, copysshkey, delete, detect, enablewww, fix, instance," + @echo " profile, report, restore, update, upgrade, verify, viewdb," + @echo " watch" help: default @@ -82,9 +82,11 @@ @$(PHP) scripts/copysshkey.php clone: -# The argument ("clone") is ignored since 2017-03-24. Could be removed or replaced. @$(PHP) scripts/clone.php clone +cloneandupgrade: + @$(PHP) scripts/clone.php upgrade + debug: @$(PHP) scripts/debug.php Modified: trim/scripts/clone.php =================================================================== --- trim/scripts/clone.php 2017-05-16 18:05:56 UTC (rev 62620) +++ trim/scripts/clone.php 2017-05-16 23:22:03 UTC (rev 62621) @@ -7,14 +7,70 @@ include_once dirname(__FILE__) . '/../src/env_setup.php'; include_once dirname(__FILE__) . '/../src/dbsetup.php'; -/* - * TODO: Allow defining whether the data, the code or both should be copied. Since there is possibly no safe default which is sure not to go against the user's expectation, there should be a mandatory argument ("code", "data" or "both"). - */ +define('ARG_MODE_CLONE', + $_SERVER['argc'] == 2 && $_SERVER['argv'][1] == 'clone'); +define('ARG_MODE_CLONE_UPGRADE', + $_SERVER['argc'] == 2 && $_SERVER['argv'][1] == 'upgrade'); +// TODO: This function is mostly a copy of the code found in src/dbsetup.php: +// perform_instance_installation(). It should be called from an app-aware method +// (tiki, wordpress, etc). +function getUpgradeVersion($instance) +{ + $found_incompatibilities = false; + $instance->detectPHP(); + + echo "Which version do you want to upgrade to?\n"; + + $app = $instance->getApplication(); + + $versions = $app->getVersions(); + foreach ($versions as $key => $version) { + + preg_match('/(\d+\.|trunk)/', $version->branch, $matches); + if (array_key_exists(0, $matches)) { + if ((($matches[0] >= 13) || ($matches[0] == 'trunk')) && + ($instance->phpversion < 50500)) { + // Nothing to do, this match is incompatible... + $found_incompatibilities = true; + } + else { + echo sprintf("[%3d] %s : %s\n", + $key, $version->type, $version->branch); + } + } + } + + echo "[ -1] blank : none\n"; + + $matches = array(); + preg_match('/(\d+)(\d{2})(\d{2})$/', $instance->phpversion, $matches); + + if (count($matches) == 4) { + info(sprintf('We detected PHP release: %d.%d.%d', + $matches[1], $matches[2], $matches[3])); + } + + if ($found_incompatibilities) { + echo "If some versions are not offered, it's likely because the host " . + "server doesn't meet the requirements for that version (ex: PHP version is too old)\n"; + } + + $input = promptUser('>>> '); + $entries = getEntries($versions, $input); + + return $entries[0]; +} + +if (! ARG_MODE_CLONE && ! ARG_MODE_CLONE_UPGRADE ) { + echo color("No mode supplied (clone, or upgrade).\n", 'red'); + exit(1); +} + $instances = Instance::getInstances(); if (! isset($_SERVER['argv'][2])) { - echo color("\nNOTE: Clone/mirror operations are only available on Local and SSH instances.\n\n", 'yellow'); + echo color("\nNOTE: Clone operations are only available on Local and SSH instances.\n\n", 'yellow'); $src_selection = selectInstances( $instances, "Select the source instance:\n" ); @@ -52,6 +108,16 @@ ); } +if (ARG_MODE_CLONE_UPGRADE) { + if (! isset($_SERVER['argv'][3])) { + $upgrade_version = getUpgradeVersion($src_selection[0]); + } + else { + // TODO: This should be sanity checked. + $upgrade_version = buildFake('svn', $_SERVER['argv'][3]); + } +} + info("Creating snapshot of: {$src_selection[0]->name}"); $archive = $src_selection[0]->backup(); @@ -60,9 +126,17 @@ exit(1); } +$app = $src_selection[0]->getApplication(); + foreach ($dst_selection as $dst_instance) { - info("Initiating clone/mirror of {$src_selection[0]->name} to {$dst_instance->name}"); + info("Initiating clone of {$src_selection[0]->name} to {$dst_instance->name}"); $dst_instance->restore($src_selection[0]->app, $archive, true); + + if (ARG_MODE_CLONE_UPGRADE) { + info("Upgrading to version: {$upgrade_version->branch}"); + $app = $dst_instance->getApplication(); + $app->performUpgrade($dst_instance, $upgrade_version, false); + } } exit(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Marc L. <ma...@ma...> - 2017-05-17 00:27:51
|
"[FIX] Seems these changes were lost/reverted?" Here is the revert: https://sourceforge.net/p/tikiwiki/code/61847/ Looks like a commit was missing. Thanks! On Tue, May 16, 2017 at 7:22 PM, <sok...@us...> wrote: > Revision: 62621 > http://sourceforge.net/p/tikiwiki/code/62621 > Author: sokoloski > Date: 2017-05-16 23:22:03 +0000 (Tue, 16 May 2017) > Log Message: > ----------- > [FIX] Seems these changes were lost/reverted? > > Modified Paths: > -------------- > trim/Makefile > trim/scripts/clone.php > > Modified: trim/Makefile > =================================================================== > --- trim/Makefile 2017-05-16 18:05:56 UTC (rev 62620) > +++ trim/Makefile 2017-05-16 23:22:03 UTC (rev 62621) > @@ -9,10 +9,10 @@ > # No changes should be required from here > default: > @echo "Valid options are:" > - @echo " access, backup, blank, clean, check, clone, cloneandupdate," > - @echo " cloneandupgrade, convert, copysshkey, delete, detect, enablewww," > - @echo " fix, instance, mirror, profile, report, restore, update, upgrade," > - @echo " verify, viewdb, watch" > + @echo " access, backup, blank, clean, check, clone, cloneandupgrade," > + @echo " convert, copysshkey, delete, detect, enablewww, fix, instance," > + @echo " profile, report, restore, update, upgrade, verify, viewdb," > + @echo " watch" > > help: default > > @@ -82,9 +82,11 @@ > @$(PHP) scripts/copysshkey.php > > clone: > -# The argument ("clone") is ignored since 2017-03-24. Could be removed or replaced. > @$(PHP) scripts/clone.php clone > > +cloneandupgrade: > + @$(PHP) scripts/clone.php upgrade > + > debug: > @$(PHP) scripts/debug.php > > > Modified: trim/scripts/clone.php > =================================================================== > --- trim/scripts/clone.php 2017-05-16 18:05:56 UTC (rev 62620) > +++ trim/scripts/clone.php 2017-05-16 23:22:03 UTC (rev 62621) > @@ -7,14 +7,70 @@ > include_once dirname(__FILE__) . '/../src/env_setup.php'; > include_once dirname(__FILE__) . '/../src/dbsetup.php'; > > -/* > - * TODO: Allow defining whether the data, the code or both should be copied. Since there is possibly no safe default which is sure not to go against the user's expectation, there should be a mandatory argument ("code", "data" or "both"). > - */ > +define('ARG_MODE_CLONE', > + $_SERVER['argc'] == 2 && $_SERVER['argv'][1] == 'clone'); > +define('ARG_MODE_CLONE_UPGRADE', > + $_SERVER['argc'] == 2 && $_SERVER['argv'][1] == 'upgrade'); > > +// TODO: This function is mostly a copy of the code found in src/dbsetup.php: > +// perform_instance_installation(). It should be called from an app-aware method > +// (tiki, wordpress, etc). > +function getUpgradeVersion($instance) > +{ > + $found_incompatibilities = false; > + $instance->detectPHP(); > + > + echo "Which version do you want to upgrade to?\n"; > + > + $app = $instance->getApplication(); > + > + $versions = $app->getVersions(); > + foreach ($versions as $key => $version) { > + > + preg_match('/(\d+\.|trunk)/', $version->branch, $matches); > + if (array_key_exists(0, $matches)) { > + if ((($matches[0] >= 13) || ($matches[0] == 'trunk')) && > + ($instance->phpversion < 50500)) { > + // Nothing to do, this match is incompatible... > + $found_incompatibilities = true; > + } > + else { > + echo sprintf("[%3d] %s : %s\n", > + $key, $version->type, $version->branch); > + } > + } > + } > + > + echo "[ -1] blank : none\n"; > + > + $matches = array(); > + preg_match('/(\d+)(\d{2})(\d{2})$/', $instance->phpversion, $matches); > + > + if (count($matches) == 4) { > + info(sprintf('We detected PHP release: %d.%d.%d', > + $matches[1], $matches[2], $matches[3])); > + } > + > + if ($found_incompatibilities) { > + echo "If some versions are not offered, it's likely because the host " . > + "server doesn't meet the requirements for that version (ex: PHP version is too old)\n"; > + } > + > + $input = promptUser('>>> '); > + $entries = getEntries($versions, $input); > + > + return $entries[0]; > +} > + > +if (! ARG_MODE_CLONE && ! ARG_MODE_CLONE_UPGRADE ) { > + echo color("No mode supplied (clone, or upgrade).\n", 'red'); > + exit(1); > +} > + > $instances = Instance::getInstances(); > > if (! isset($_SERVER['argv'][2])) { > - echo color("\nNOTE: Clone/mirror operations are only available on Local and SSH instances.\n\n", 'yellow'); > + echo color("\nNOTE: Clone operations are only available on Local and SSH instances.\n\n", 'yellow'); > > $src_selection = selectInstances( > $instances, "Select the source instance:\n" ); > @@ -52,6 +108,16 @@ > ); > } > > +if (ARG_MODE_CLONE_UPGRADE) { > + if (! isset($_SERVER['argv'][3])) { > + $upgrade_version = getUpgradeVersion($src_selection[0]); > + } > + else { > + // TODO: This should be sanity checked. > + $upgrade_version = buildFake('svn', $_SERVER['argv'][3]); > + } > +} > + > info("Creating snapshot of: {$src_selection[0]->name}"); > $archive = $src_selection[0]->backup(); > > @@ -60,9 +126,17 @@ > exit(1); > } > > +$app = $src_selection[0]->getApplication(); > + > foreach ($dst_selection as $dst_instance) { > - info("Initiating clone/mirror of {$src_selection[0]->name} to {$dst_instance->name}"); > + info("Initiating clone of {$src_selection[0]->name} to {$dst_instance->name}"); > $dst_instance->restore($src_selection[0]->app, $archive, true); > + > + if (ARG_MODE_CLONE_UPGRADE) { > + info("Upgrading to version: {$upgrade_version->branch}"); > + $app = $dst_instance->getApplication(); > + $app->performUpgrade($dst_instance, $upgrade_version, false); > + } > } > > exit(0); > > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Tikiwiki-cvs mailing list > Tik...@li... > https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs -- Marc Laporte http://WikiSuite.org http://PluginProblems.com http://Avan.Tech |
From: <mon...@us...> - 2017-06-25 00:56:32
|
Revision: 63069 http://sourceforge.net/p/tikiwiki/code/63069 Author: montefuscolo Date: 2017-06-25 00:56:29 +0000 (Sun, 25 Jun 2017) Log Message: ----------- [REM] Remove CVS references from code. Modified Paths: -------------- trim/scripts/setupupdate.php trim/scripts/update.php trim/src/appinfo/tiki.php trim/src/appinfo/wordpress.php trim/src/instancelib.php trim/src/rclib.php Modified: trim/scripts/setupupdate.php =================================================================== --- trim/scripts/setupupdate.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/scripts/setupupdate.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -24,7 +24,7 @@ $minute, $hour, php(), $path, $which ); -warning("NOTE: Only CVS and SVN instances can be updated.\n"); +warning("NOTE: Only SVN instances can be updated.\n"); echo "Which instances do you want to update?\n"; $instances = Instance::getUpdatableInstances(); Modified: trim/scripts/update.php =================================================================== --- trim/scripts/update.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/scripts/update.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -16,7 +16,7 @@ if (ARG_AUTO) $selection = getEntries($instances, implode(' ', array_slice($_SERVER['argv'], 2 ))); else { - warning("\nWARNING: Only CVS and SVN instances can be updated.\n"); + warning("\nWARNING: Only SVN instances can be updated.\n"); echo "Which instances do you want to update?\n"; printInstances($instances); Modified: trim/src/appinfo/tiki.php =================================================================== --- trim/src/appinfo/tiki.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/src/appinfo/tiki.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -5,7 +5,6 @@ // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. define('SVN_TIKIWIKI_URI', 'https://svn.code.sf.net/p/tikiwiki/code'); -define('CVS_TIKIWIKI_URI', ':pserver:ano...@ti...:/cvsroot/tikiwiki'); class Application_Tiki extends Application { @@ -21,8 +20,6 @@ function getVersions() // {{{ { $versions = array(); - $versions[] = 'cvs:BRANCH-1-9'; - $versions[] = 'cvs:REL-1-9-11'; $base = SVN_TIKIWIKI_URI; $versionsTemp = array(); @@ -76,9 +73,7 @@ return $this->installType; $access = $this->instance->getBestAccess('filetransfer'); - if ($access->fileExists($this->instance->getWebPath('CVS'))) - return $this->installType = 'cvs'; - elseif ($access->fileExists($this->instance->getWebPath('.svn/entries'))) + if ($access->fileExists($this->instance->getWebPath('.svn/entries'))) return $this->installType = 'svn'; else return $this->installType = 'tarball'; @@ -173,7 +168,7 @@ else { $branch = ''; while (empty($branch)) - $branch = readline("No version found. Which tag should be used? (Ex.: (CVS) REL-1-9-10 or (Subversion) branches/1.10)"); + $branch = readline("No version found. Which tag should be used? (Ex.: (Subversion) branches/1.10) "); } return $this->branch = $branch; @@ -203,26 +198,6 @@ `svn export $branch $local`; return $local; - } elseif ($version->type == 'cvs') { - $cur = `pwd`; - chdir(TEMP_FOLDER); - - $folder = md5($filename); - mkdir($folder); - $path = "/$filename"; - $path = str_replace('/./', '/', $path); - $epath = escapeshellarg($path); - - $uri = CVS_TIKIWIKI_URI; - `cvs -z3 -d{$uri} co -r {$version->branch} -d {$folder} tikiwiki{$epath} 2>> logs/trim.output`; - - rename("$folder$path", $local); - - `rm -Rf $folder 2>> logs/trim.output`; - - chdir(trim($cur)); - - return $local; } } // }}} @@ -234,38 +209,16 @@ $branch = escapeshellarg($branch); return "svn co $branch $folder"; } - elseif ($version->type == 'cvs') { - $base = basename($folder); - $uri = CVS_TIKIWIKI_URI; - return "cd $folder; cd ..;cvs -z3 -d{$uri} co -r {$version->branch} -d {$base} tikiwiki 2>> logs/trim.output"; - } } // }}} function extractTo(Version $version, $folder) // {{{ { - if ($version->type == 'svn' || $version->type == 'tarball') { - if (file_exists($folder)) - `svn up --non-interactive $folder`; - else { - $command = $this->getExtractCommand($version, $folder); - `$command`; - } + if (file_exists($folder)) + `svn up --non-interactive $folder`; + else { + $command = $this->getExtractCommand($version, $folder); + `$command`; } - elseif ($version->type == 'cvs') { - $cur = `pwd`; - - if (file_exists($folder)) { - chdir($folder); - `cvs up -d`; - } - else { - chdir($folder); - $command = $this->getExtractCommand($version, $folder); - `$command`; - } - - chdir(trim($cur)); - } } // }}} function performActualUpdate(Version $version) // {{{ @@ -315,28 +268,6 @@ $this->fixPermissions(); $access->shellExec('touch ' . escapeshellarg($this->instance->getWebPath('db/lock'))); return; - - case 'cvs': - $access = $this->instance->getBestAccess('scripting'); - - if (! $access instanceof ShellPrompt || ! $access->hasExecutable('cvs')) - break; - - $cvs = new RC_CVS('pserver', 'anonymous', 'tikiwiki.cvs.sourceforge.net', '/cvsroot/tikiwiki', 'tikiwiki'); - $cvs->updateInstanceTo($this->instance, $version->branch); - - info('Updating database schema...'); - - $access->runPHP( - dirname(__FILE__) . '/../../scripts/tiki/sqlupgrade.php', - array($this->instance->webroot) - ); - - info('Fixing permissions...'); - - $this->fixPermissions(); - $access->shellExec('touch ' . escapeshellarg($this->instance->getWebPath('db/lock'))); - return; } // TODO: Handle fallback @@ -390,8 +321,6 @@ { if (substr($version, 0, 4) == '1.9.') return 'REL-' . str_replace('.', '-', $version); - elseif ($this->getInstallType() == 'cvs') - return 'BRANCH-1-10'; elseif ($this->getInstallType() == 'svn') return "tags/$version"; elseif ($this->getInstallType() == 'tarball') Modified: trim/src/appinfo/wordpress.php =================================================================== --- trim/src/appinfo/wordpress.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/src/appinfo/wordpress.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -113,7 +113,7 @@ $branch = ''; while (empty($branch)) { - $branch = readline("No version found. Which tag should be used? (Ex.: (CVS) REL-1-9-10 or (Subversion) branches/1.10) "); + $branch = readline("No version found. Which tag should be used? (Ex.: (Subversion) branches/1.10) "); } return $this->branch = $branch; Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/src/instancelib.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -36,7 +36,7 @@ instance_id ) t ON t.version = version.version_id WHERE - type = 'cvs' OR type = 'svn' OR type = 'tarball' + type = 'svn' OR type = 'tarball' ;"); define('SQL_SELECT_LATEST_VERSION', " Modified: trim/src/rclib.php =================================================================== --- trim/src/rclib.php 2017-06-24 22:30:27 UTC (rev 63068) +++ trim/src/rclib.php 2017-06-25 00:56:29 UTC (rev 63069) @@ -95,37 +95,4 @@ } } -class RC_CVS -{ - private $protocol; - private $user; - private $host; - private $root; - private $module; - - function __construct($protocol, $user, $host, $root, $module) - { - $this->protocol = $protocol; - $this->user = $user; - $this->host = $host; - $this->root = $root; - $this->module = $module; - } - - function updateInstanceTo(Instance $instance, $tag) - { - $access = $instance->getBestAccess('scripting'); - if (! $access instanceof ShellPrompt) return false; - - info('Performing CVS update on remote host.'); - - $rep = escapeshellarg(":{$this->protocol}:{$this->user}@{$this->host}:{$this->root}"); - $access->chdir($instance->webroot); - $access->setenv('CVS_RSH', 'ssh'); - $access->shellExec( - "cvs -d$rep up -d -r " . escapeshellarg($tag) - ); - } -} - // vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rj...@us...> - 2017-07-02 10:32:42
|
Revision: 63125 http://sourceforge.net/p/tikiwiki/code/63125 Author: rjsmelo Date: 2017-07-02 10:32:35 +0000 (Sun, 02 Jul 2017) Log Message: ----------- [MOD] Replace usage of mod ssh with phpseclib (and introduce composer usage as part of trim) Also adjust ignore lists and gitignore Modified Paths: -------------- trim/src/env_setup.php trim/src/sshlib.php Added Paths: ----------- trim/.gitignore trim/composer.json trim/composer.lock Property Changed: ---------------- trim/ trim/data/ Index: trim =================================================================== --- trim 2017-07-02 10:07:13 UTC (rev 63124) +++ trim 2017-07-02 10:32:35 UTC (rev 63125) Property changes on: trim ___________________________________________________________________ Modified: svn:ignore ## -3,3 +3,4 ## backup .buildpath .project +.idea Added: trim/.gitignore =================================================================== --- trim/.gitignore (rev 0) +++ trim/.gitignore 2017-07-02 10:32:35 UTC (rev 63125) @@ -0,0 +1,11 @@ +# TRIM Ignore +# Ignore caches, logs and other working directories +backup/ +cache/ +data/ +logs/ +tmp/ +# Ignore vendor folders, they are managed by composer +/vendor/ +# Ignore PhpStorm +.idea/ Added: trim/composer.json =================================================================== --- trim/composer.json (rev 0) +++ trim/composer.json 2017-07-02 10:32:35 UTC (rev 63125) @@ -0,0 +1,19 @@ +{ + "name": "tiki/tiki-trim", + "description": "Tiki Wiki CMS Groupware", + "license": "LGPL-2.1", + "homepage": "https://tiki.org", + "minimum-stability": "stable", + "require": { + "phpseclib/phpseclib": "^2.0" + }, + "config": { + "process-timeout": 5000 + }, + "repositories": [ + { + "type": "composer", + "url": "https://composer.tiki.org" + } + ] +} Added: trim/composer.lock =================================================================== --- trim/composer.lock (rev 0) +++ trim/composer.lock 2017-07-02 10:32:35 UTC (rev 63125) @@ -0,0 +1,110 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "b522d11ac7f3b5ab3e322e70a6ecc3f5", + "packages": [ + { + "name": "phpseclib/phpseclib", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpseclib/phpseclib/phpseclib-phpseclib-34a7699e6f31b1ef4035ee36444407cecf9f56aa-zip-af2c37.zip", + "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa", + "shasum": "0fedcda5105aea746610117e43b642a00398e98c" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phing/phing": "~2.7", + "phpunit/phpunit": "~4.0", + "sami/sami": "~2.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "ter...@ph...", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm...@da...", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "ba...@ph...", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "pe...@tr...", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "gr...@al...", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "time": "2017-06-05T06:31:10+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} Index: trim/data =================================================================== --- trim/data 2017-07-02 10:07:13 UTC (rev 63124) +++ trim/data 2017-07-02 10:32:35 UTC (rev 63125) Property changes on: trim/data ___________________________________________________________________ Modified: svn:ignore ## -1,3 +1,5 ## trim.db id_dsa id_dsa.pub +id_rsa +id_rsa.pub Modified: trim/src/env_setup.php =================================================================== --- trim/src/env_setup.php 2017-07-02 10:07:13 UTC (rev 63124) +++ trim/src/env_setup.php 2017-07-02 10:32:35 UTC (rev 63125) @@ -82,6 +82,11 @@ echo color("$text\n", 'red'); } +// vendor libs managed by the user using composer (if any) +if (file_exists(dirname(__FILE__) . '/../vendor/autoload.php')) { + require_once dirname(__FILE__) . '/../vendor/autoload.php'; +} + include dirname(__FILE__) . '/ftplib.php'; include dirname(__FILE__) . '/sshlib.php'; include dirname(__FILE__) . '/locallib.php'; @@ -116,37 +121,38 @@ define('SSH_KEY', getenv('HOME') . '/.ssh/id_rsa'); define('SSH_PUBLIC_KEY', getenv('HOME') . '/.ssh/id_rsa.pub'); } -elseif (file_exists(getenv('HOME') . '/.ssh/id_dsa') && - file_exists(getenv('HOME') . '/.ssh/id_dsa.pub')) { - define('SSH_KEY', getenv('HOME').'/.ssh/id_dsa'); - define('SSH_PUBLIC_KEY', getenv('HOME').'/.ssh/id_dsa.pub'); +if (file_exists(getenv('HOME') . '/.ssh/id_dsa') && + file_exists(getenv('HOME') . '/.ssh/id_dsa.pub') && + !defined(SSH_KEY) && + !defined(SSH_PUBLIC_KEY)) { warning( - sprintf('TRIM is using a ssh-dsa key which have been deprecated in ' . - 'openssh-7.0. It is recommended that you remove it (%s and %s). ' . - "After that, run 'make copysshkey' and TRIM will create a new " . - 'RSA key. Copy the new key to all your instances.', + sprintf('Ssh-dsa key (%s and %s) was found but TRIM won\'t used it, ' . + 'because DSA was deprecated in openssh-7.0. ' . + 'If you need a new RSA key, run \'make copysshkey\' and TRIM will create a new one.' . + 'Copy the new key to all your instances.', SSH_KEY, SSH_PUBLIC_KEY ) ); } -elseif (file_exists("$root/data/id_dsa") && - file_exists("$root/data/id_dsa.pub")) { - define('SSH_KEY', "$root/data/id_dsa" ); - define('SSH_PUBLIC_KEY', "$root/data/id_dsa.pub"); +if (file_exists("$root/data/id_dsa") && + file_exists("$root/data/id_dsa.pub") && + !defined(SSH_KEY) && + !defined(SSH_PUBLIC_KEY)) { warning( - sprintf('TRIM is using a ssh-dsa key which have been deprecated in ' . - 'openssh-7.0. It is recommended that you remove it (%s and %s). ' . - "After that, run 'make copysshkey' and TRIM will create a new " . - 'RSA key. Copy the new key to all your instances.', + sprintf('Ssh-dsa key (%s and %s) was found but TRIM won\'t used it, ' . + 'because DSA was deprecated in openssh-7.0. ' . + 'If you need a new RSA key, run \'make copysshkey\' and TRIM will create a new one.' . + 'Copy the new key to all your instances.', SSH_KEY, SSH_PUBLIC_KEY ) ); } -else { + +if (!defined(SSH_KEY) && !defined(SSH_PUBLIC_KEY)) { define('SSH_KEY', "$root/data/id_rsa"); define('SSH_PUBLIC_KEY', "$root/data/id_rsa.pub"); } Modified: trim/src/sshlib.php =================================================================== --- trim/src/sshlib.php 2017-07-02 10:07:13 UTC (rev 63124) +++ trim/src/sshlib.php 2017-07-02 10:32:35 UTC (rev 63125) @@ -47,25 +47,28 @@ private function getExtHandle() { - if (! function_exists('ssh2_connect')) - return false; - $host = $this->host; $user = $this->user; $port = $this->port; $key = "$user@$host:$port"; - + if (isset(self::$resources[$key])) return self::$resources[$key]; - $handle = @ssh2_connect($host, $port); - - if (! $handle) + $handle = new \phpseclib\Net\SSH2($host, $port); + + if (!$handle) { return self::$resources[$key] = false; + }; - if (! @ssh2_auth_pubkey_file($handle, $user, SSH_PUBLIC_KEY, SSH_KEY)) + $password = new \phpseclib\Crypt\RSA(); + $password->setPrivateKey(file_get_contents(SSH_KEY)); + $password->setPublicKey(file_get_contents(SSH_PUBLIC_KEY)); + + if (!$handle->login($user, $password)) { return self::$resources[$key] = false; + }; return self::$resources[$key] = $handle; } @@ -72,14 +75,15 @@ function setupKey($publicKeyFile) { - if (function_exists('ssh2_connect')) { - // Check key presence first if possible - if ($this->getExtHandle()) return; - else - // Pretend this check never happened, connection will be - // succesful after key set-up - unset(self::$resources["{$this->user}@{$this->host}:{$this->port}"]); + // Check key presence first if possible + if ($this->getExtHandle()) { + return; } + else { + // Pretend this check never happened, connection will be + // succesful after key set-up + unset(self::$resources["{$this->user}@{$this->host}:{$this->port}"]); + } $file = escapeshellarg($publicKeyFile); @@ -99,7 +103,7 @@ if (! is_array($commands)) $commands = func_get_args(); - if ($handle = self::getExtHandle($this->host, $this->user)) { + if ($handle = self::getExtHandle()) { $content = ''; foreach ($commands as $line) { @@ -109,10 +113,9 @@ foreach ($this->env as $key => $value) $line .= "export $key=" . escapeshellarg($value) . "; $line"; - $stream = ssh2_exec($handle, $line, null); - stream_set_blocking($stream, true); + $result = $handle->exec($line, null); - $content .= stream_get_contents($stream); + $content .= $result; } return trim($content); @@ -148,8 +151,9 @@ function sendFile($localFile, $remoteFile) { - if ($handle = self::getExtHandle($this->host, $this->user)) { - if (! ssh2_scp_send($handle, $localFile, $remoteFile, 0644)) { + if ($handle = self::getExtHandle()) { + $scpHandle = new \phpseclib\Net\SCP($handle); + if (! $scpHandle->put($remoteFile, file_get_contents($localFile), 0644)) { error("Could not create remote file $remoteFile on {$this->user}@{$this->host}"); } } @@ -168,8 +172,9 @@ function receiveFile($remoteFile, $localFile) { - if ($handle = self::getExtHandle($this->host, $this->user)) { - if (! ssh2_scp_recv($handle, $remoteFile, $localFile)) { + if ($handle = self::getExtHandle()) { + $scpHandle = new \phpseclib\Net\SCP($handle); + if (! $scpHandle->get($remoteFile, $localFile)) { error("Could not create remote file $remoteFile on {$this->user}@{$this->host}"); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rj...@us...> - 2017-08-01 22:36:53
|
Revision: 63435 http://sourceforge.net/p/tikiwiki/code/63435 Author: rjsmelo Date: 2017-08-01 22:36:50 +0000 (Tue, 01 Aug 2017) Log Message: ----------- [FIX] TRIM: issue with backup cleanup, multiple notices when executing trim backup Modified Paths: -------------- trim/scripts/backup.php trim/src/clean.php trim/src/env_setup.php trim/src/instancelib.php Modified: trim/scripts/backup.php =================================================================== --- trim/scripts/backup.php 2017-08-01 21:26:08 UTC (rev 63434) +++ trim/scripts/backup.php 2017-08-01 22:36:50 UTC (rev 63435) @@ -21,8 +21,7 @@ foreach ($selection as $instance) { info("Performing backup for {$instance->name}"); $instance->backup(); + perform_archive_cleanup($instance->id, $instance->name); } -perform_archive_cleanup(); - // vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 Modified: trim/src/clean.php =================================================================== --- trim/src/clean.php 2017-08-01 21:26:08 UTC (rev 63434) +++ trim/src/clean.php 2017-08-01 22:36:50 UTC (rev 63435) @@ -4,17 +4,19 @@ // All Rights Reserved. See copyright.txt for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. -function perform_archive_cleanup() +function perform_archive_cleanup($instance_id, $instance_name) { - $files = glob(ARCHIVE_FOLDER . '/*.tar.bz2'); + $backup_directory = "{$instance_id}-{$instance_name}"; + $files = glob(ARCHIVE_FOLDER . "/$backup_directory" . '/*.tar.bz2'); + foreach ($files as $file) { $name = basename($file); - if (preg_match('/^(\d+)_(\d{4})-(\d{2})-(\d{2})_(\d{2}):(\d{2}):(\d{2})\.tar\.bz2$/', $name, $matches)) { + if (preg_match('/^(\d+)-(.*)_(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})\.tar\.bz2$/', $name, $matches)) { - list($match, $instance, $year, $month, $date, $hour, $minute, $second) = $matches; + list($match, $instance_id, $instance_name , $year, $month, $date, $hour, $minute, $second) = $matches; // Preserve one backup per month, the one on the first if ($date == '01') continue; Modified: trim/src/env_setup.php =================================================================== --- trim/src/env_setup.php 2017-08-01 21:26:08 UTC (rev 63434) +++ trim/src/env_setup.php 2017-08-01 22:36:50 UTC (rev 63435) @@ -124,8 +124,8 @@ if (file_exists(getenv('HOME') . '/.ssh/id_dsa') && file_exists(getenv('HOME') . '/.ssh/id_dsa.pub') && - !defined(SSH_KEY) && - !defined(SSH_PUBLIC_KEY)) { + !defined('SSH_KEY') && + !defined('SSH_PUBLIC_KEY')) { warning( sprintf('Ssh-dsa key (%s and %s) was found but TRIM won\'t used it, ' . @@ -139,8 +139,8 @@ if (file_exists("$root/data/id_dsa") && file_exists("$root/data/id_dsa.pub") && - !defined(SSH_KEY) && - !defined(SSH_PUBLIC_KEY)) { + !defined('SSH_KEY') && + !defined('SSH_PUBLIC_KEY')) { warning( sprintf('Ssh-dsa key (%s and %s) was found but TRIM won\'t used it, ' . @@ -152,7 +152,7 @@ ); } -if (!defined(SSH_KEY) && !defined(SSH_PUBLIC_KEY)) { +if (!defined('SSH_KEY') && !defined('SSH_PUBLIC_KEY')) { define('SSH_KEY', "$root/data/id_rsa"); define('SSH_PUBLIC_KEY', "$root/data/id_rsa.pub"); } Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2017-08-01 21:26:08 UTC (rev 63434) +++ trim/src/instancelib.php 2017-08-01 22:36:50 UTC (rev 63435) @@ -457,6 +457,9 @@ die(error('No application installed for this instance.')); $locations = $this->getApplication()->getFileLocations(); + if (!isset($locations['data'])){ + $locations['data'] = array(); + } $locations['data'] = array_merge($locations['data'], $this->getExtraBackups()); $backup_directory = "{$this->id}-{$this->name}"; @@ -473,6 +476,9 @@ // Bring all remote files locally info('Downloading files locally...'); foreach ($locations as $type => $remotes) { + if (!is_array($remotes)){ + continue; + } foreach ($remotes as $remote) { $hash = md5($remote); $locmirror = "{$approot}/{$hash}"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rj...@us...> - 2017-11-16 21:56:19
|
Revision: 64596 http://sourceforge.net/p/tikiwiki/code/64596 Author: rjsmelo Date: 2017-11-16 21:56:17 +0000 (Thu, 16 Nov 2017) Log Message: ----------- [NEW] TRIM: Enable user to edit instance information Modified Paths: -------------- trim/Makefile trim/src/instancelib.php Added Paths: ----------- trim/scripts/editinstance.php Modified: trim/Makefile =================================================================== --- trim/Makefile 2017-11-16 21:39:09 UTC (rev 64595) +++ trim/Makefile 2017-11-16 21:56:17 UTC (rev 64596) @@ -10,9 +10,9 @@ default: @echo "Valid options are:" @echo " access, backup, blank, clean, check, clone, cloneandupgrade," - @echo " convert, copysshkey, delete, detect, enablewww, fix, instance," - @echo " profile, report, restore, update, upgrade, verify, viewdb," - @echo " watch" + @echo " convert, copysshkey, delete, detect, editinstance, enablewww, " + @echo " fix, instance, profile, report, restore, update, upgrade," + @echo " verify, viewdb, watch" help: default @@ -22,6 +22,9 @@ instance: @$(PHP) scripts/addinstance.php +editinstance: + @$(PHP) scripts/editinstance.php + blank: @$(PHP) scripts/addinstance.php blank Added: trim/scripts/editinstance.php =================================================================== --- trim/scripts/editinstance.php (rev 0) +++ trim/scripts/editinstance.php 2017-11-16 21:56:17 UTC (rev 64596) @@ -0,0 +1,40 @@ +<?php +// Copyright (c) 2017, Avan.Tech, et. al. +// All Rights Reserved. See copyright.txt for details and a complete list of authors. +// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. + +include_once dirname(__FILE__) . '/../src/env_setup.php'; +include_once dirname(__FILE__) . '/../src/dbsetup.php'; + +$all = Instance::getInstances(); + +$instances = []; +foreach ($all as $instance) { + if ($instance->getApplication() instanceof Application_Tiki) { + $instances[$instance->id] = $instance; + } +} + +$selection = selectInstances( + $instances, "Which instances do you want to edit?\n" +); + +foreach ($selection as $instance) { + info("Editing data for {$instance->name}"); + + $host = promptUser("Host name", $instance->name); + $contact = strtolower(promptUser("Contact email", $instance->contact)); + $webroot = promptUser("Web root", $instance->webroot); + $weburl = promptUser("Web URL", $instance->weburl); + $tempdir = promptUser("Working directory", $instance->tempdir); + + $instance->name = $host; + $instance->contact = $contact; + $instance->webroot = rtrim($webroot, '/'); + $instance->weburl = rtrim($weburl, '/'); + $instance->tempdir = rtrim($tempdir, '/'); + + $instance->update(); + + echo color("Instance information saved.\n", 'green'); +} Property changes on: trim/scripts/editinstance.php ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2017-11-16 21:39:09 UTC (rev 64595) +++ trim/src/instancelib.php 2017-11-16 21:56:17 UTC (rev 64596) @@ -85,6 +85,18 @@ (:id, :name, :contact, :web, :url, :temp, :phpexec, :app) ;"); +define('SQL_UPDATE_INSTANCE', " +UPDATE instance +SET + name = :name, + contact = :contact, + webroot = :web, + weburl = :url, + tempdir = :temp +WHERE + instance_id = :id +;"); + define('SQL_INSERT_BACKUP', " INSERT INTO backup @@ -303,6 +315,23 @@ } } // }}} + /** + * Update the instance information + */ + public function update() + { + $params = [ + ':id' => $this->id, + ':name' => $this->name, + ':contact' => $this->contact, + ':web' => $this->webroot, + ':url' => $this->weburl, + ':temp' => $this->tempdir + ]; + + query(SQL_UPDATE_INSTANCE, $params); + } + function delete() // {{{ { query(SQL_DELETE_ACCESS, array(':id' => $this->id)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rj...@us...> - 2017-11-16 22:54:39
|
Revision: 64598 http://sourceforge.net/p/tikiwiki/code/64598 Author: rjsmelo Date: 2017-11-16 22:54:36 +0000 (Thu, 16 Nov 2017) Log Message: ----------- [NEW] TRIM: Enable the execution of console commands on remote instances Modified Paths: -------------- trim/Makefile Added Paths: ----------- trim/scripts/tiki/cli.php Modified: trim/Makefile =================================================================== --- trim/Makefile 2017-11-16 22:40:38 UTC (rev 64597) +++ trim/Makefile 2017-11-16 22:54:36 UTC (rev 64598) @@ -9,7 +9,7 @@ # No changes should be required from here default: @echo "Valid options are:" - @echo " access, backup, blank, clean, check, clone, cloneandupgrade," + @echo " access, backup, blank, clean, check, cli, clone, cloneandupgrade," @echo " convert, copysshkey, delete, detect, editinstance, enablewww, " @echo " fix, instance, profile, report, restore, update, upgrade," @echo " verify, viewdb, watch" @@ -66,6 +66,9 @@ fix: @$(PHP) scripts/tiki/fixperms.php +cli: + @$(PHP) scripts/tiki/cli.php + detect: @$(PHP) scripts/detect.php Added: trim/scripts/tiki/cli.php =================================================================== --- trim/scripts/tiki/cli.php (rev 0) +++ trim/scripts/tiki/cli.php 2017-11-16 22:54:36 UTC (rev 64598) @@ -0,0 +1,40 @@ +<?php +// Copyright (c) 2017, Avan.Tech, et. al. +// All Rights Reserved. See copyright.txt for details and a complete list of authors. +// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. + +include_once dirname(__FILE__) . '/../../src/env_setup.php'; +include_once dirname(__FILE__) . '/../../src/check.php'; + +$all = Instance::getInstances(); + +$instances = array(); +foreach ($all as $instance) { + if ($instance->getApplication() instanceof Application_Tiki) { + $instances[$instance->id] = $instance; + } +} + +$selection = selectInstances($instances, "Choose instance: \n"); + +info("Note: If you write 'help' you can check list of commands\n"); +$command = promptUser('Write command to execute'); + +if ($command == 'help') { + $command = ''; +} + + +foreach ($selection as $instance) { + info("Calling command in {$instance->name}"); + $access = $instance->getBestAccess('scripting'); + $access->chdir($instance->webroot); + $new = $access->shellExec( + ["{$instance->phpexec} -q -d memory_limit=256M console.php " . $command], + true + ); + if ($new) { + info('Result:'); + echo $new . "\n"; + } +} Property changes on: trim/scripts/tiki/cli.php ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2017-12-20 11:41:46
|
Revision: 64934 http://sourceforge.net/p/tikiwiki/code/64934 Author: montefuscolo Date: 2017-12-20 11:41:43 +0000 (Wed, 20 Dec 2017) Log Message: ----------- [ENH] Let user define backup's permissions on editinstance command Modified Paths: -------------- trim/scripts/editinstance.php trim/src/instancelib.php Modified: trim/scripts/editinstance.php =================================================================== --- trim/scripts/editinstance.php 2017-12-20 11:16:18 UTC (rev 64933) +++ trim/scripts/editinstance.php 2017-12-20 11:41:43 UTC (rev 64934) @@ -28,13 +28,20 @@ $weburl = promptUser("Web URL", $instance->weburl); $tempdir = promptUser("Working directory", $instance->tempdir); + $backup_user = promptUser('Backup owner', $instance->getProp('backup_user')); + $backup_group = promptUser('Backup group', $instance->getProp('backup_group')); + $backup_perm = intval($instance->getProp('backup_perm') ?: 0775); + $backup_perm = promptUser('Backup file permissions', decoct($backup_perm)); + $instance->name = $host; $instance->contact = $contact; $instance->webroot = rtrim($webroot, '/'); $instance->weburl = rtrim($weburl, '/'); $instance->tempdir = rtrim($tempdir, '/'); + $instance->backup_user = $backup_user; + $instance->backup_group = $backup_group; + $instance->backup_perm = octdec($backup_perm); $instance->update(); - echo color("Instance information saved.\n", 'green'); } Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2017-12-20 11:16:18 UTC (rev 64933) +++ trim/src/instancelib.php 2017-12-20 11:41:43 UTC (rev 64934) @@ -330,6 +330,16 @@ ]; query(SQL_UPDATE_INSTANCE, $params); + + if(!empty($this->backup_user)) { + $this->setProp('backup_user', $this->backup_user); + } + if(!empty($this->backup_group)) { + $this->setProp('backup_group', $this->backup_group); + } + if(!empty($this->backup_perm)) { + $this->setProp('backup_perm', $this->backup_perm); + } } function delete() // {{{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-01-04 19:04:26
|
Revision: 65083 http://sourceforge.net/p/tikiwiki/code/65083 Author: montefuscolo Date: 2018-01-04 19:04:23 +0000 (Thu, 04 Jan 2018) Log Message: ----------- [FIX] Passing arguments correctly from make to backup script Modified Paths: -------------- trim/Makefile trim/scripts/backup.sh Modified: trim/Makefile =================================================================== --- trim/Makefile 2018-01-04 18:42:51 UTC (rev 65082) +++ trim/Makefile 2018-01-04 19:04:23 UTC (rev 65083) @@ -58,7 +58,7 @@ @$(PHP) scripts/access.php $(ARGS) backup: - @$(BASH) scripts/backup.sh $(PHP) + @$(BASH) scripts/backup.sh "$(PHP)" "$(ARGS)" restore: @$(PHP) scripts/restore.php $(ARGS) Modified: trim/scripts/backup.sh =================================================================== --- trim/scripts/backup.sh 2018-01-04 18:42:51 UTC (rev 65082) +++ trim/scripts/backup.sh 2018-01-04 19:04:23 UTC (rev 65083) @@ -12,7 +12,7 @@ echo cpulimit -l${LIMIT} $1 scripts/backup.php else - $@ scripts/backup.php + $1 scripts/backup.php $2 fi # vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-01-22 22:24:51
|
Revision: 65290 http://sourceforge.net/p/tikiwiki/code/65290 Author: montefuscolo Date: 2018-01-22 22:24:48 +0000 (Mon, 22 Jan 2018) Log Message: ----------- [FIX] Compatible with php5.4 Modified Paths: -------------- trim/Makefile trim/src/dbsetup.php Modified: trim/Makefile =================================================================== --- trim/Makefile 2018-01-22 18:14:16 UTC (rev 65289) +++ trim/Makefile 2018-01-22 22:24:48 UTC (rev 65290) @@ -5,7 +5,9 @@ SQLITE = sqlite3 SQLITE_VERSION := $(shell $(SQLITE) --version 2> /dev/null) BASH = bash +-include data/trim.cfg + # No changes should be required from here default: @echo "Valid options are:" @@ -18,6 +20,9 @@ .PHONY: backup +teste: + @echo $(PHP) + # Use this to add a remote installation instance: @$(PHP) scripts/addinstance.php $(ARGS) Modified: trim/src/dbsetup.php =================================================================== --- trim/src/dbsetup.php 2018-01-22 18:14:16 UTC (rev 65289) +++ trim/src/dbsetup.php 2018-01-22 22:24:48 UTC (rev 65290) @@ -156,7 +156,8 @@ ); $type = 'y'; - if (empty(getenv('NEW_DB_PREFIX'))) { + $new_db_prefix = getenv('NEW_DB_PREFIX'); + if (empty($new_db_prefix)) { $type = strtolower( promptUser( 'Should a new database and user be created now (both)?', @@ -196,8 +197,8 @@ $prefix = 'tiki'; $ok = false; - if (!empty(getenv('NEW_DB_PREFIX'))) { - $prefix = getenv('NEW_DB_PREFIX') ?: $prefix; + if (!empty($new_db_prefix)) { + $prefix = $new_db_prefix ?: $prefix; $ok = $db_new->createAccess($prefix); $ok && debug("Got prefix '{$prefix}' from environment"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-01-22 23:04:28
|
Revision: 65292 http://sourceforge.net/p/tikiwiki/code/65292 Author: montefuscolo Date: 2018-01-22 23:04:25 +0000 (Mon, 22 Jan 2018) Log Message: ----------- [FIX] Ignore file that shouldn't be on repository Property Changed: ---------------- trim/ trim/data/ trim/logs/ Index: trim =================================================================== --- trim 2018-01-22 22:28:21 UTC (rev 65291) +++ trim 2018-01-22 23:04:25 UTC (rev 65292) Property changes on: trim ___________________________________________________________________ Modified: svn:ignore ## -1,7 +1,9 ## +.gitattributes +.gitignore +.phpenv backup cache composer.phar logs -.phpenv tmp vendor Index: trim/data =================================================================== --- trim/data 2018-01-22 22:28:21 UTC (rev 65291) +++ trim/data 2018-01-22 23:04:25 UTC (rev 65292) Property changes on: trim/data ___________________________________________________________________ Modified: svn:ignore ## -1,6 +1 ## -trim.cfg -trim.db -id_dsa -id_dsa.pub -id_rsa -id_rsa.pub +* Index: trim/logs =================================================================== --- trim/logs 2018-01-22 22:28:21 UTC (rev 65291) +++ trim/logs 2018-01-22 23:04:25 UTC (rev 65292) Property changes on: trim/logs ___________________________________________________________________ Added: svn:ignore ## -0,0 +1 ## +* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-02-07 20:57:28
|
Revision: 65489 http://sourceforge.net/p/tikiwiki/code/65489 Author: montefuscolo Date: 2018-02-07 20:57:25 +0000 (Wed, 07 Feb 2018) Log Message: ----------- [NEW] Add psysh library for better inspect and debug Modified Paths: -------------- trim/Makefile trim/composer.json trim/composer.lock Added Paths: ----------- trim/src/psysh_conf.php Modified: trim/Makefile =================================================================== --- trim/Makefile 2018-02-07 19:47:07 UTC (rev 65488) +++ trim/Makefile 2018-02-07 20:57:25 UTC (rev 65489) @@ -122,3 +122,7 @@ $(foreach v, $(shell sed -En '/^\w+\s*=/s/\s*=.*$$//p' Makefile), \ $(info $(v) = $($(v)))) @echo + +shell: + @$(PHP) vendor/bin/psysh src/psysh_conf.php + Modified: trim/composer.json =================================================================== --- trim/composer.json 2018-02-07 19:47:07 UTC (rev 65488) +++ trim/composer.json 2018-02-07 20:57:25 UTC (rev 65489) @@ -5,7 +5,8 @@ "homepage": "https://tiki.org", "minimum-stability": "stable", "require": { - "phpseclib/phpseclib": "^2.0" + "phpseclib/phpseclib": "^2.0", + "psy/psysh": "@stable" }, "config": { "process-timeout": 5000 Modified: trim/composer.lock =================================================================== --- trim/composer.lock 2018-02-07 19:47:07 UTC (rev 65488) +++ trim/composer.lock 2018-02-07 20:57:25 UTC (rev 65489) @@ -4,9 +4,180 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "b522d11ac7f3b5ab3e322e70a6ecc3f5", + "content-hash": "b2e94e6b7112da9ee497d91e283b9a21", "packages": [ { + "name": "dnoegel/php-xdg-base-dir", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "@stable" + }, + "type": "project", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "time": "2014-10-24T07:27:01+00:00" + }, + { + "name": "jakub-onderka/php-console-color", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", + "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "0.*", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "3.7.*", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "JakubOnderka\\PhpConsoleColor": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jak...@gm...", + "homepage": "http://www.acci.cz" + } + ], + "time": "2014-04-08T15:00:19+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "shasum": "" + }, + "require": { + "jakub-onderka/php-console-color": "~0.1", + "php": ">=5.3.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~0.5", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JakubOnderka\\PhpConsoleHighlighter": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "ac...@ac...", + "homepage": "http://www.acci.cz/" + } + ], + "time": "2015-04-20T18:58:01+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v3.1.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "e57b3a09784f846411aa7ed664eedb73e3399078" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078", + "reference": "e57b3a09784f846411aa7ed664eedb73e3399078", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2018-01-25T21:31:33+00:00" + }, + { "name": "phpseclib/phpseclib", "version": "2.0.6", "source": { @@ -97,12 +268,337 @@ "x509" ], "time": "2017-06-05T06:31:10+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.8.17", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", + "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", + "shasum": "" + }, + "require": { + "dnoegel/php-xdg-base-dir": "0.1", + "jakub-onderka/php-console-highlighter": "0.3.*", + "nikic/php-parser": "~1.3|~2.0|~3.0", + "php": ">=5.3.9", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0" + }, + "require-dev": { + "hoa/console": "~3.16|~1.14", + "phpunit/phpunit": "^4.8.35|^5.4.3", + "symfony/finder": "~2.1|~3.0|~4.0" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Psy/functions.php" + ], + "psr-4": { + "Psy\\": "src/Psy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "ju...@ju...", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2017-12-28T16:14:16+00:00" + }, + { + "name": "symfony/console", + "version": "v4.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/symfony/console/symfony-console-36d5b41e7d4e1ccf0370f6babe966c08ef0a1488-zip-2286a1.zip", + "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", + "shasum": "b090c290166e123d8f804a7282de6949bd6f3585" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fa...@sy..." + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-01-29T09:06:29+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/symfony/polyfill-mbstring/symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b-zip-93441e.zip", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "shasum": "5a5a308321addb37c4f578742843b7b45f61000f" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p...@tc..." + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-30T19:27:44+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "8eca20c8a369e069d4f4c2ac9895144112867422" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422", + "reference": "8eca20c8a369e069d4f4c2ac9895144112867422", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p...@tc..." + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-31T17:43:24+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "6d63cc74f3e2d4961411ccb77389a00332653104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6d63cc74f3e2d4961411ccb77389a00332653104", + "reference": "6d63cc74f3e2d4961411ccb77389a00332653104", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p...@tc..." + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2018-01-29T09:06:29+00:00" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "psy/psysh": 0 + }, "prefer-stable": false, "prefer-lowest": false, "platform": [], Added: trim/src/psysh_conf.php =================================================================== --- trim/src/psysh_conf.php (rev 0) +++ trim/src/psysh_conf.php 2018-02-07 20:57:25 UTC (rev 65489) @@ -0,0 +1,3 @@ +<?php +include_once(dirname(__FILE__) . '/env_setup.php'); +$GLOBALS['db'] = $db; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-02-07 21:20:55
|
Revision: 65490 http://sourceforge.net/p/tikiwiki/code/65490 Author: montefuscolo Date: 2018-02-07 21:20:53 +0000 (Wed, 07 Feb 2018) Log Message: ----------- [FIX] Downgrade PSYSH deps to run on PHP 5 Modified Paths: -------------- trim/Makefile trim/composer.lock Modified: trim/Makefile =================================================================== --- trim/Makefile 2018-02-07 20:57:25 UTC (rev 65489) +++ trim/Makefile 2018-02-07 21:20:53 UTC (rev 65490) @@ -124,5 +124,5 @@ @echo shell: - @$(PHP) vendor/bin/psysh src/psysh_conf.php + $(PHP) -d date.timezone=UTC ./vendor/bin/psysh src/psysh_conf.php Modified: trim/composer.lock =================================================================== --- trim/composer.lock 2018-02-07 20:57:25 UTC (rev 65489) +++ trim/composer.lock 2018-02-07 21:20:53 UTC (rev 65490) @@ -270,6 +270,53 @@ "time": "2017-06-05T06:31:10+00:00" }, { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/psr/log/psr-log-4ebe3a8bf773a19edfe0a84b6585ba3d401b724d-zip-6434e8.zip", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "c69a0972ac57d81a78bf392a0a892b61a97e5449" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { "name": "psy/psysh", "version": "v0.8.17", "source": { @@ -343,20 +390,21 @@ }, { "name": "symfony/console", - "version": "v4.0.4", + "version": "v3.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488" + "reference": "26b6f419edda16c19775211987651cb27baea7f1" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/symfony/console/symfony-console-36d5b41e7d4e1ccf0370f6babe966c08ef0a1488-zip-2286a1.zip", - "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488", - "shasum": "b090c290166e123d8f804a7282de6949bd6f3585" + "url": "https://composer.tiki.org/dist/symfony/console/symfony-console-26b6f419edda16c19775211987651cb27baea7f1-zip-2a8972.zip", + "reference": "26b6f419edda16c19775211987651cb27baea7f1", + "shasum": "6e1dca9bf3d68bb8b81300610f849ae0ed04b82b" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -365,11 +413,11 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", + "symfony/config": "~3.3|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "symfony/process": "~3.3|~4.0" }, "suggest": { "psr/log": "For using the console logger", @@ -380,7 +428,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -407,40 +455,44 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:06:29+00:00" + "time": "2018-01-29T09:03:43+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "name": "symfony/debug", + "version": "v3.4.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "url": "https://github.com/symfony/debug.git", + "reference": "53f6af2805daf52a43b393b93d2f24925d35c937" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/symfony/polyfill-mbstring/symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b-zip-93441e.zip", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "shasum": "5a5a308321addb37c4f578742843b7b45f61000f" + "url": "https://composer.tiki.org/dist/symfony/debug/symfony-debug-53f6af2805daf52a43b393b93d2f24925d35c937-zip-5b4f76.zip", + "reference": "53f6af2805daf52a43b393b93d2f24925d35c937", + "shasum": "96d1565feaae2ba9d745869945eda83004c84318" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" }, - "suggest": { - "ext-mbstring": "For best performance" + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, + "require-dev": { + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\Debug\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -449,8 +501,8 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p...@tc..." + "name": "Fabien Potencier", + "email": "fa...@sy..." }, { "name": "Symfony Community", @@ -457,34 +509,30 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-01-18T22:16:57+00:00" }, { - "name": "symfony/polyfill-php72", + "name": "symfony/polyfill-mbstring", "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422", - "shasum": "" + "url": "https://composer.tiki.org/dist/symfony/polyfill-mbstring/symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b-zip-93441e.zip", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "shasum": "5a5a308321addb37c4f578742843b7b45f61000f" }, "require": { "php": ">=5.3.3" }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "branch-alias": { @@ -493,7 +541,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" @@ -513,34 +561,34 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], - "time": "2018-01-31T17:43:24+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.0.4", + "version": "v3.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6d63cc74f3e2d4961411ccb77389a00332653104" + "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6d63cc74f3e2d4961411ccb77389a00332653104", - "reference": "6d63cc74f3e2d4961411ccb77389a00332653104", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", + "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" @@ -551,12 +599,13 @@ }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump" + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -590,7 +639,7 @@ "debug", "dump" ], - "time": "2018-01-29T09:06:29+00:00" + "time": "2018-01-29T09:03:43+00:00" } ], "packages-dev": [], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-02-10 16:36:44
|
Revision: 65510 http://sourceforge.net/p/tikiwiki/code/65510 Author: montefuscolo Date: 2018-02-10 16:36:41 +0000 (Sat, 10 Feb 2018) Log Message: ----------- [NEW] Don't ask questions on non-interactive mode Modified Paths: -------------- trim/scripts/check.php trim/src/env_setup.php Modified: trim/scripts/check.php =================================================================== --- trim/scripts/check.php 2018-02-10 13:01:04 UTC (rev 65509) +++ trim/scripts/check.php 2018-02-10 16:36:41 UTC (rev 65510) @@ -5,6 +5,11 @@ // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. include_once dirname(__FILE__) . '/../src/env_setup.php'; + +if(!INTERACTIVE) { + return; +} + include_once dirname(__FILE__) . '/../src/check.php'; echo "\nInstances you can verify:\n"; Modified: trim/src/env_setup.php =================================================================== --- trim/src/env_setup.php 2018-02-10 13:01:04 UTC (rev 65509) +++ trim/src/env_setup.php 2018-02-10 16:36:41 UTC (rev 65510) @@ -7,6 +7,13 @@ define('TRIM_DEBUG', getenv('TRIM_DEBUG') === 'true'); +define('INTERACTIVE', + php_sapi_name() === 'cli' + && getenv('NONINTERACTIVE') !== 'true' + && !in_array(getenv('TERM'), array('dumb', false, '')) + && preg_match(',^/dev/,', exec('tty')) +); + if (! function_exists('readline')) { function readline($prompt) { @@ -547,6 +554,10 @@ function promptUser($prompt, $default = false, $values = array()) { + if(!INTERACTIVE) { + return $default; + } + if (is_array($values) && count($values)) $prompt .= ' (' . implode(', ', $values) . ')'; if ($default !== false && strlen($default)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <po...@us...> - 2018-04-24 22:57:44
|
Revision: 66167 http://sourceforge.net/p/tikiwiki/code/66167 Author: pom2ter Date: 2018-04-24 22:57:42 +0000 (Tue, 24 Apr 2018) Log Message: ----------- [ENH] added a simple bootstrap ui to webtrim Modified Paths: -------------- trim/scripts/enablewww.php trim/www/.htaccess trim/www/include/delete.php trim/www/include/edit.php trim/www/include/list.php trim/www/include/login.php trim/www/include/view.php trim/www/index.php Added Paths: ----------- trim/www/include/backup.php trim/www/include/blank.php trim/www/include/clone.php trim/www/include/fix.php trim/www/include/layout/ trim/www/include/layout/footer.php trim/www/include/layout/head.php trim/www/include/layout/modal.php trim/www/include/layout/nav.php trim/www/include/logout.php trim/www/include/manage.php trim/www/include/restore.php trim/www/include/update.php trim/www/include/watch.php trim/www/scripts/ trim/www/scripts/backup.php trim/www/scripts/clone.php trim/www/scripts/fix.php trim/www/scripts/lock.php trim/www/scripts/restore.php trim/www/scripts/unlock.php trim/www/scripts/update.php trim/www/scripts/watch.php trim/www/themes/ trim/www/themes/default/ trim/www/themes/default/css/ trim/www/themes/default/css/default.css trim/www/themes/default/fonts/ trim/www/themes/default/fonts/index.php trim/www/themes/default/less/ trim/www/themes/default/less/bootstrap-variables.less trim/www/themes/default/less/default.less trim/www/themes/trim.js trim/www/vendor/ trim/www/vendor/bootstrap/ trim/www/vendor/bootstrap/css/ trim/www/vendor/bootstrap/css/bootstrap.min.css trim/www/vendor/bootstrap/js/ trim/www/vendor/bootstrap/js/bootstrap.min.js trim/www/vendor/font-awesome/ trim/www/vendor/font-awesome/css/ trim/www/vendor/font-awesome/css/font-awesome.min.css trim/www/vendor/font-awesome/fonts/ trim/www/vendor/font-awesome/fonts/FontAwesome.otf trim/www/vendor/font-awesome/fonts/fontawesome-webfont.eot trim/www/vendor/font-awesome/fonts/fontawesome-webfont.svg trim/www/vendor/font-awesome/fonts/fontawesome-webfont.ttf trim/www/vendor/font-awesome/fonts/fontawesome-webfont.woff trim/www/vendor/font-awesome/fonts/fontawesome-webfont.woff2 trim/www/vendor/jquery/ trim/www/vendor/jquery/jquery-3.1.1.min.js Modified: trim/scripts/enablewww.php =================================================================== --- trim/scripts/enablewww.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/scripts/enablewww.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -14,17 +14,17 @@ echo <<<INFO TRIM web administration files are located in the TRIM directory. In order to -make the interface available externally, a symbolic link from a web accessible -location will be used. +make the interface available externally, the files will be copied to a web +accessible location. Permissions on the data folder will be changed to allow the web server to access the files. -For example, if your web root is /var/www -* A link will be created from /var/www/webtrim ===> $root/www +For example, if your web root is /var/www/virtual/webtrim.example.com +* Files will be copied to /var/www/virtual/webtrim.example.com/html * TRIM web administration will be accessible from: - http://localhost/webtrim -* You must have write access in /var/www + http://webtrim.example.com +* You must have write access in /var/www/virtual Simple authentification will be used. However, it is possible to restrict access to the administration panel to local users (safer). @@ -35,23 +35,10 @@ echo "This will enable the TRIM administration web panel.\n"; if ('confirm' != promptUser('Type \'confirm\' to continue', '')) exit(1); -$out = '/etc/httpd/'; // What does this do? +$webTrimDirectory = promptUser('WWW Trim directory (ex: /var/www/virtual/webtrim.example.com/html)'); +$cmd = 'cp -a www/. ' . $webTrimDirectory; +exec($cmd); -// Should we not simply prompt for the directory of extra configuration files? Chealer 2017-03-07 -$cmd = 'dirname $(find /etc/httpd -name httpd.conf)'; -exec($cmd, $out); -$httpdConfDirectory = promptUser('Apache httpd.conf directory', $out[0]); -$base = dirname($httpdConfDirectory); -$cmd = 'dirname $(find '. $base . - ' -name httpd.conf -exec grep ^Include {} \; | ' . - 'cut -d' . "' '" . ' -f2) | sort | head -n1'; -exec($cmd, $out); - -$httpdExtraConfigurationFilesDirectory = promptUser( - 'Apache IncludeOptional (extra configuration files) directory', "{$base}/{$out[1]}"); - -//$folder = promptUser('TRIM location', '/var/www/webtrim'); - $pass = ''; $user = promptUser('Desired username'); @@ -62,53 +49,26 @@ $restrict = promptUser('Restrict use to localhost', 'no'); $restrict = (strtolower($restrict{0}) == 'n') ? 'false' : 'true'; +$trimpath = realpath(dirname(__FILE__) . '/..'); -// Why would sudo be used if we are root? -$sudo = promptUser('Use sudo for permission changing commands', 'no'); -$prefix = (strtolower($sudo{0}) == 'y') ? 'sudo' : ''; - $user = addslashes($user); $pass = addslashes($pass); -file_put_contents(dirname(__FILE__) . '/../www/config.php', <<<CONFIG +file_put_contents($webTrimDirectory . '/config.php', <<<CONFIG <?php define('USERNAME', '$user'); define('PASSWORD', '$pass'); define('RESTRICT', $restrict); +define('TRIMPATH', '$trimpath'); +define('THEME', 'default'); +define('TITLE', 'TRIM Web Administration'); CONFIG ); -$web = realpath(dirname(__FILE__) . '/../www'); - -file_put_contents($httpdExtraConfigurationFilesDirectory . "/webtrim.conf", <<<CONFIG -Alias /webtrim $web - -<Directory $web/> - -AllowOverride All -<IfModule mod_authz_core.c> - # Apache 2.4 - Require all granted - LogLevel alert rewrite:trace6 -</IfModule> -<IfModule !mod_authz_core.c> - # Apache 2.2 - order deny,allow - allow from all -</IfModule> -</Directory> -CONFIG -); - $db = DB_FILE; $data = dirname( DB_FILE ); -#`$prefix ln -sf $web $folder`; -`$prefix chmod 0666 $db`; -`$prefix chmod 0777 $data`; +`chmod 0666 $db`; +`chmod 0777 $data`; echo "WWW Trim is now enabled.\n"; -echo "Please restart Apache before continuing.\n"; -echo "Point your web browser to: http://<server_ip>/webtrim/\n"; echo "Enjoy!\n"; - -// vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 Modified: trim/www/.htaccess =================================================================== --- trim/www/.htaccess 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/.htaccess 2018-04-24 22:57:42 UTC (rev 66167) @@ -2,4 +2,4 @@ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^([a-z]+)?(/([0-9]*))? /webtrim/index.php?op=$1&id=$3 +RewriteRule ^([a-z]+)?(/([0-9]*))? index.php?op=$1&id=$3 Added: trim/www/include/backup.php =================================================================== --- trim/www/include/backup.php (rev 0) +++ trim/www/include/backup.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,41 @@ +<?php $page_title = 'Backup an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="" title="Backup this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="backup"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="" class="fa-floppy-o" title="Backup this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="backup"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/blank.php =================================================================== --- trim/www/include/blank.php (rev 0) +++ trim/www/include/blank.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,148 @@ +<?php + +if( $_SERVER['REQUEST_METHOD'] == 'POST' ) +{ + $type = $user = $host = $pass = ''; + $name = $contact = $webroot = $tempdir = $weburl = ''; + + $type = $_POST['type']; + $name = $_POST['name']; + $contact = $_POST['contact']; + $webroot = $_POST['webroot']; + $weburl = $_POST['weburl']; + $tempdir = $_POST['tempdir']; + $backup_user = $_POST['backup_user']; + $backup_group = $_POST['backup_group']; + $backup_perm = $_POST['backup_perm']; + + if ($type == 'local') { + if (function_exists('posix_getpwuid')) { + $user = posix_getpwuid(posix_geteuid())['name']; + } elseif (!empty($_SERVER['USER'])) { + $user = $_SERVER['USER']; + } else { + $user = ''; + } + $pass = ''; + $host = 'localhost'; + $port = 0; + } + + $instance = new Instance; + $instance->name = $name; + $instance->contact = $contact; + $instance->webroot = rtrim($webroot, '/'); + $instance->weburl = rtrim($weburl, '/'); + $instance->tempdir = rtrim($tempdir, '/'); + $instance->backup_user = trim($backup_user); + $instance->backup_group = trim($backup_group); + $instance->backup_perm = octdec($backup_perm); + $access = $instance->registerAccessMethod($type, $host, $user, $pass, $port); + $instance->detectPHP(); + $instance->save(); + + header( "Location: " . url( "list" ) ); + exit; +} + +?> + +<?php + $page_title = 'Creating a blank instance'; + require "include/layout/head.php"; + require "include/layout/nav.php"; + + $instance = new Instance; + if (function_exists('posix_getpwuid')) { + $user = posix_getpwuid(posix_geteuid())['name']; + } elseif (!empty($_SERVER['USER'])) { + $user = $_SERVER['USER']; + } else { + $user = ''; + } + $instance->registerAccessMethod('local', 'localhost', $user, '', 0); + + $name = 'localhost'; + $weburl = "http://$name"; + $tempdir = TRIM_TEMP; + $backup_user = @posix_getpwuid(posix_geteuid())['name']; + + switch ($instance->detectDistribution()) { + case "ClearOS": + $backup_group = 'allusers'; + $backup_perm = 02770; + $host = preg_replace("/[\\\\\/?%*:|\"<>]+/", '-', $name); + $webroot = ($user == 'root' || $user == 'apache') ? + "/var/www/virtual/{$host}/html/" : "/home/$user/public_html/"; + break; + default: + $backup_group = @posix_getgrgid(posix_getegid())['name']; + $backup_perm = 02750; + $webroot = ($user == 'root' || $user == 'apache') ? + '/var/www/html/' : "/home/$user/public_html/"; + } +?> + +<div class="container"> + <div class="trim-instance-new center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <form method="post" action="<?php echo html( $_SERVER['REQUEST_URI'] ) ?>"> + <div class="form-group"> + <table class="table table-bordered"> + <tr> + <th>Connection Type</th> + <td> + <select class="form-control" disabled> + <option value="ftp">FTP</option> + <option value="local" selected>Local</option> + <option value="ssh">SSH</option> + </select> + <input type="hidden" name="type" class="form-control" value="local"/> + </td> + </tr> + <tr> + <th>Instance name</th> + <td><input type="text" name="name" class="form-control" value="<?php echo $name; ?>"/></td> + </tr> + <tr> + <th>Contact email</th> + <td><input type="text" name="contact" class="form-control" value=""/></td> + </tr> + <tr> + <th>Web root</th> + <td><input type="text" name="webroot" class="form-control" value="<?php echo $webroot; ?>"/></td> + </tr> + <tr> + <th>Web URL</th> + <td><input type="text" name="weburl" class="form-control" value="<?php echo $weburl; ?>"/></td> + </tr> + <tr> + <th>Work directory</th> + <td><input type="text" name="tempdir" class="form-control" value="<?php echo $tempdir; ?>"/></td> + </tr> + <tr> + <th>Backup owner</th> + <td><input type="text" name="backup_user" class="form-control" value="<?php echo $backup_user; ?>"/></td> + </tr> + <tr> + <th>Backup group</th> + <td><input type="text" name="backup_group" class="form-control" value="<?php echo $backup_group; ?>"/></td> + </tr> + <tr> + <th>Backup file permissions</th> + <td><input type="text" name="backup_perm" class="form-control" value="<?php echo decoct($backup_perm); ?>"/></td> + </tr> + </table> + <p> + <a href="<?php echo html( url( "" ) ) ?>" class="cancel btn btn-danger"><span class="fa fa-angle-double-left"></span> Cancel</a> + <button type="submit" class="save btn btn-primary">Save</button> + </p> + </div> + </form> + + </div> +</div> + +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/clone.php =================================================================== --- trim/www/include/clone.php (rev 0) +++ trim/www/include/clone.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,62 @@ +<?php $page_title = 'Cloning an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list clone center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <h3>Select the source instance</h3> + <ul class="source clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="javascript:void(0);" title="Clone this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="clone"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="javascript:void(0);" class="hide fa-check" title="Clone this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + + <h3>Select the destination instance</h3> + <ul class="hide destination clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="javascript:void(0);" title="Clone this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="clone"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="javascript:void(0);" class="hide fa-check" title="Clone this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + <button class="clone btn btn-success" data-toggle="modal" data-target="#trimModal" data-id="" data-name="" data-sourceid="" data-sourcename="" data-type="clone" disabled> + <span class="fa fa-clone"></span> Clone + </button> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Modified: trim/www/include/delete.php =================================================================== --- trim/www/include/delete.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/include/delete.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -1,17 +1,57 @@ <?php - -if( $_SERVER['REQUEST_METHOD'] == 'POST' ) -{ - if( isset( $_POST['instance'] ) && is_array( $_POST['instance'] ) ) - { - foreach( $_POST['instance'] as $id ) - { - if( $instance = Instance::getInstance( (int) $id ) ) - { +if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { + if ( isset( $_POST['instance'] ) && is_array( $_POST['instance'] ) ) { + foreach ( $_POST['instance'] as $id ) { + if ( $instance = Instance::getInstance( (int) $id ) ) { + ob_start(); $instance->delete(); - } + ob_end_clean(); + } else { + die( "Unknown instance." ); + } } } header( 'Location: ' . url( '' ) ); } +?> + +<?php $page_title = 'Delete an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="javascript:void(0);" title="Delete this instance" data-toggle="modal" data-target="#deleteInstance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="javascript:void(0);" class="fa-times" title="Delete this instance" data-toggle="modal" data-target="#deleteInstance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"></a> + </div> + </li> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Modified: trim/www/include/edit.php =================================================================== --- trim/www/include/edit.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/include/edit.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -8,6 +8,9 @@ $instance->webroot = rtrim( $_POST['webroot'], '/' ); $instance->tempdir = rtrim( $_POST['tempdir'], '/' ); $instance->phpexec = rtrim( $_POST['phpexec'], '/' ); + $instance->backup_user = trim( $_POST['backup_user'] ); + $instance->backup_group = trim( $_POST['backup_group'] ); + $instance->backup_perm = octdec( $_POST['backup_perm'] ); $instance->save(); $locations = explode( "\n", $_POST['backups'] ); @@ -14,51 +17,73 @@ $locations = array_map( 'trim', $locations ); $instance->setExtraBackups( $locations ); - header( "Location: " . url( "view/{$instance->id}" ) ); + header( "Location: " . url( "list" ) ); exit; } ?> -<html> -<head><title>TRIM Web Administration : <?php echo html( $instance->name ) ?></title></head> -<body> - <h1>Instance : <?php echo html( $instance->name ) ?></h1> - <form method="post" action="<?php echo html( $_SERVER['REQUEST_URI'] ) ?>"> - <table> - <tr> - <th>Name</th> - <td><input type="text" name="name" value="<?php echo html( $instance->name ) ?>"/></td> - </tr> - <tr> - <th>Contact</th> - <td><input type="text" name="contact" value="<?php echo html( $instance->contact ) ?>"/></td> - </tr> - <tr> - <th>Web URL</th> - <td><input type="text" name="weburl" value="<?php echo html( $instance->weburl ) ?>"/></td> - </tr> - <tr> - <th>Web Root</th> - <td><input type="text" name="webroot" value="<?php echo html( $instance->webroot ) ?>"/></td> - </tr> - <tr> - <th>Work Directory</th> - <td><input type="text" name="tempdir" value="<?php echo html( $instance->tempdir ) ?>"/></td> - </tr> - <tr> - <th>PHP Interpreter</th> - <td><input type="text" name="phpexec" value="<?php echo html( $instance->phpexec ) ?>"/></td> - </tr> - <tr> - <th>Additional folders to backup<br/><small>(One per line)</small></th> - <td><textarea cols="50" rows="6" name="backups"><?php echo html( implode( "\n", $instance->getExtraBackups() ) ) ?></textarea></td> - </tr> - <tr> - <td></td> - <td><input type="submit" value="Save"/></td> - </tr> - </table> - </form> - <p><a href="<?php echo html( url( "view/{$instance->id}" ) ) ?>"><<< Cancel</a> -</body> -</html> + +<?php $page_title = 'Edit instance : ' . html( $instance->name ); ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-edit center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <form method="post" action="<?php echo html( $_SERVER['REQUEST_URI'] ) ?>"> + <div class="form-group"> + <table class="table table-bordered"> + <tr> + <th>Name</th> + <td><input type="text" name="name" class="form-control" value="<?php echo html( $instance->name ) ?>"/></td> + </tr> + <tr> + <th>Contact</th> + <td><input type="text" name="contact" class="form-control" value="<?php echo html( $instance->contact ) ?>"/></td> + </tr> + <tr> + <th>Web URL</th> + <td><input type="text" name="weburl" class="form-control" value="<?php echo html( $instance->weburl ) ?>"/></td> + </tr> + <tr> + <th>Web Root</th> + <td><input type="text" name="webroot" class="form-control" value="<?php echo html( $instance->webroot ) ?>"/></td> + </tr> + <tr> + <th>Work Directory</th> + <td><input type="text" name="tempdir" class="form-control" value="<?php echo html( $instance->tempdir ) ?>"/></td> + </tr> + <tr> + <th>PHP Interpreter</th> + <td><input type="text" name="phpexec" class="form-control" value="<?php echo html( $instance->phpexec ) ?>"/></td> + </tr> + <tr> + <th>Backup owner</th> + <td><input type="text" name="backup_user" class="form-control" value="<?php echo html( $instance->getProp('backup_user') ) ?>"/></td> + </tr> + <tr> + <th>Backup group</th> + <td><input type="text" name="backup_group" class="form-control" value="<?php echo html( $instance->getProp('backup_group') ) ?>"/></td> + </tr> + <tr> + <th>Backup file permissions</th> + <td><input type="text" name="backup_perm" class="form-control" value="<?php echo html( decoct($instance->getProp('backup_perm')) ) ?>"/></td> + </tr> + <tr> + <th class="top">Additional folders to backup<span>(One per line)</span></th> + <td><textarea cols="50" rows="6" name="backups" class="form-control"><?php echo html( implode( "\n", $instance->getExtraBackups() ) ) ?></textarea></td> + </tr> + </table> + <p> + <a href="<?php echo html( url( "view/{$instance->id}" ) ) ?>" class="cancel btn btn-danger"><span class="fa fa-angle-double-left"></span> Cancel</a> + <button type="submit" class="save btn btn-primary">Save</button> + </p> + </div> + </form> + + </div> +</div> + +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/fix.php =================================================================== --- trim/www/include/fix.php (rev 0) +++ trim/www/include/fix.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,41 @@ +<?php $page_title = 'Fixing an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="" title="Fix this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="fix"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="" class="fa-wrench" title="Fix this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="fix"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/layout/footer.php =================================================================== --- trim/www/include/layout/footer.php (rev 0) +++ trim/www/include/layout/footer.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,11 @@ + <footer> + <div class="container"> + <p><?php echo TITLE; ?> - © <?php echo date('Y'); ?> Avan.Tech</p> + </div> + </footer> + + <script src="/vendor/jquery/jquery-3.1.1.min.js"></script> + <script src="/vendor/bootstrap/js/bootstrap.min.js"></script> + <script src="/themes/trim.js"></script> + </body> +</html> Added: trim/www/include/layout/head.php =================================================================== --- trim/www/include/layout/head.php (rev 0) +++ trim/www/include/layout/head.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title><?php echo TITLE; ?> : <?php echo $page_title; ?></title> + <link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> + <link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet"> + <link href="/themes/<?php echo THEME; ?>/css/<?php echo THEME; ?>.css" rel="stylesheet"> + </head> + + <body> \ No newline at end of file Added: trim/www/include/layout/modal.php =================================================================== --- trim/www/include/layout/modal.php (rev 0) +++ trim/www/include/layout/modal.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,68 @@ +<!-- Delete instance --> +<div class="modal fade" id="deleteInstance" tabindex="-1" role="dialog" aria-labelledby="deleteInstanceLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <form method="post" action="<?php echo html( url( 'delete' ) ) ?>"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="deleteInstanceLabel">Delete instance</h4> + <input type="hidden" class="instance" name="instance[]" value=""/> + </div> + + <div class="modal-body"> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> + <button type="button" class="btn btn-danger delete">Delete</button> + </div> + </form> + </div> + </div> +</div> + + +<!-- Delete backup --> +<div class="modal fade" id="deleteBackup" tabindex="-1" role="dialog" aria-labelledby="deleteBackupLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <form method="post" action="<?php echo html( url( 'manage' ) ) ?>"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="deleteBackupLabel">Delete backup</h4> + <input type="hidden" class="instance" name="instance[]" value=""/> + <input type="hidden" class="filename" name="filename" value=""/> + </div> + + <div class="modal-body"> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> + <button type="button" class="btn btn-danger delete">Delete</button> + </div> + </form> + </div> + </div> +</div> + + +<!-- Multi purpose modal --> +<div class="modal fade" id="trimModal" tabindex="-1" role="dialog" aria-labelledby="trimModalLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="trimModalLabel">Message Log</h4> + </div> + + <div class="modal-body"> + <pre class="log"></pre> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> + </div> + </div> + </div> +</div> Added: trim/www/include/layout/nav.php =================================================================== --- trim/www/include/layout/nav.php (rev 0) +++ trim/www/include/layout/nav.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,70 @@ +<header> + <nav class="navbar navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="<?php echo html( url( '' ) ) ?>">TRIM Web Admin</a> + </div> + +<?php if( isset( $_SESSION['active'] ) ) { ?> + <div id="navbar" class="collapse navbar-collapse"> + <ul class="nav navbar-nav"> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Instances <span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="<?php echo html( url( 'list' ) ) ?>">List instances</a></li> +<!-- <li><a href="#">Create a new instance</a></li>--> + <li><a href="<?php echo html( url( 'blank' ) ) ?>">Create a blank instance</a></li> +<!-- <li><a href="<?php echo html( url( 'import' ) ) ?>">Import a tiki instance</a></li>--> + <li><a href="<?php echo html( url( 'delete' ) ) ?>">Delete an instance</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Manage <span class="caret"></span></a> + <ul class="dropdown-menu"> +<!-- <li><a href="#">Check an instance</a></li>--> + <li><a href="<?php echo html( url( 'update' ) ) ?>">Update an instance</a></li> +<!-- <li><a href="#">Upgrade an instance</a></li>--> + <li><a href="<?php echo html( url( 'fix' ) ) ?>">Fix an instance</a></li> + <li><a href="<?php echo html( url( 'watch' ) ) ?>">Watch an instance</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Backups <span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="<?php echo html( url( 'backup' ) ) ?>">Backup an instance</a></li> + <li><a href="<?php echo html( url( 'restore' ) ) ?>">Restore an instance</a></li> + <li><a href="<?php echo html( url( 'clone' ) ) ?>">Clone an instance</a></li> +<!-- <li><a href="#">Clone and upgrade</a></li>--> + <li><a href="<?php echo html( url( 'manage' ) ) ?>">Manage backups</a></li> + </ul> + </li> +<!-- + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Misc <span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="#">Access</a></li> + <li><a href="#">Clean</a></li> + <li><a href="#">Convert</a></li> + <li><a href="#">CopySSHKey</a></li> + <li><a href="#">Detect</a></li> + <li><a href="#">Profile</a></li> + <li><a href="#">Report</a></li> + <li><a href="#">ViewDB</a></li> + </ul> + </li> +--> + </ul> + <ul class="nav navbar-nav"> + <li><a href="<?php echo html( url( 'logout' ) ) ?>">Log out</a></li> + </ul> + </div> +<?php } ?> + </div> + </nav> +</header> Modified: trim/www/include/list.php =================================================================== --- trim/www/include/list.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/include/list.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -1,17 +1,72 @@ -<html> -<head><title>TRIM Web Administration : Instance List</title></head> -<body> -<h1>Instance List</h1> -<form method="post" action="<?php echo html( url( 'delete' ) ) ?>"> -<ul> -<?php foreach( Instance::getInstances() as $instance ): ?> - <li> - <input type="checkbox" name="instance[]" value="<?php echo html( $instance->id ) ?>"/> - <a href="<?php echo html( url( "view/{$instance->id}" ) ) ?>"><?php echo html( $instance->name ) ?></a> - </li> -<?php endforeach; ?> -</ul> -<p><input type="submit" value="Delete"/></p> -</form> -</body> -</html> +<?php $page_title = 'Instance List'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-main-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php + $version = $instance->getLatestVersion(); + $lock = (md5_file(TRIMPATH . '/scripts/maintenance.htaccess') == md5_file($instance->getWebPath('.htaccess'))); + $blank = (! $instance->getApplication()) + ?> + <li> + <a href="<?php echo html( url( "view/{$instance->id}" ) ) ?>" <?php if ($blank) { echo "class='nolock'"; } ?>> + <?php echo html( $instance->name ) ?> + <span><?php + if ($blank) { echo "(blank)"; } + else { echo html( "{$instance->app} ({$version->type}, {$version->branch})" ); } + ?></span> + </a> + + <?php if (! $blank): ?> + <div class="lock"> + <?php if ($lock): ?> + <a href="javascript:void(0);" title="This instance is locked. Click to unlock." data-id="<?php echo html( "{$instance->id}" ) ?>"><span class="fa fa-lock"></span></a> + <?php else: ?> + <a href="javascript:void(0);" title="This instance is unlocked. Click to lock." data-id="<?php echo html( "{$instance->id}" ) ?>"><span class="fa fa-unlock"></span></a> + <?php endif; ?> + </div> + <?php endif; ?> + + <div class="contact"> + <span class="left">contact: <a href="mailto:<?php echo html( "{$instance->contact}" ) ?>"><?php echo html( "{$instance->contact}" ) ?></a></span> + <?php if (! $blank): ?><span class="right">url: <a href="<?php echo html( "{$instance->weburl}" ) ?>" target="_blank"><?php echo html( "{$instance->weburl}" ) ?></a></span><?php endif; ?> + </div> + + <div class="buttons fa"> +<!-- + <a href="#" class="fa-check" title="Check this instance"></a> + <a href="#" class="fa-arrow-up" title="Upgrade this instance"></a> +--> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <a href="" class="fa-eye" title="Watch this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="watch"></a> + <a href="" class="fa-refresh" title="Update this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="update"></a> + <a href="" class="fa-floppy-o" title="Backup this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="backup"></a> + <a href="" class="fa-wrench" title="Fix this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="fix"></a> + <?php endif; ?> + <a href="<?php echo html( url( "edit/{$instance->id}" ) ) ?>" class="fa-pencil" title="Edit this instance"></a> + <a href="" class="fa-times" title="Delete this instance" data-toggle="modal" data-target="#deleteInstance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"></a> + </div> + </li> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="#" class="new btn btn-primary" disabled>Create a new instance</a> + <a href="<?php echo html( url( 'blank' ) ) ?>" class="blank btn btn-primary">Create a blank instance</a> + <a href="<?php echo html( url( 'import' ) ) ?>" class="new btn btn-primary" disabled>Import a tiki instance</a> + </p> + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Modified: trim/www/include/login.php =================================================================== --- trim/www/include/login.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/include/login.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -12,22 +12,37 @@ } ?> -<html> -<head><title>TRIM Web Administration Login</title></head> -<body> -<h1>TRIM Web Administration Login</h1> -<form method="post" action="<?php echo html( $_SERVER['REQUEST_URI'] ) ?>"> - <div> - <label for="username">Username:</label> - <input id="username" type="text" name="user"/> + +<?php $page_title = 'Login'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-login center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <div class="row"> + <div class="col-sm-6 col-sm-offset-3"> + <form method="post" action="<?php echo html( $_SERVER['REQUEST_URI'] ) ?>"> + <fieldset> + <div class="form-group"> + <label for="username">Username:</label> + <input id="username" class="form-control" type="text" name="user"/> + </div> + <div class="form-group"> + <label for="password">Password:</label> + <input id="password" class="form-control" type="password" name="pass"/> + </div> + <div class="form-group center"> + <button class="btn btn-primary" type="submit">Submit</button> + </div> + </fieldset> + </form> + </div> + </div> + </div> - <div> - <label for="password">Password:</label> - <input id="password" type="password" name="pass"/> - </div> - <div> - <input type="submit"/> - </div> -</form> -</body> -</html> +</div> + +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/logout.php =================================================================== --- trim/www/include/logout.php (rev 0) +++ trim/www/include/logout.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,5 @@ +<?php + +session_destroy(); +header('Location: ' . url('')); + Added: trim/www/include/manage.php =================================================================== --- trim/www/include/manage.php (rev 0) +++ trim/www/include/manage.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,79 @@ +<?php +if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { + if ( isset( $_POST['instance'] ) && is_array( $_POST['instance'] ) ) { + foreach ( $_POST['instance'] as $id ) { + if ( $instance = Instance::getInstance( (int) $id ) ) { + ob_start(); + shell_exec('rm -f ' . $_POST['filename']); + ob_end_clean(); + } else { + die( "Unknown instance." ); + } + } + } + + header( 'Location: ' . url( 'manage' ) ); +} +?> + +<?php $page_title = 'Manage backups'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list manage center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <h3>Select an instance</h3> + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="heading-<?php echo html( "{$instance->id}" ) ?>"> + <a class="panel-title collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-<?php echo html( "{$instance->id}" ) ?>" aria-expanded="true" aria-controls="collapse-<?php echo html( "{$instance->id}" ) ?>" data-id="<?php echo html( "{$instance->id}" ) ?>"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + </div> + <div id="collapse-<?php echo html( "{$instance->id}" ) ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-<?php echo html( "{$instance->id}" ) ?>"> + <div class="panel-body"> + <?php if (!empty($instance->getArchives())): ?> + <h3>Archive list</h3> + <ul class="archive"> + <?php foreach( $instance->getArchives() as $filename ): ?> + <li> + <a href="javascript:void(0);" class="btn btn-danger" title="Delete this backup" data-toggle="modal" data-target="#deleteBackup" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$filename}" ) ?>"> + <span class="fa fa-times"></span> + <span class="file"><?php echo html( $filename ) ?></span> + </a> + </li> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>This instance doesnt have backups.</h3> + <?php endif; ?> + </div> + </div> + </div> + <?php endif; ?> + <?php endforeach; ?> + </div> + + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/restore.php =================================================================== --- trim/www/include/restore.php (rev 0) +++ trim/www/include/restore.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,86 @@ +<?php +$blank = false; +foreach( Instance::getInstances() as $instance ) { + if (! $instance->getApplication()) $blank = true; +} +?> + +<?php $page_title = 'Restoring an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list restore center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (! $blank): ?> + <h3>You need at least one blank instance to be able to restore.</h3> + <?php elseif (!empty(Instance::getInstances())): ?> + <h3>Which instance do you want to restore from?</h3> + <div class="panel-group" id="accordion-source" role="tablist" aria-multiselectable="true"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="heading-<?php echo html( "{$instance->id}" ) ?>"> + <a class="panel-title collapsed" role="button" data-toggle="collapse" data-parent="#accordion-source" href="#collapse-<?php echo html( "{$instance->id}" ) ?>" aria-expanded="true" aria-controls="collapse-<?php echo html( "{$instance->id}" ) ?>" title="Restore this instance" data-id="<?php echo html( "{$instance->id}" ) ?>"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + </div> + <div id="collapse-<?php echo html( "{$instance->id}" ) ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-<?php echo html( "{$instance->id}" ) ?>"> + <div class="panel-body"> + <?php if (!empty($instance->getArchives())): ?> + <h3>Which backup do you want to restore?</h3> + <ul class="archive"> + <?php foreach( $instance->getArchives() as $filename ): ?> + <li> + <a href="javascript:void(0);" data-id="<?php echo html( "{$instance->id}" ) ?>"> + <span class="file"><?php echo html( $filename ) ?></span> + <span class="hide right fa fa-check"></span> + </a> + </li> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>This instance doesnt have backups.</h3> + <?php endif; ?> + </div> + </div> + </div> + <?php endif; ?> + <?php endforeach; ?> + </div> + + <h3>Which instance do you want to restore to?</h3> + <ul class="destination clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if (! $instance->getApplication()): ?> + <li> + <a href="javascript:void(0);" title="Restore this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"><?php echo html( $instance->name ) ?></a> + <div class="buttons fa"> + <a href="javascript:void(0);" class="hide fa-check" title="Restore this instance" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + <button class="restore btn btn-success" data-toggle="modal" data-target="#trimModal" data-id="" data-name="" data-sourceid="" data-backup="" data-type="restore" disabled> + <span class="fa fa-undo"></span> Restore + </button> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/update.php =================================================================== --- trim/www/include/update.php (rev 0) +++ trim/www/include/update.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,41 @@ +<?php $page_title = 'Updating an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="" title="Update this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="update"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="" class="fa-refresh" title="Update this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="update"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Modified: trim/www/include/view.php =================================================================== --- trim/www/include/view.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/include/view.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -1,56 +1,134 @@ -<?php $version = $instance->getLatestVersion() ?> -<html> -<head><title>TRIM Web Administration : <?php echo html( $instance->name ) ?></title></head> -<body> - <h1>Instance : <?php echo html( $instance->name ) ?></h1> - <table> - <tr> - <th>Contact</th> - <td><a href="mailto:<?php echo html( $instance->contact ) ?>"><?php echo html( $instance->contact ) ?></a></td> - </tr> - <tr> - <th>Web URL</th> - <td><?php echo html( $instance->weburl ) ?></td> - </tr> - <tr> - <th>Web Root</th> - <td><?php echo html( $instance->webroot ) ?></td> - </tr> - <tr> - <th>Work Directory</th> - <td><?php echo html( $instance->tempdir ) ?></td> - </tr> - <tr> - <th>PHP Interpreter</th> - <td><?php echo html( $instance->phpexec ) ?></td> - </tr> - <tr> - <th>Application</th> - <td><?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></td> - </tr> - <tr> - <th>Last update</th> - <td><?php echo html( $version->date ) ?></td> - </tr> - <tr> - <th valign="top">Additional folders to backup</th> - <td> +<?php + $version = $instance->getLatestVersion(); + $all = Instance::getInstances(); + while(key($all) != $instance->id) { + $prev = current($all); + next($all); + } + $next = next($all); +?> + +<?php $page_title = 'Instance : ' . html( $instance->name ); ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-view center"> + <h1><?php echo TITLE; ?></h1> + <div class="nav"> + <h2><?php echo $page_title; ?></h2> + <?php if ($prev): ?> + <a class="left btn btn-default" href="<?php echo html( url( "view/{$prev->id}" ) ) ?>" title="Previous instance"> + <span class="fa fa-arrow-left"></span> + </a> + <?php endif; ?> + <?php if ($next): ?> + <a class="right btn btn-default" href="<?php echo html( url( "view/{$next->id}" ) ) ?>" title="Next instance"> + <span class="fa fa-arrow-right"></span> + </a> + <?php endif; ?> + </div> + + <table class="table table-bordered"> + <tr> + <th>Contact</th> + <td><a href="mailto:<?php echo html( $instance->contact ) ?>"><?php echo html( $instance->contact ) ?></a></td> + </tr> + <tr> + <th>Web URL</th> + <td><a href="<?php echo html( $instance->weburl ) ?>" target="_blank"><?php echo html( $instance->weburl ) ?></a></td> + </tr> + <tr> + <th>Web Root</th> + <td><?php echo html( $instance->webroot ) ?></td> + </tr> + <tr> + <th>Work Directory</th> + <td><?php echo html( $instance->tempdir ) ?></td> + </tr> + <tr> + <th>PHP Interpreter</th> + <td><?php echo html( $instance->phpexec ) ?></td> + </tr> + <tr> + <th>Application</th> + <td><?php + if (! $instance->getApplication()) { + echo "(blank instance)"; + } else { + echo html( "{$instance->app} ({$version->type}, {$version->branch})" ); + } + ?></td> + </tr> + <tr> + <th>Backup owner</th> + <td><?php echo html( $instance->getProp('backup_user') ) ?></td> + </tr> + <tr> + <th>Backup group</th> + <td><?php echo html( $instance->getProp('backup_group') ) ?></td> + </tr> + <tr> + <th>Backup file permissions</th> + <td><?php echo html( decoct($instance->getProp('backup_perm')) ) ?></td> + </tr> + <tr> + <th>Last update</th> + <td> + <?php echo html( $version->date ) ?> + <a href="#" class="fa update" title="Update now"> + <span class="fa-refresh"></span> + </a> + </td> + </tr> + <tr> + <th class="top">Additional folders to backup</th> + <td> + <ul> + <li style="display:none"></li> + <?php foreach( $instance->getExtraBackups() as $path ): ?> + <li><?php echo html( $path ) ?></li> + <?php endforeach; ?> + </ul> + </td> + </tr> + </table> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="left btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + <a href="<?php echo html( url( "edit/{$instance->id}" ) ) ?>" class="right edit btn btn-primary"> + <span class="fa fa-pencil"></span> Edit + </a> + <?php if ($instance->getApplication()): ?> + <a href="javascript:void(0);" class="right btn btn-primary" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="fix"> + <span class="fa fa-wrench"></span> Fix + </a> + <a href="javascript:void(0);" class="right btn btn-primary" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="backup"> + <span class="fa fa-floppy-o"></span> Backup + </a> + <a href="javascript:void(0);" class="right btn btn-primary" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="update"> + <span class="fa fa-refresh"></span> Update + </a> + <?php endif; ?> + </p> + + <div class="archives"> + <h2>Archives</h2> + <?php if (!empty($instance->getArchives())): ?> <ul> - <li style="display:none"></li> - <?php foreach( $instance->getExtraBackups() as $path ): ?> - <li><?php echo html( $path ) ?></li> + <?php foreach( $instance->getArchives() as $filename ): ?> + <li><?php echo html( $filename ) ?></li> <?php endforeach; ?> </ul> - </td> - </tr> - </table> - <p><a href="<?php echo html( url( "edit/{$instance->id}" ) ) ?>">Edit</a></p> - <p><a href="<?php echo html( url( '' ) ) ?>"><<< Back to List</a> - <h2>Archives</h2> - <ul> - <?php foreach( $instance->getArchives() as $filename ): ?> - <li><?php echo html( $filename ) ?></li> - <?php endforeach; ?> - </ul> -</body> -</html> + <?php else: ?> + <h3>Archive list is empty.</h3> + <?php endif; ?> + </div> + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Added: trim/www/include/watch.php =================================================================== --- trim/www/include/watch.php (rev 0) +++ trim/www/include/watch.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,41 @@ +<?php $page_title = 'Watching an instance'; ?> +<?php require "include/layout/head.php"; ?> +<?php require "include/layout/nav.php"; ?> + +<div class="container"> + <div class="trim-instance-list center"> + <h1><?php echo TITLE; ?></h1> + <h2><?php echo $page_title; ?></h2> + + <?php if (!empty(Instance::getInstances())): ?> + <ul class="clearfix"> + <?php foreach( Instance::getInstances() as $instance ): ?> + <?php if ($instance->getApplication() instanceof Application_Tiki): ?> + <?php $version = $instance->getLatestVersion() ?> + <li> + <a href="" title="Watch this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="watch"> + <?php echo html( $instance->name ) ?> <span> <?php echo html( "{$instance->app} ({$version->type}, {$version->branch})" ) ?></span> + </a> + <div class="buttons fa"> + <a href="" class="fa-eye" title="Watch this instance" data-toggle="modal" data-target="#trimModal" data-id="<?php echo html( "{$instance->id}" ) ?>" data-name="<?php echo html( "{$instance->name}" ) ?>" data-type="watch"></a> + </div> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php else: ?> + <h3>Instance list is empty.</h3> + <?php endif; ?> + + <p class="clearfix"> + <a href="<?php echo html( url( '' ) ) ?>" class="back btn btn-default"> + <span class="fa fa-angle-double-left"></span> + Back to list + </a> + </p> + + </div> +</div> + +<?php require "include/layout/modal.php"; ?> +<?php require "include/layout/footer.php"; ?> Modified: trim/www/index.php =================================================================== --- trim/www/index.php 2018-04-24 16:39:06 UTC (rev 66166) +++ trim/www/index.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -7,7 +7,7 @@ ob_start(); require $authFile; -require dirname(__FILE__) . '/../src/env_setup.php'; +require TRIMPATH . '/src/env_setup.php'; ob_end_clean(); if( RESTRICT && ( $_SERVER['HTTP_HOST'] != 'localhost' || $_SERVER['REMOTE_ADDR'] != '127.0.0.1' ) ) @@ -35,13 +35,17 @@ function url( $relative ) { - return PRIOR . $relative; + if (PRIOR == 'PRIOR') { + return $relative; + } else { + return PRIOR . $relative; + } } if( empty( $op ) ) $op = 'list'; -if( ! in_array( $op, array( 'list', 'view', 'edit', 'delete' ) ) ) +if( ! in_array( $op, array( 'backup', 'blank', 'clone', 'delete', 'edit', 'fix', 'import', 'list', 'manage', 'restore', 'update', 'view', 'watch', 'logout' ) ) ) die( "Unknown operation." ); if( in_array( $op, array( 'view', 'edit' ) ) && $id == 0 ) Added: trim/www/scripts/backup.php =================================================================== --- trim/www/scripts/backup.php (rev 0) +++ trim/www/scripts/backup.php 2018-04-24 22:57:42 UTC (rev 66167) @@ -0,0 +1,18 @@ +<?php +$authFile = dirname(__FILE__) . "/../config.php"; + +ob_start(); +require $authFile; +require TRIMPATH . '/src/env_setup.php'; +require TRIMPATH . '/src/clean.php'; +ob_end_clean(); + +if (isset($_P... [truncated message content] |
From: <po...@us...> - 2018-04-27 00:17:03
|
Revision: 66200 http://sourceforge.net/p/tikiwiki/code/66200 Author: pom2ter Date: 2018-04-27 00:17:00 +0000 (Fri, 27 Apr 2018) Log Message: ----------- [FIX] added dependencies via composer, cleanup webtrim vendor folder Modified Paths: -------------- trim/composer.json trim/composer.lock trim/scripts/enablewww.php trim/www/include/edit.php trim/www/include/layout/footer.php trim/www/include/layout/head.php Removed Paths: ------------- trim/www/vendor/ Modified: trim/composer.json =================================================================== --- trim/composer.json 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/composer.json 2018-04-27 00:17:00 UTC (rev 66200) @@ -6,7 +6,10 @@ "minimum-stability": "stable", "require": { "phpseclib/phpseclib": "^2.0", - "psy/psysh": "@stable" + "psy/psysh": "@stable", + "twitter/bootstrap": "^3.3.7", + "fortawesome/font-awesome": "^4.7.0", + "components/jquery": "^3.3.1" }, "config": { "process-timeout": 5000 Modified: trim/composer.lock =================================================================== --- trim/composer.lock 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/composer.lock 2018-04-27 00:17:00 UTC (rev 66200) @@ -4,9 +4,51 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "b2e94e6b7112da9ee497d91e283b9a21", + "content-hash": "f8505f66991faef329eef86057689e00", "packages": [ { + "name": "components/jquery", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/components/jquery.git", + "reference": "459648cda77875519c5da3ae1dd0ed5d170aa649" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/components/jquery/components-jquery-459648cda77875519c5da3ae1dd0ed5d170aa649-zip-6c897a.zip", + "reference": "459648cda77875519c5da3ae1dd0ed5d170aa649", + "shasum": "8781d6b6510fe5d019477ac1c6a6ba3a3b84e872" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "jquery.js" + ], + "files": [ + "jquery.min.js", + "jquery.min.map", + "jquery.slim.js", + "jquery.slim.min.js", + "jquery.slim.min.map" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "JS Foundation and other contributors" + } + ], + "description": "jQuery JavaScript Library", + "homepage": "http://jquery.com", + "time": "2018-03-04T13:23:48+00:00" + }, + { "name": "dnoegel/php-xdg-base-dir", "version": "0.1", "source": { @@ -40,6 +82,54 @@ "time": "2014-10-24T07:27:01+00:00" }, { + "name": "fortawesome/font-awesome", + "version": "v4.7.0", + "source": { + "type": "git", + "url": "https://github.com/FortAwesome/Font-Awesome.git", + "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/fortawesome/font-awesome/fortawesome-font-awesome-a8386aae19e200ddb0f6845b5feeee5eb7013687-zip-157f5b.zip", + "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687", + "shasum": "7a0d64122e32fa2c364dd60cf3380b4c8c13bd89" + }, + "require-dev": { + "jekyll": "1.0.2", + "lessc": "1.4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.6.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OFL-1.1", + "MIT" + ], + "authors": [ + { + "name": "Dave Gandy", + "email": "da...@fo...", + "homepage": "http://twitter.com/davegandy", + "role": "Developer" + } + ], + "description": "The iconic font and CSS framework", + "homepage": "http://fontawesome.io/", + "keywords": [ + "FontAwesome", + "awesome", + "bootstrap", + "font", + "icon" + ], + "time": "2016-10-24T15:52:54+00:00" + }, + { "name": "jakub-onderka/php-console-color", "version": "0.1", "source": { @@ -640,6 +730,57 @@ "dump" ], "time": "2018-01-29T09:03:43+00:00" + }, + { + "name": "twitter/bootstrap", + "version": "v3.3.7", + "source": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git", + "reference": "0b9c4a4007c44201dce9a6cc1a38407005c26c86" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/twitter/bootstrap/twitter-bootstrap-0b9c4a4007c44201dce9a6cc1a38407005c26c86-zip-d3d7dc.zip", + "reference": "0b9c4a4007c44201dce9a6cc1a38407005c26c86", + "shasum": "b92d9602040c64dcda409d677038e0f1527acd60" + }, + "replace": { + "twitter/bootstrap": "self.version" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jacob Thornton", + "email": "jac...@gm..." + }, + { + "name": "Mark Otto", + "email": "mar...@gm..." + } + ], + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "homepage": "http://getbootstrap.com", + "keywords": [ + "JS", + "css", + "framework", + "front-end", + "less", + "mobile-first", + "responsive", + "web" + ], + "time": "2016-07-25T15:51:55+00:00" } ], "packages-dev": [], Modified: trim/scripts/enablewww.php =================================================================== --- trim/scripts/enablewww.php 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/scripts/enablewww.php 2018-04-27 00:17:00 UTC (rev 66200) @@ -36,7 +36,7 @@ if ('confirm' != promptUser('Type \'confirm\' to continue', '')) exit(1); $webTrimDirectory = promptUser('WWW Trim directory (ex: /var/www/virtual/webtrim.example.com/html)'); -$cmd = 'cp -a www/. ' . $webTrimDirectory; +$cmd = 'cp -a www/. ' . $webTrimDirectory . '; cp -aR vendor ' . $webTrimDirectory; exec($cmd); $pass = ''; Modified: trim/www/include/edit.php =================================================================== --- trim/www/include/edit.php 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/www/include/edit.php 2018-04-27 00:17:00 UTC (rev 66200) @@ -17,7 +17,7 @@ $locations = array_map( 'trim', $locations ); $instance->setExtraBackups( $locations ); - header( "Location: " . url( "list" ) ); + header( "Location: " . html( url( "view/{$instance->id}" ) ) ); exit; } Modified: trim/www/include/layout/footer.php =================================================================== --- trim/www/include/layout/footer.php 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/www/include/layout/footer.php 2018-04-27 00:17:00 UTC (rev 66200) @@ -4,8 +4,8 @@ </div> </footer> - <script src="/vendor/jquery/jquery-3.1.1.min.js"></script> - <script src="/vendor/bootstrap/js/bootstrap.min.js"></script> + <script src="/vendor/components/jquery/jquery.min.js"></script> + <script src="/vendor/twitter/bootstrap/dist/js/bootstrap.min.js"></script> <script src="/themes/trim.js"></script> </body> </html> Modified: trim/www/include/layout/head.php =================================================================== --- trim/www/include/layout/head.php 2018-04-26 23:27:41 UTC (rev 66199) +++ trim/www/include/layout/head.php 2018-04-27 00:17:00 UTC (rev 66200) @@ -5,8 +5,8 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title><?php echo TITLE; ?> : <?php echo $page_title; ?></title> - <link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> - <link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet"> + <link href="/vendor/twitter/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> + <link href="/vendor/fortawesome/font-awesome/css/font-awesome.min.css" rel="stylesheet"> <link href="/themes/<?php echo THEME; ?>/css/<?php echo THEME; ?>.css" rel="stylesheet"> </head> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-15 09:22:47
|
Revision: 66371 http://sourceforge.net/p/tikiwiki/code/66371 Author: montefuscolo Date: 2018-05-15 09:22:45 +0000 (Tue, 15 May 2018) Log Message: ----------- [NEW] Changes to make TRIM available on Windows, author: Robert Pouliot Modified Paths: -------------- trim/scripts/addinstance.php trim/src/accesslib.php trim/src/env_setup.php trim/src/rclib.php Added Paths: ----------- trim/make.cm Added: trim/make.cm =================================================================== --- trim/make.cm (rev 0) +++ trim/make.cm 2018-05-15 09:22:45 UTC (rev 66371) @@ -0,0 +1,155 @@ +@echo off +rem Change paths to executables here + +set PHP=php -d memory_limit=256M +set SQLITE=sqlite3 +setlocal enableextensions +for /f "tokens=*" %%a in ( +'%SQLITE% --version' +) do ( +set SQLITE_VERSION=%%a +) + +set PARM=%1 +shift +if "%PARM%"=="" goto :help +goto :%PARM% + +# No changes should be required from here +:default +:help + echo Valid options are: + echo access, backup, blank, clean, check, cli, clone, cloneandupgrade, + echo convert, copysshkey, delete, detect, editinstance, enablewww, + echo fix, instance, profile, report, restore, update, upgrade, + echo verify, viewdb, watch + goto :eof + +# Use this to add a remote installation +:instance + %PHP% scripts/addinstance.php %* + goto :eof + +:editinstance + %PHP% scripts/editinstance.php %* + goto :eof + +:blank + %PHP% scripts/addinstance.php blank %* + goto :eof + +:viewdb +if "%SQLITE_VERSION%"=="" ( + echo Error: %SQLITE% is not available, please install and try again. + exit +) + %SQLITE% data\trim.db + goto :eof + +:check + %PHP% scripts/check.php %* + goto :eof + +:verify + %PHP% scripts/check.php %* + goto :eof + +:watch + %PHP% scripts/setupwatch.php %* + goto :eof + +# Use this to update version within the same branch, no major versions changes +:update + %PHP% scripts/update.php %* + goto :eof + +# Use this to update major releases +:upgrade + %PHP% scripts/update.php switch + goto :eof + +:convert + %PHP% scripts/tiki/convert.php %* + goto :eof + +:access + %PHP% scripts/access.php %* + goto :eof + +:backup + %PHP% scripts/backup.php %* + goto :eof + +:restore + %PHP% scripts/restore.php %* + goto :eof + +:fix + %PHP% scripts/tiki/fixperms.php %* + goto :eof + +:cli + %PHP% scripts/tiki/cli.php %* + goto :eof + +:detect + %PHP% scripts/detect.php %* + goto :eof + +:enablewww + %PHP% scripts/enablewww.php %* + goto :eof + +:delete + %PHP% scripts/delete.php %* + goto :eof + +:profile + %PHP% scripts/tiki/profile.php %* + goto :eof + +:report + %PHP% scripts/tiki/report.php %* + goto :eof + +:copysshkey + %PHP% scripts/copysshkey.php %* + goto :eof + +:clone + %PHP% scripts/clone.php clone %* + goto :eof + +:cloneandupgrade + %PHP% scripts/clone.php upgrade %* + goto :eof + +:clean + @echo WARNING! + @echo You are about to delete all state, backup, cache, and log files! + set /p ANSWR=Are you sure? + if /i %ANSWR%==yes ( + echo Erasing + del /s /q cache\*.* backup\*.* logs\*.* data\trim.db + ) else ( + echo Not erasing. + ) + goto :eof + +:clean-files + @echo WARNING! + @echo You are about to delete backup, cache, and log files! + set /p ANSWR=Are you sure? + if /i %ANSWR%==yes ( + echo Erasing + del /s /q cache\*.* backup\*.* logs\*.* + ) else ( + echo Not erasing. + ) + goto :eof + +:shell + %PHP% -d date.timezone=UTC ./vendor/bin/psysh src/psysh_conf.php + goto :eof + +:eof \ No newline at end of file Modified: trim/scripts/addinstance.php =================================================================== --- trim/scripts/addinstance.php 2018-05-15 04:43:46 UTC (rev 66370) +++ trim/scripts/addinstance.php 2018-05-15 09:22:45 UTC (rev 66371) @@ -78,6 +78,15 @@ die(color("Subversion not detected on the remote server\n", 'red')); } +if (! $instance->detectPHP()) { + die(color("PHP Interpreter could not be found on remote host.\n", 'red')); +} +else { + if ($instance->phpversion < 50300) { + die(color("PHP Interpreter version is less than 5.3.\n", 'red')); + } +} + $d_linux = $instance->detectDistribution(); info("You are running : $d_linux"); @@ -90,6 +99,11 @@ $d_webroot = ($user == 'root' || $user == 'apache') ? "/var/www/virtual/{$host}/html/" : "/home/$user/public_html/"; break; +case "Windows": + $backup_user = $backup_group = "Administrator"; + $backup_perm = 02750; + $d_webroot = 'D:\\www\\'; + break; default: $backup_user = @posix_getpwuid(posix_geteuid())['name']; $backup_group = @posix_getgrgid(posix_getegid())['name']; @@ -104,9 +118,10 @@ } $tempdir = promptUser('Working directory', TRIM_TEMP); -if ($access instanceof ShellPrompt) - $access->shellExec("mkdir -p $tempdir"); -else +if ($access instanceof ShellPrompt) { + if(!is_dir($tempdir)) + mkdir($tempdir, 0777, true); +} else echo die(color("Shell access is required to create the working directory. You will need to create it manually.\n", 'yellow')); $backup_user = promptUser('Backup owner', $backup_user); @@ -121,15 +136,6 @@ $instance->backup_group = trim($backup_group); $instance->backup_perm = octdec($backup_perm); -if (! $instance->detectPHP()) { - die(color("PHP Interpreter could not be found on remote host.\n", 'red')); -} -else { - if ($instance->phpversion < 50300) { - die(color("PHP Interpreter version is less than 5.3.\n", 'red')); - } -} - $instance->save(); echo color("Instance information saved.\n", 'green'); Modified: trim/src/accesslib.php =================================================================== --- trim/src/accesslib.php 2018-05-15 04:43:46 UTC (rev 66370) +++ trim/src/accesslib.php 2018-05-15 09:22:45 UTC (rev 66371) @@ -157,6 +157,15 @@ parent::__construct($instance, 'local'); } + private function isLocalPath($pathname) { + if($pathname{0} == '/') return true; + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && preg_match("|^[a-zA-Z]:[/\\\\]|", $pathname)) + return true; + + return false; + } + private function getHost() { static $changeLocation = null; @@ -170,18 +179,25 @@ // php interpreter version is used to execute commands, if the dir is not available // try the parent directory if ($changeLocation === null && !empty($this->instance->webroot)) { - $output = $host->runCommands(['cd ' . $this->instance->webroot . ' && echo EXISTS']); - if ($output == "EXISTS") { - $changeLocation = $this->instance->webroot; + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + if(chdir($this->instance->webroot)) + $changeLocation = $this->instance->webroot; + else if(chdir(dirname($this->instance->webroot))) + $changeLocation = dirname($this->instance->webroot); } else { - $output = $host->runCommands(['cd ' . dirname($this->instance->webroot) . ' && echo EXISTS']); + $output = $host->runCommands(['cd ' . $this->instance->webroot . ' && echo EXISTS']); if ($output == "EXISTS") { - $changeLocation = dirname($this->instance->webroot); + $changeLocation = $this->instance->webroot; + } else { + $output = $host->runCommands(['cd ' . dirname($this->instance->webroot) . ' && echo EXISTS']); + if ($output == "EXISTS") { + $changeLocation = dirname($this->instance->webroot); + } } + if ($changeLocation === null) { + $changeLocation = false; + } } - if ($changeLocation === null) { - $changeLocation = false; - } } if ($changeLocation) { $host->chdir($changeLocation); @@ -199,13 +215,21 @@ { $host = $this->getHost(); - $attempts = array( - 'command -v php 2>/dev/null', - "command php -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", - "command php7 -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", - "command php5 -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", - "which php4" - ); + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $attempts = array( + "where php.exe", + "where php5.exe", + "where php7.exe" + ); + } else { + $attempts = array( + 'command -v php 2>/dev/null', + "command php -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", + "command php7 -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", + "command php5 -r \"defined('PHP_BINARY') && print(PHP_BINARY);\"", + "which php4" + ); + } // Get possible paths $phps = $host->runCommands($attempts); @@ -253,9 +277,17 @@ { $host = $this->getHost(); - $sets = array( - array('which svn'), - ); + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $svn_name='svn.exe'; + $sets = array( + array('where svn'), + ); + } else { + $svn_name='svn'; + $sets = array( + array('which svn'), + ); + } foreach ($sets as $attempt) { // Get possible paths @@ -265,11 +297,11 @@ // Check different versions $valid = array(); foreach ($svns as $interpreter) { - if (! in_array(basename($interpreter), array('svn'))) + if (! in_array(basename($interpreter), array($svn_name))) continue; if (strpos($interpreter, ' ') !== false) { - $interpreter = "'" . trim($interpreter) . "'"; // wrap command if contains spaces + $interpreter = '"' . trim($interpreter) . '"'; // wrap command if contains spaces } $versionInfo = $host->runCommands("$interpreter --version"); @@ -307,15 +339,18 @@ function getInterpreterVersion($interpreter) // {{{ { $host = $this->getHost(); - $versionInfo = $host->runCommands("$interpreter -r 'echo PHP_VERSION_ID;'"); + $versionInfo = $host->runCommands("$interpreter -r \"echo PHP_VERSION_ID;\""); return $versionInfo; } // }}} function getDistributionName($interpreter){ // {{{ + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') + return "Windows"; + $host = $this->getHost(); $command = file_get_contents( sprintf('%s/getlinuxdistro.php', dirname(__FILE__))); - $linuxName = $host->runCommands("$interpreter -r '$command'"); + $linuxName = $host->runCommands("$interpreter -r \"$command\""); return $linuxName; } // }}} @@ -322,35 +357,20 @@ function fileExists($filename) // {{{ { - if ($filename{0} != '/') + if (!$this->isLocalPath($filename)) $filename = $this->instance->getWebPath($filename); - $eFile = escapeshellarg($filename); - $output = $this->shellExec("ls $eFile"); - - return ! empty($output); + return file_exists($filename); } // }}} function fileGetContents($filename) // {{{ { - $host = $this->getHost(); - - $filename = escapeshellarg($filename); - return $host->runCommands("cat $filename"); + return file_get_contents($filename); } // }}} function fileModificationDate($filename) // {{{ { - $host = $this->getHost(); - - $root = escapeshellarg($filename); - - $data = $host->runCommands("ls -l $root"); - - if (preg_match("/\d{4}-\d{2}-\d{2}/", $data, $matches)) - return $matches[0]; - else - return null; + return date("Y-m-d", filemtime($filename)); } // }}} function runPHP($localFile, $args = array()) // {{{ @@ -363,7 +383,7 @@ $host->sendFile($localFile, $remoteFile); $arg = implode(' ', array_map('escapeshellarg', $args)); $output = $host->runCommands("{$this->instance->phpexec} -d memory_limit=256M {$remoteFile} {$arg}"); - $host->runCommands("rm -v {$remoteFile}"); + unlink($remoteFile); return $output; } // }}} @@ -370,7 +390,7 @@ function downloadFile($filename) // {{{ { - if ($filename{0} != '/') + if (!$this->isLocalPath($filename)) $filename = $this->instance->getWebPath($filename); $dot = strrpos($filename, '.'); @@ -390,7 +410,7 @@ function uploadFile($filename, $remoteLocation) // {{{ { $host = $this->getHost(); - if ($remoteLocation{0} == '/') + if ($this->isLocalPath($remoteLocation)) $host->sendFile($filename, $remoteLocation); else $host->sendFile($filename, $this->instance->getWebPath($remoteLocation)); @@ -401,23 +421,17 @@ if ($filename{0} != '/') $filename = $this->instance->getWebPath($filename); - $path = escapeshellarg($filename); - - $host = $this->getHost(); - $host->runCommands("rm -v $path"); + unlink($filename); } // }}} function moveFile($remoteSource, $remoteTarget) // {{{ { - if ($remoteSource{0} != '/') + if (!$this->isLocalPath($remoteSource)) $remoteSource = $this->instance->getWebPath($remoteSource); - if ($remoteTarget{0} != '/') + if (!$this->isLocalPath($remoteTarget)) $remoteTarget = $this->instance->getWebPath($remoteTarget); - $a = escapeshellarg($remoteSource); - $b = escapeshellarg($remoteTarget); - - $this->shellExec("mv -v $a $b"); + rename($remoteSource, $remoteTarget); } // }}} function chdir($location) // {{{ @@ -453,7 +467,11 @@ function hasExecutable($command) // {{{ { $command = escapeshellcmd($command); - $exists = $this->shellExec("which $command"); + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $exists = $this->shellExec("where $command"); + } else { + $exists = $this->shellExec("which $command"); + } return ! empty($exists); } // }}} @@ -526,6 +544,7 @@ return true; } // }}} +// FIXME: Expect all remote to be Unix-like machines function getInterpreterPath($instance2 = null) // {{{ { $host = $this->getHost(); @@ -533,6 +552,7 @@ $sets = array( array('which php', 'which php5', 'which php4'), ); + $php_name = array('php', 'php5'); foreach ($sets as $attempt) { @@ -583,8 +603,9 @@ $host = $this->getHost(); $sets = array( - array('which svn'), + array('which svn'), ); + $svn_name='svn'; foreach ($sets as $attempt) { // Get possible paths @@ -594,7 +615,7 @@ // Check different versions $valid = array(); foreach ($svns as $interpreter) { - if (! in_array(basename($interpreter), array('svn'))) + if (! in_array(basename($interpreter), array($svn_name))) continue; $versionInfo = $host->runCommands("$interpreter --version"); @@ -650,10 +671,7 @@ if ($filename{0} != '/') $filename = $this->instance->getWebPath($filename); - $eFile = escapeshellarg($filename); - $output = $this->shellExec("ls $eFile"); - - return ! empty($output); + return file_exists($filename); } // }}} function fileGetContents($filename) // {{{ @@ -715,7 +733,7 @@ function uploadFile( $filename, $remoteLocation ) // {{{ { $host = $this->getHost(); - if ($remoteLocation{0} == '/') + if ($remoteLocation{0} == '/' || strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $host->sendFile($filename, $remoteLocation); else $host->sendFile($filename, $this->instance->getWebPath($remoteLocation)); @@ -723,7 +741,7 @@ function deleteFile($filename) // {{{ { - if ($filename{0} != '/') + if ($filename{0} != '/' || strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $filename = $this->instance->getWebPath($filename); $path = escapeshellarg($filename); @@ -734,9 +752,9 @@ function moveFile($remoteSource, $remoteTarget) // {{{ { - if ($remoteSource{0} != '/') + if ($remoteSource{0} != '/' && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') $remoteSource = $this->instance->getWebPath($remoteSource); - if ($remoteTarget{0} != '/' ) + if ($remoteTarget{0} != '/' && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') $remoteTarget = $this->instance->getWebPath($remoteTarget); $a = escapeshellarg($remoteSource); Modified: trim/src/env_setup.php =================================================================== --- trim/src/env_setup.php 2018-05-15 04:43:46 UTC (rev 66370) +++ trim/src/env_setup.php 2018-05-15 09:22:45 UTC (rev 66371) @@ -7,12 +7,17 @@ define('TRIM_DEBUG', getenv('TRIM_DEBUG') === 'true'); -define('INTERACTIVE', - php_sapi_name() === 'cli' - && getenv('NONINTERACTIVE') !== 'true' - && !in_array(getenv('TERM'), array('dumb', false, '')) - && preg_match(',^/dev/,', exec('tty')) -); +if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + define('INTERACTIVE', php_sapi_name() === 'cli' + && getenv('NONINTERACTIVE') !== 'true'); +} else { + define('INTERACTIVE', + php_sapi_name() === 'cli' + && getenv('NONINTERACTIVE') !== 'true' + && !in_array(getenv('TERM'), array('dumb', false, '')) + && preg_match(',^/dev/,', exec('tty')) + ); +} if (! function_exists('readline')) { function readline($prompt) @@ -26,6 +31,9 @@ function color($string, $color) { +// if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') +// return; + $avail = array( 'red' => 31, 'green' => 32, @@ -202,8 +210,12 @@ define('BACKUP_FOLDER', "$root/backup"); define('ARCHIVE_FOLDER', "$root/backup/archive"); define('TRIM_OUTPUT', "$root/logs/trim.output"); -define('TRIM_TEMP', '/tmp/trim_temp'); +if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') + define('TRIM_TEMP', getenv('TEMP')."\\trim_temp"); +else + define('TRIM_TEMP', '/tmp/trim_temp'); + if (file_exists(getenv('HOME') . '/.ssh/id_rsa') && file_exists(getenv('HOME') . '/.ssh/id_rsa.pub')) { @@ -267,8 +279,14 @@ die(error("The SQLite PHP extension is not available. Install to continue.")); // Check for required system dependencies -$ssh = `export PATH; which ssh`; -$kg = `export PATH; which ssh-keygen`; +if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $ssh = 'where ssh'; + $kg = 'where ssh-keygen'; +} else { + $ssh = `export PATH; which ssh`; + $kg = `export PATH; which ssh-keygen`; +} + if (empty($ssh) || empty($kg)) { die(error("SSH tools not installed on current machine. " . "Make sure 'ssh' and 'ssh-keygen' and are installed.\n")); @@ -579,7 +597,11 @@ function php() // {{{ { - $paths = `whereis php 2>> logs/trim.output`; + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') + $paths = `where php`; + else + $paths = `whereis php 2>> logs/trim.output`; $phps = explode(' ', $paths); // Check different versions Modified: trim/src/rclib.php =================================================================== --- trim/src/rclib.php 2018-05-15 04:43:46 UTC (rev 66370) +++ trim/src/rclib.php 2018-05-15 09:22:45 UTC (rev 66371) @@ -60,7 +60,8 @@ private function getRepositoryInfo($instance, $access) { - $remoteText = $access->shellExec('svn info ' . escapeshellarg($instance->webroot), 'sleep 1'); + $remoteText = $access->shellExec('svn info ' . escapeshellarg($instance->webroot)); + sleep(1); if (empty($remoteText)) return array(); $info = array(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-15 14:00:49
|
Revision: 66382 http://sourceforge.net/p/tikiwiki/code/66382 Author: montefuscolo Date: 2018-05-15 14:00:47 +0000 (Tue, 15 May 2018) Log Message: ----------- [FIX] Add maintenance page on Tiki while cloning Modified Paths: -------------- trim/scripts/clone.php trim/src/instancelib.php Modified: trim/scripts/clone.php =================================================================== --- trim/scripts/clone.php 2018-05-15 14:00:43 UTC (rev 66381) +++ trim/scripts/clone.php 2018-05-15 14:00:47 UTC (rev 66382) @@ -119,6 +119,7 @@ foreach ($dst_selection as $dst_instance) { info("Initiating clone of {$src_selection[0]->name} to {$dst_instance->name}"); + $dst_instance->lock(); $dst_instance->restore($src_selection[0]->app, $archive, true); if (ARG_MODE_CLONE_UPGRADE) { @@ -126,6 +127,7 @@ $app = $dst_instance->getApplication(); $app->performUpgrade($dst_instance, $upgrade_version, false); } + $dst_instance->unlock(); } exit(0); Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-15 14:00:43 UTC (rev 66381) +++ trim/src/instancelib.php 2018-05-15 14:00:47 UTC (rev 66382) @@ -231,6 +231,7 @@ public $app; private $access = array(); + private $locked = false; function getId() // {{{ { @@ -698,6 +699,7 @@ function restore($src_app, $archive, $clone = false) { + $hooks = TRIM_Hooks::getInstance(); info(sprintf("Uploading : %s", basename($archive))); $base = basename($archive); @@ -738,14 +740,28 @@ $dst_path = ($type == 'app') ? $location : $src_path; info(sprintf('Copying %s files (%s -> %s)...', $type, $src_path, $dst_path)); + $syncpaths = (object) array( + 'from' => escapeshellarg($this->getWorkPath("restore/{$basetardir}/$hash/$src_base")), + 'to' => escapeshellarg(rtrim($dst_path, '/')) + ); + $out = $access->shellExec( - sprintf('mkdir -p %s', - escapeshellarg(rtrim($dst_path, '/'))), - sprintf('rsync -a %s %s --exclude db/local.php --delete', - escapeshellarg($this->getWorkPath("restore/{$basetardir}/$hash/$src_base/")), - escapeshellarg(rtrim($dst_path, '/') . '/')) + sprintf('mkdir -p %s', $syncpaths->to), + sprintf('rsync -a %s %s --exclude .htaccess --exclude db/local.php --delete', + "{$syncpaths->from}/", + "{$syncpaths->to}/" + ) ); + $hooks->add_action('instance_unlock', function($instance) use ($access, $syncpaths) { + $access->shellExec( + sprintf('rsync -v %s %s', + "{$syncpaths->from}/.htaccess", + "{$syncpaths->to}/.htaccess" + ) + ); + }); + trim_output("REMOTE $out"); } @@ -766,17 +782,16 @@ info('Cleaning up...'); - echo $access->shellExec( - "rm -Rf {$this->tempdir}/restore" - ); - perform_instance_installation($this); - info("Fixing permissions for {$this->name}"); - $this->getApplication()->fixPermissions(); + $version->collectChecksumFromInstance($this); - $version->collectChecksumFromInstance($this); + $hooks->add_action('instance_unlock', function($instance) use ($access) { + echo $access->shellExec( + "rm -Rf {$instance->tempdir}/restore" + ); + }); } // }}} function getExtraBackups() // {{{ @@ -804,24 +819,31 @@ return array_reverse(glob(ARCHIVE_FOLDER . "/{$this->id}-*/{$this->id}*_*.tar.bz2")); } // }}} + function isLocked() { // {{{ + return $this->locked; + } // }}} + function lock() // {{{ { + $hooks = TRIM_Hooks::getInstance(); info('Locking website...'); $access = $this->getBestAccess('scripting'); - if (! $access->fileExists($this->getWebPath('maintenance.php'))) - $access->uploadFile(dirname(__FILE__) . '/../scripts/maintenance.php', 'maintenance.php'); + $access->uploadFile(TRIM_ROOT . '/scripts/maintenance.php', 'maintenance.php'); if ($access->fileExists($this->getWebPath('.htaccess'))) $access->moveFile('.htaccess', '.htaccess.bak'); - $access->uploadFile(dirname(__FILE__) . '/../scripts/maintenance.htaccess', '.htaccess'); + $access->uploadFile(TRIM_ROOT . '/scripts/maintenance.htaccess', '.htaccess'); - return true; + $this->locked = true; + $hooks->run_actions('instance_lock', $this); + return $this->locked; } // }}} function unlock() // {{{ { + $hooks = TRIM_Hooks::getInstance(); info('Unlocking website...'); $access = $this->getBestAccess('scripting'); @@ -829,6 +851,9 @@ if ($access->fileExists('.htaccess.bak')) $access->moveFile('.htaccess.bak', '.htaccess'); + + $this->locked = false; + $hooks->run_actions('instance_unlock', $this); } // }}} function __get($name) // {{{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-17 21:29:15
|
Revision: 66423 http://sourceforge.net/p/tikiwiki/code/66423 Author: montefuscolo Date: 2018-05-17 21:29:13 +0000 (Thu, 17 May 2018) Log Message: ----------- [FIX] Remove CVS and temporary files from checksum calcs Modified Paths: -------------- trim/scripts/generate_md5_list.php trim/src/instancelib.php Modified: trim/scripts/generate_md5_list.php =================================================================== --- trim/scripts/generate_md5_list.php 2018-05-17 21:29:08 UTC (rev 66422) +++ trim/scripts/generate_md5_list.php 2018-05-17 21:29:13 UTC (rev 66423) @@ -17,9 +17,17 @@ chdir($next); $diriterator = new RecursiveDirectoryIterator('.'); -$objiterator = new RecursiveIteratorIterator($diriterator, RecursiveIteratorIterator::SELF_FIRST); +$objiterator = new RecursiveIteratorIterator( + $diriterator, + RecursiveIteratorIterator::SELF_FIRST +); +$ignore_pattern = '#^\./(\.git|\.svn|\.temp)/#'; foreach($objiterator as $name => $object) { + if (preg_match($ignore_pattern, $name)) { + continue; + } + if ($object->getType() === 'file' && is_readable($name)) { printf("%s:%s\n", md5_file($name), $name); } Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-17 21:29:08 UTC (rev 66422) +++ trim/src/instancelib.php 2018-05-17 21:29:13 UTC (rev 66423) @@ -992,7 +992,7 @@ $access = $instance->getBestAccess('scripting'); $output = $access->runPHP( - dirname(__FILE__) . '/../scripts/generate_md5_list.php', + TIKI_ROOT . '/scripts/generate_md5_list.php', array($instance->webroot) ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-19 15:45:59
|
Revision: 66436 http://sourceforge.net/p/tikiwiki/code/66436 Author: montefuscolo Date: 2018-05-19 15:45:57 +0000 (Sat, 19 May 2018) Log Message: ----------- [REF] Small revamp on Checksum stuff Modified Paths: -------------- trim/scripts/generate_md5_list.php trim/src/instancelib.php trim/src/libs/audit/Checksum.php Modified: trim/scripts/generate_md5_list.php =================================================================== --- trim/scripts/generate_md5_list.php 2018-05-19 15:45:49 UTC (rev 66435) +++ trim/scripts/generate_md5_list.php 2018-05-19 15:45:57 UTC (rev 66436) @@ -4,34 +4,53 @@ // All Rights Reserved. See copyright.txt for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. -$cur = getcwd(); +if(!function_exists('calculate_forder_checksum')) { + function calculate_folder_checksum($folder, $callback=null) + { + $result = array(); -if (array_key_exists('REQUEST_METHOD', $_SERVER)) - $next = $_GET[1]; -elseif (isset($folder)) - $next = $folder; -elseif (count($_SERVER['argv']) > 1) - $next = $_SERVER['argv'][1]; + if(!is_callable($callback)) { + $callback = function($hash, $filename) use (&$result) { + return array($hash, $filename); + }; + } -if (file_exists($next)) - chdir($next); + $diriterator = new RecursiveDirectoryIterator($folder); + $objiterator = new RecursiveIteratorIterator( + $diriterator, + RecursiveIteratorIterator::SELF_FIRST + ); -$diriterator = new RecursiveDirectoryIterator('.'); -$objiterator = new RecursiveIteratorIterator( - $diriterator, - RecursiveIteratorIterator::SELF_FIRST -); + $ignore_pattern = '#(^\./temp|/\.git|/\.svn)/#'; + foreach($objiterator as $name => $object) { + if (preg_match($ignore_pattern, $name)) { + continue; + } -$ignore_pattern = '#(^\./temp|/\.git|/\.svn)/#'; -foreach($objiterator as $name => $object) { - if (preg_match($ignore_pattern, $name)) { - continue; + if ($object->getType() === 'file' && is_readable($name)) { + $callback(md5_file($name), $name); + } + } + return $result; } +} - if ($object->getType() === 'file' && is_readable($name)) { - printf("%s:%s\n", md5_file($name), $name); - } +if ( realpath($_SERVER['SCRIPT_FILENAME']) === realpath(__FILE__)) { + call_user_func(function () { + $cur = getcwd(); + if (array_key_exists('REQUEST_METHOD', $_SERVER)) + $next = $_GET[1]; + + elseif (count($_SERVER['argv']) > 1) + $next = $_SERVER['argv'][1]; + + if (isset($next) && file_exists($next)) + chdir($next); + + $callback = function($md5, $filename){ printf("%s:%s\n", $md5, $filename); }; + calculate_folder_checksum('.', $callback); + chdir($cur); + }); } -chdir($cur); // vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-19 15:45:49 UTC (rev 66435) +++ trim/src/instancelib.php 2018-05-19 15:45:57 UTC (rev 66436) @@ -6,18 +6,22 @@ define('SQL_SELECT_INSTANCE', " SELECT - instance_id id, name, contact, webroot, weburl, tempdir, phpexec, app + i.instance_id id, i.name, i.contact, i.webroot, i.weburl, i.tempdir, i.phpexec, i.app, a.type FROM - instance + instance i +INNER JOIN access a + ON i.instance_id=a.instance_id ;"); define('SQL_SELECT_INSTANCE_BY_ID', " SELECT - instance_id id, name, contact, webroot, weburl, tempdir, phpexec, app + i.instance_id id, i.name, i.contact, i.webroot, i.weburl, i.tempdir, i.phpexec, i.app, a.type FROM - instance + instance i +INNER JOIN access a + ON i.instance_id=a.instance_id WHERE - instance_id = :id + i.instance_id = :id ;"); define('SQL_SELECT_UPDATABLE_INSTANCE', " @@ -229,6 +233,7 @@ public $phpexec; public $phpversion; public $app; + public $type; private $access = array(); Modified: trim/src/libs/audit/Checksum.php =================================================================== --- trim/src/libs/audit/Checksum.php 2018-05-19 15:45:49 UTC (rev 66435) +++ trim/src/libs/audit/Checksum.php 2018-05-19 15:45:57 UTC (rev 66436) @@ -60,6 +60,8 @@ instance_id = :id );"; + const CHECKSUM_SCRIPT = TRIM_ROOT . '/scripts/generate_md5_list.php'; + private $instance; private $access; @@ -102,19 +104,37 @@ return $map; } - public function checksumFolder($folder) { + public function checksumLocalFolder($folder) { + require_once(self::CHECKSUM_SCRIPT); + $current = getcwd(); + chdir($folder); + $result = calculate_folder_checksum('.'); + chdir($current); + return $result; + } + + public function checksumRemoteFolder($folder) { $access = $this->getAccess(); - return $access->runPHP( - TRIM_ROOT . '/scripts/generate_md5_list.php', - array($folder) - ); + $result = $access->runPHP(self::CHECKSUM_SCRIPT, array($folder)); + $result = explode("\n", $result); + $result = array_map(function($line){ + return explode(':', $line); + }, $result); + + return $result; } public function checksumInstance() { $webroot = $this->instance->webroot; - $result = $this->checksumFolder($webroot); + + if($this->instance === 'local') { + $result = $this->checksumLocalFolder($webroot); + } else { + $result = $this->checksumRemoteFolder($webroot); + } + return $result; } @@ -123,13 +143,8 @@ $app = $this->getApp(); $folder = cache_folder($app, $version); $app->extractTo($version, $folder); - - ob_start(); - include TRIM_ROOT . '/scripts/generate_md5_list.php'; - $content = ob_get_contents(); - ob_end_clean(); - - return $content; + $result = $this->checksumLocalFolder($folder); + return $result; } public function addFile($version_id, $hash, $filename) @@ -164,8 +179,8 @@ $known = $this->getChecksums($version_id); $current = $this->checksumInstance(); - foreach (explode("\n", $current) as $line) { - list($hash, $filename) = explode(':', $line); + foreach ($current as $line) { + list($hash, $filename) = $line; if (! isset($known[$filename])) $newFiles[$filename] = $hash; @@ -187,15 +202,12 @@ ); } - public function saveChecksums($version_id, $input) + public function saveChecksums($version_id, $entries) { query('BEGIN TRANSACTION'); - $entries = explode("\n", $input); - foreach ($entries as $line) { - $parts = explode(':', $line); + foreach ($entries as $parts) { if (count($parts) != 2) continue; - list($hash, $file) = $parts; $this->addFile($version_id, $hash, $file); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-19 22:21:31
|
Revision: 66437 http://sourceforge.net/p/tikiwiki/code/66437 Author: montefuscolo Date: 2018-05-19 22:21:29 +0000 (Sat, 19 May 2018) Log Message: ----------- [REF] Move checksum script to Checksum class Modified Paths: -------------- trim/src/instancelib.php trim/src/libs/audit/Checksum.php Removed Paths: ------------- trim/scripts/generate_md5_list.php Deleted: trim/scripts/generate_md5_list.php =================================================================== --- trim/scripts/generate_md5_list.php 2018-05-19 15:45:57 UTC (rev 66436) +++ trim/scripts/generate_md5_list.php 2018-05-19 22:21:29 UTC (rev 66437) @@ -1,56 +0,0 @@ -<?php -// Copyright (c) 2016, Avan.Tech, et. al. -// Copyright (c) 2008, Luis Argerich, Garland Foster, Eduardo Polidor, et. al. -// All Rights Reserved. See copyright.txt for details and a complete list of authors. -// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. - -if(!function_exists('calculate_forder_checksum')) { - function calculate_folder_checksum($folder, $callback=null) - { - $result = array(); - - if(!is_callable($callback)) { - $callback = function($hash, $filename) use (&$result) { - return array($hash, $filename); - }; - } - - $diriterator = new RecursiveDirectoryIterator($folder); - $objiterator = new RecursiveIteratorIterator( - $diriterator, - RecursiveIteratorIterator::SELF_FIRST - ); - - $ignore_pattern = '#(^\./temp|/\.git|/\.svn)/#'; - foreach($objiterator as $name => $object) { - if (preg_match($ignore_pattern, $name)) { - continue; - } - - if ($object->getType() === 'file' && is_readable($name)) { - $callback(md5_file($name), $name); - } - } - return $result; - } -} - -if ( realpath($_SERVER['SCRIPT_FILENAME']) === realpath(__FILE__)) { - call_user_func(function () { - $cur = getcwd(); - if (array_key_exists('REQUEST_METHOD', $_SERVER)) - $next = $_GET[1]; - - elseif (count($_SERVER['argv']) > 1) - $next = $_SERVER['argv'][1]; - - if (isset($next) && file_exists($next)) - chdir($next); - - $callback = function($md5, $filename){ printf("%s:%s\n", $md5, $filename); }; - calculate_folder_checksum('.', $callback); - chdir($cur); - }); -} - -// vi: expandtab shiftwidth=4 softtabstop=4 tabstop=4 Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-19 15:45:57 UTC (rev 66436) +++ trim/src/instancelib.php 2018-05-19 22:21:29 UTC (rev 66437) @@ -63,24 +63,6 @@ instance_id = :id "); -define('SQL_SELECT_FILE_MAP', " -SELECT - path, hash -FROM - file -WHERE - version_id = :v - ;"); - -define('SQL_SELECT_FILE_COUNT_BY_VERSION', " -SELECT - COUNT(*) -FROM - file -WHERE - version_id = :id -;"); - define('SQL_INSERT_INSTANCE', " INSERT OR REPLACE INTO instance @@ -117,26 +99,6 @@ (:id, :instance, :type, :branch, :date) ;"); -define('SQL_INSERT_FILE', " -INSERT INTO - file - (version_id, path, hash) -VALUES - (:version, :path, :hash) -;"); - -define('SQL_INSERT_FILE_REPLICATE', " -INSERT INTO - file - (version_id, path, hash) - SELECT - :new, path, hash - FROM - file - WHERE - version_id = :old -;"); - define('SQL_DELETE_ACCESS', " DELETE FROM access @@ -151,13 +113,6 @@ instance_id = :id ;"); -define('SQL_DELETE_FILE', " -DELETE FROM - file -WHERE - path = :p and version_id = :v -;"); - define('SQL_DELETE_FILE_BY_SELECT', " DELETE FROM file Modified: trim/src/libs/audit/Checksum.php =================================================================== --- trim/src/libs/audit/Checksum.php 2018-05-19 15:45:57 UTC (rev 66436) +++ trim/src/libs/audit/Checksum.php 2018-05-19 22:21:29 UTC (rev 66437) @@ -60,7 +60,7 @@ instance_id = :id );"; - const CHECKSUM_SCRIPT = TRIM_ROOT . '/scripts/generate_md5_list.php'; + const CHECKSUM_IGNORE_PATTERN = '#(^\./temp|/\.git|/\.svn)/#'; private $instance; private $access; @@ -95,7 +95,7 @@ public function getChecksums($version_id) { $map = array(); - $result = query(SQL_SELECT_FILE_MAP, array(':v' => $version_id)); + $result = query(self::SQL_SELECT_FILE_MAP, array(':v' => $version_id)); while ($row = $result->fetch()) { extract($row); @@ -104,6 +104,34 @@ return $map; } + public static function checksumFolder($folder, $callback=null) + { + $result = array(); + + if(!is_callable($callback)) { + $callback = function($hash, $filename) use (&$result) { + return array($hash, $filename); + }; + } + + $diriterator = new RecursiveDirectoryIterator($folder); + $objiterator = new RecursiveIteratorIterator( + $diriterator, + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach($objiterator as $name => $object) { + if (preg_match(self::CHECKSUM_IGNORE_PATTERN, $name)) { + continue; + } + + if ($object->getType() === 'file' && is_readable($name)) { + $callback(md5_file($name), $name); + } + } + return $result; + } + public function checksumLocalFolder($folder) { require_once(self::CHECKSUM_SCRIPT); $current = getcwd(); @@ -116,7 +144,7 @@ public function checksumRemoteFolder($folder) { $access = $this->getAccess(); - $result = $access->runPHP(self::CHECKSUM_SCRIPT, array($folder)); + $result = $access->runPHP(__FILE__, array($folder)); $result = explode("\n", $result); $result = array_map(function($line){ return explode(':', $line); @@ -160,7 +188,7 @@ public function removeFile($version_id, $filename) { $args = array(':v' => $version_id, ':p' => $filename); - return query(SQL_DELETE_FILE, $args); + return query(self::SQL_DELETE_FILE, $args); } public function replaceFile($version_id, $hash, $filename) @@ -215,3 +243,25 @@ query('COMMIT'); } } + + +/** + * If this is called directly, treat it as command + */ +if (realpath($_SERVER['SCRIPT_FILENAME']) === realpath(__FILE__)) { + call_user_func(function () { + $cur = getcwd(); + if (array_key_exists('REQUEST_METHOD', $_SERVER)) + $next = $_GET[1]; + + elseif (count($_SERVER['argv']) > 1) + $next = $_SERVER['argv'][1]; + + if (isset($next) && file_exists($next)) + chdir($next); + + $callback = function($md5, $filename){ printf("%s:%s\n", $md5, $filename); }; + Audit_Checksum::checksumFolder('.', $callback); + chdir($cur); + }); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-20 16:04:42
|
Revision: 66451 http://sourceforge.net/p/tikiwiki/code/66451 Author: montefuscolo Date: 2018-05-20 16:04:40 +0000 (Sun, 20 May 2018) Log Message: ----------- [FIX] Maintenance date and verification Modified Paths: -------------- trim/scripts/maintenance.php trim/src/instancelib.php Modified: trim/scripts/maintenance.php =================================================================== --- trim/scripts/maintenance.php 2018-05-20 14:34:41 UTC (rev 66450) +++ trim/scripts/maintenance.php 2018-05-20 16:04:40 UTC (rev 66451) @@ -6,37 +6,22 @@ header("HTTP/1.1 503 Service Unavailable", true, 503); header("Retry-After: 3600"); -$start_date = getdate(filemtime(__FILE__)); +$timestamp = filemtime(__FILE__); // seconds +$date = date('Y-m-d H:i:s P', $timestamp); + ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Maintenance in progress</title> - <script type="text/javascript"> - window.trim = window.trim || {}; - trim.start_date = new Date(<?= - $start_date['year'] - . ',' . $start_date['mon'] - . ',' . $start_date['mday'] - . ',' . $start_date['hours'] - . ',' . $start_date['minutes'] - . ',' . $start_date['seconds'] - ;?>); - - function start_date(date) { - date = date || trim.start_date; - return date.toLocaleString(); - } - </script> </head> <body> <h1>Maintenance in progress</h1> <p> - An update started on <b><script type="text/javascript"> - document.write(start_date()); - </script></b> and it is currently in progress on this website. - Please try again in a few minutes. + An update started on <b><?= $date; ?></b> + and it is currently in progress on this website. Please try again in + a few minutes. </p> </body> </html> Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-20 14:34:41 UTC (rev 66450) +++ trim/src/instancelib.php 2018-05-20 16:04:40 UTC (rev 66451) @@ -794,9 +794,11 @@ function isLocked() { $access = $this->getBestAccess('scripting'); - $trim_htaccess = file_get_contents(TRIM_ROOT . '/scripts/maintenance.htaccess'); - $dest_htaccess = $access->fileGetContents($this->getWebPath('.htaccess')); - return trim($trim_htaccess) === trim($dest_htaccess); + $base_htaccess = TRIM_ROOT . '/scripts/maintenance.htaccess'; + $curr_htaccess = $this->getWebPath('.htaccess'); + + return $access->fileExists($curr_htaccess) + && file_get_contents($base_htaccess) === $access->fileGetContents($curr_htaccess); } function lock() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-23 23:29:41
|
Revision: 66488 http://sourceforge.net/p/tikiwiki/code/66488 Author: montefuscolo Date: 2018-05-23 23:29:40 +0000 (Wed, 23 May 2018) Log Message: ----------- [FIX] Branch detection Modified Paths: -------------- trim/scripts/update.php trim/src/appinfo/tiki.php trim/src/instancelib.php trim/src/rclib.php Modified: trim/scripts/update.php =================================================================== --- trim/scripts/update.php 2018-05-23 23:29:33 UTC (rev 66487) +++ trim/scripts/update.php 2018-05-23 23:29:40 UTC (rev 66488) @@ -32,18 +32,22 @@ $instance->detectPHP(); $app = $instance->getApplication(); - ob_start(); - perform_instance_installation($instance); - $contents = $string = trim(preg_replace('/\s\s+/', ' ', ob_get_contents())); - ob_end_clean(); + if (!$app->isInstalled()) { + ob_start(); + perform_instance_installation($instance); + $contents = $string = trim(preg_replace('/\s\s+/', ' ', ob_get_contents())); + ob_end_clean(); - $matches_a = array(); - preg_match('/(\d+\.|trunk)/', $contents, $matches_a); - - if (!is_array($matches_a) || count($matches_a) === 0) { - $matches_a = array(0); + $matches = array(); + if(preg_match('/(\d+\.|trunk)/', $contents, $matches)) { + $branch_name = $matches[0]; + } } + $version = $instance->getLatestVersion(); + $branch_name = $version->getBranch(); + $branch_version = $version->getBaseVersion(); + if (ARG_SWITCH) { $versions = array(); $versions_raw = $app->getVersions(); @@ -52,33 +56,29 @@ $versions[] = $version; } - echo "You are currently running: $contents\n"; + echo "You are currently running: $branch_name\n"; echo "Which version do you want to upgrade to?\n"; - $i = 0; + $counter = 0; $found_incompatibilities = false; foreach ($versions as $key => $version) { - preg_match('/(\d+\.|trunk)/', $version->branch, $matches_b); + $base_version = $version->getBaseVersion(); - if ((($matches_b[0] >= 13) || ($matches_b[0] == 'trunk')) && - ($instance->phpversion < 50500) || ($matches_b[0] < $matches_a[0])) - $found_incompatibilities = true; - else { - $i++; + $compatible = 0; + $compatible |= $base_version >= 13; + $compatible &= $base_version >= $branch_version; + $compatible |= $base_version === 'trunk'; + $compatible &= $instance->phpversion > 50500; + $found_incompatibilities |= !$compatible; + + if ($compatible) { + $counter++; echo "[$key] {$version->type} : {$version->branch}\n"; } } - if ($i) { - $matches_c = array(); - preg_match('/(\d+)(\d{2})(\d{2})$/', $instance->phpversion, $matches_c); - - if (array_key_exists(1, $matches_c) && - array_key_exists(2, $matches_c) && - array_key_exists(3, $matches_c)) { - printf("We detected PHP release %d.%d.%d\n", - $matches_c[1], $matches_c[2], $matches_c[3]); - } + if ($counter) { + printf("We detected PHP release %s\n", $instance->getPHPVersion()); if ($found_incompatibilities) { warning('WARNING: If some versions are not offered, ' . Modified: trim/src/appinfo/tiki.php =================================================================== --- trim/src/appinfo/tiki.php 2018-05-23 23:29:33 UTC (rev 66487) +++ trim/src/appinfo/tiki.php 2018-05-23 23:29:40 UTC (rev 66488) @@ -246,6 +246,7 @@ if ($access instanceof ShellPrompt && $access->hasExecutable('svn')) { info('Updating svn...'); + $webroot = $this->instance->webroot; $escaped_root_path = escapeshellarg(rtrim($this->instance->webroot, '/\\')); $escaped_temp_path = escapeshellarg(rtrim($this->instance->getWebPath('temp'), '/\\')); @@ -252,10 +253,11 @@ $escaped_cache_path = escapeshellarg(rtrim($this->instance->getWebPath('temp/cache'), '/\\')); $access->shellExec("{$this->instance->phpexec} -q -d memory_limit=256M console.php clear:cache --all"); - $access->shellExec("svn revert --non-interactive -R {$escaped_cache_path}"); - $access->shellExec("svn cleanup --non-interactive {$escaped_root_path}"); $svn = new RC_SVN(SVN_TIKIWIKI_URI, $access); + $svn->revert($webroot, array('--recursive')); + $svn->cleanup($webroot); + $svn->updateInstanceTo($this->instance->webroot, $version->branch); $access->shellExec("chmod 0777 {$escaped_temp_path} {$escaped_cache_path}"); Modified: trim/src/instancelib.php =================================================================== --- trim/src/instancelib.php 2018-05-23 23:29:33 UTC (rev 66487) +++ trim/src/instancelib.php 2018-05-23 23:29:40 UTC (rev 66488) @@ -392,6 +392,14 @@ ); } + function getPHPVersion() + { + $access = $this->getBestAccess('scripting'); + $path = $access->getInterpreterPath($this); + $version = $access->shellExec("{$path} -r 'echo phpversion();'"); + return $version; + } + function detectPHP() { $access = $this->getBestAccess('scripting'); @@ -401,7 +409,7 @@ if (strlen($path) > 0) { $version = $access->getInterpreterVersion($path); - $this->phpversion = $version; + $this->phpversion = intval($version); if ($version < 50300) return false; $this->phpexec = $path; @@ -480,11 +488,12 @@ */ function hasConsole() { $current = $this->getLatestVersion(); - preg_match('/(\d+)\.?/', $current->branch, $matches); - if ($matches) - return ((float)$matches[1] >= 11); - - return false; + $hasConsole = $current->branch === 'trunk' + || ( + preg_match('/(\d+)\.?/', $current->branch, $matches) + && floatval($matches[1]) >= 11 + ); + return $hasConsole; } function getApplication() @@ -883,10 +892,27 @@ } } - function getInstance() { + function getInstance() + { return Instance::getInstance($this->instance); } + function getBranch() { + return $this->branch; + } + + function getBaseVersion() { + $branch = $this->getBranch(); + $result = null; + if (preg_match('/((\d+)(\.\d+)?|trunk)/', $branch, $matches)) { + $result = $matches[0]; + $result = is_numeric($result) + ? floatval($result) + : $result; + } + return $result; + } + function hasChecksums() { return Audit_Checksum::hasChecksums($this->id); Modified: trim/src/rclib.php =================================================================== --- trim/src/rclib.php 2018-05-23 23:29:33 UTC (rev 66487) +++ trim/src/rclib.php 2018-05-23 23:29:40 UTC (rev 66488) @@ -20,12 +20,10 @@ 'update' => array( '--accept theirs-full', '--force', - '--quiet', ), 'upgrade' => array( '--force', '--accept theirs-full', - '--quiet', ) ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-24 22:32:05
|
Revision: 66498 http://sourceforge.net/p/tikiwiki/code/66498 Author: montefuscolo Date: 2018-05-24 22:32:04 +0000 (Thu, 24 May 2018) Log Message: ----------- [FIX] Rename windows make Added Paths: ----------- trim/make.cmd Removed Paths: ------------- trim/make.cm Deleted: trim/make.cm =================================================================== --- trim/make.cm 2018-05-24 22:31:58 UTC (rev 66497) +++ trim/make.cm 2018-05-24 22:32:04 UTC (rev 66498) @@ -1,155 +0,0 @@ -@echo off -rem Change paths to executables here - -set PHP=php -d memory_limit=256M -set SQLITE=sqlite3 -setlocal enableextensions -for /f "tokens=*" %%a in ( -'%SQLITE% --version' -) do ( -set SQLITE_VERSION=%%a -) - -set PARM=%1 -shift -if "%PARM%"=="" goto :help -goto :%PARM% - -# No changes should be required from here -:default -:help - echo Valid options are: - echo access, backup, blank, clean, check, cli, clone, cloneandupgrade, - echo convert, copysshkey, delete, detect, editinstance, enablewww, - echo fix, instance, profile, report, restore, update, upgrade, - echo verify, viewdb, watch - goto :eof - -# Use this to add a remote installation -:instance - %PHP% scripts/addinstance.php %* - goto :eof - -:editinstance - %PHP% scripts/editinstance.php %* - goto :eof - -:blank - %PHP% scripts/addinstance.php blank %* - goto :eof - -:viewdb -if "%SQLITE_VERSION%"=="" ( - echo Error: %SQLITE% is not available, please install and try again. - exit -) - %SQLITE% data\trim.db - goto :eof - -:check - %PHP% scripts/check.php %* - goto :eof - -:verify - %PHP% scripts/check.php %* - goto :eof - -:watch - %PHP% scripts/setupwatch.php %* - goto :eof - -# Use this to update version within the same branch, no major versions changes -:update - %PHP% scripts/update.php %* - goto :eof - -# Use this to update major releases -:upgrade - %PHP% scripts/update.php switch - goto :eof - -:convert - %PHP% scripts/tiki/convert.php %* - goto :eof - -:access - %PHP% scripts/access.php %* - goto :eof - -:backup - %PHP% scripts/backup.php %* - goto :eof - -:restore - %PHP% scripts/restore.php %* - goto :eof - -:fix - %PHP% scripts/tiki/fixperms.php %* - goto :eof - -:cli - %PHP% scripts/tiki/cli.php %* - goto :eof - -:detect - %PHP% scripts/detect.php %* - goto :eof - -:enablewww - %PHP% scripts/enablewww.php %* - goto :eof - -:delete - %PHP% scripts/delete.php %* - goto :eof - -:profile - %PHP% scripts/tiki/profile.php %* - goto :eof - -:report - %PHP% scripts/tiki/report.php %* - goto :eof - -:copysshkey - %PHP% scripts/copysshkey.php %* - goto :eof - -:clone - %PHP% scripts/clone.php clone %* - goto :eof - -:cloneandupgrade - %PHP% scripts/clone.php upgrade %* - goto :eof - -:clean - @echo WARNING! - @echo You are about to delete all state, backup, cache, and log files! - set /p ANSWR=Are you sure? - if /i %ANSWR%==yes ( - echo Erasing - del /s /q cache\*.* backup\*.* logs\*.* data\trim.db - ) else ( - echo Not erasing. - ) - goto :eof - -:clean-files - @echo WARNING! - @echo You are about to delete backup, cache, and log files! - set /p ANSWR=Are you sure? - if /i %ANSWR%==yes ( - echo Erasing - del /s /q cache\*.* backup\*.* logs\*.* - ) else ( - echo Not erasing. - ) - goto :eof - -:shell - %PHP% -d date.timezone=UTC ./vendor/bin/psysh src/psysh_conf.php - goto :eof - -:eof \ No newline at end of file Copied: trim/make.cmd (from rev 66497, trim/make.cm) =================================================================== --- trim/make.cmd (rev 0) +++ trim/make.cmd 2018-05-24 22:32:04 UTC (rev 66498) @@ -0,0 +1,155 @@ +@echo off +rem Change paths to executables here + +set PHP=php -d memory_limit=256M +set SQLITE=sqlite3 +setlocal enableextensions +for /f "tokens=*" %%a in ( +'%SQLITE% --version' +) do ( +set SQLITE_VERSION=%%a +) + +set PARM=%1 +shift +if "%PARM%"=="" goto :help +goto :%PARM% + +# No changes should be required from here +:default +:help + echo Valid options are: + echo access, backup, blank, clean, check, cli, clone, cloneandupgrade, + echo convert, copysshkey, delete, detect, editinstance, enablewww, + echo fix, instance, profile, report, restore, update, upgrade, + echo verify, viewdb, watch + goto :eof + +# Use this to add a remote installation +:instance + %PHP% scripts/addinstance.php %* + goto :eof + +:editinstance + %PHP% scripts/editinstance.php %* + goto :eof + +:blank + %PHP% scripts/addinstance.php blank %* + goto :eof + +:viewdb +if "%SQLITE_VERSION%"=="" ( + echo Error: %SQLITE% is not available, please install and try again. + exit +) + %SQLITE% data\trim.db + goto :eof + +:check + %PHP% scripts/check.php %* + goto :eof + +:verify + %PHP% scripts/check.php %* + goto :eof + +:watch + %PHP% scripts/setupwatch.php %* + goto :eof + +# Use this to update version within the same branch, no major versions changes +:update + %PHP% scripts/update.php %* + goto :eof + +# Use this to update major releases +:upgrade + %PHP% scripts/update.php switch + goto :eof + +:convert + %PHP% scripts/tiki/convert.php %* + goto :eof + +:access + %PHP% scripts/access.php %* + goto :eof + +:backup + %PHP% scripts/backup.php %* + goto :eof + +:restore + %PHP% scripts/restore.php %* + goto :eof + +:fix + %PHP% scripts/tiki/fixperms.php %* + goto :eof + +:cli + %PHP% scripts/tiki/cli.php %* + goto :eof + +:detect + %PHP% scripts/detect.php %* + goto :eof + +:enablewww + %PHP% scripts/enablewww.php %* + goto :eof + +:delete + %PHP% scripts/delete.php %* + goto :eof + +:profile + %PHP% scripts/tiki/profile.php %* + goto :eof + +:report + %PHP% scripts/tiki/report.php %* + goto :eof + +:copysshkey + %PHP% scripts/copysshkey.php %* + goto :eof + +:clone + %PHP% scripts/clone.php clone %* + goto :eof + +:cloneandupgrade + %PHP% scripts/clone.php upgrade %* + goto :eof + +:clean + @echo WARNING! + @echo You are about to delete all state, backup, cache, and log files! + set /p ANSWR=Are you sure? + if /i %ANSWR%==yes ( + echo Erasing + del /s /q cache\*.* backup\*.* logs\*.* data\trim.db + ) else ( + echo Not erasing. + ) + goto :eof + +:clean-files + @echo WARNING! + @echo You are about to delete backup, cache, and log files! + set /p ANSWR=Are you sure? + if /i %ANSWR%==yes ( + echo Erasing + del /s /q cache\*.* backup\*.* logs\*.* + ) else ( + echo Not erasing. + ) + goto :eof + +:shell + %PHP% -d date.timezone=UTC ./vendor/bin/psysh src/psysh_conf.php + goto :eof + +:eof \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mon...@us...> - 2018-05-27 19:45:58
|
Revision: 66516 http://sourceforge.net/p/tikiwiki/code/66516 Author: montefuscolo Date: 2018-05-27 19:45:56 +0000 (Sun, 27 May 2018) Log Message: ----------- [REF] Add some tests to Host_Command class Modified Paths: -------------- trim/composer.json trim/composer.lock Added Paths: ----------- trim/tests/ trim/tests/libs/ trim/tests/libs/host/ trim/tests/libs/host/HostCommandTest.php Modified: trim/composer.json =================================================================== --- trim/composer.json 2018-05-27 19:45:49 UTC (rev 66515) +++ trim/composer.json 2018-05-27 19:45:56 UTC (rev 66516) @@ -19,5 +19,19 @@ "type": "composer", "url": "https://composer.tiki.org" } - ] + ], + "require-dev": { + "phpunit/phpunit": "^5" + }, + "scripts": { + "tests": [ + "find scripts src -name '*.php' -exec php -l {} \\;", + "./vendor/bin/phpunit --bootstrap src/env_includes.php tests" + ] + }, + "autoload": { + "classmap": [ + "src/" + ] + } } Modified: trim/composer.lock =================================================================== --- trim/composer.lock 2018-05-27 19:45:49 UTC (rev 66515) +++ trim/composer.lock 2018-05-27 19:45:56 UTC (rev 66516) @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f8505f66991faef329eef86057689e00", + "content-hash": "8303bbe567005ec58c5b7de596c69c3a", "packages": [ { "name": "components/jquery", @@ -218,16 +218,16 @@ }, { "name": "nikic/php-parser", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078" + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", "shasum": "" }, "require": { @@ -265,21 +265,21 @@ "parser", "php" ], - "time": "2018-01-25T21:31:33+00:00" + "time": "2018-02-28T20:30:58+00:00" }, { "name": "phpseclib/phpseclib", - "version": "2.0.6", + "version": "2.0.11", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa" + "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/phpseclib/phpseclib/phpseclib-phpseclib-34a7699e6f31b1ef4035ee36444407cecf9f56aa-zip-af2c37.zip", - "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa", - "shasum": "0fedcda5105aea746610117e43b642a00398e98c" + "url": "https://composer.tiki.org/dist/phpseclib/phpseclib/phpseclib-phpseclib-7053f06f91b3de78e143d430e55a8f7889efc08b-zip-e6f746.zip", + "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b", + "shasum": "84355bf7288c96562013139ff566886a161d4ada" }, "require": { "php": ">=5.3.3" @@ -286,7 +286,7 @@ }, "require-dev": { "phing/phing": "~2.7", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0", "sami/sami": "~2.0", "squizlabs/php_codesniffer": "~2.0" }, @@ -357,7 +357,7 @@ "x.509", "x509" ], - "time": "2017-06-05T06:31:10+00:00" + "time": "2018-04-15T16:55:05+00:00" }, { "name": "psr/log", @@ -408,30 +408,30 @@ }, { "name": "psy/psysh", - "version": "v0.8.17", + "version": "v0.9.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec" + "reference": "4d969a0e08e1e05e7207c07cb4207017ecc9a331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4d969a0e08e1e05e7207c07cb4207017ecc9a331", + "reference": "4d969a0e08e1e05e7207c07cb4207017ecc9a331", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1", "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "~1.3|~2.0|~3.0", - "php": ">=5.3.9", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", "symfony/var-dumper": "~2.7|~3.0|~4.0" }, "require-dev": { - "hoa/console": "~3.16|~1.14", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "symfony/finder": "~2.1|~3.0|~4.0" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -446,15 +446,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.8.x-dev" + "dev-develop": "0.9.x-dev" } }, "autoload": { "files": [ - "src/Psy/functions.php" + "src/functions.php" ], "psr-4": { - "Psy\\": "src/Psy/" + "Psy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -476,21 +476,21 @@ "interactive", "shell" ], - "time": "2017-12-28T16:14:16+00:00" + "time": "2018-05-22T06:48:07+00:00" }, { "name": "symfony/console", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "26b6f419edda16c19775211987651cb27baea7f1" + "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/symfony/console/symfony-console-26b6f419edda16c19775211987651cb27baea7f1-zip-2a8972.zip", - "reference": "26b6f419edda16c19775211987651cb27baea7f1", - "shasum": "6e1dca9bf3d68bb8b81300610f849ae0ed04b82b" + "url": "https://composer.tiki.org/dist/symfony/console/symfony-console-36f83f642443c46f3cf751d4d2ee5d047d757a27-zip-b821a4.zip", + "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27", + "shasum": "6f46a96f51920c4ccd7cb85f145aea6a0010ddb0" }, "require": { "php": "^5.5.9|>=7.0.8", @@ -510,7 +510,7 @@ "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -545,21 +545,21 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-05-16T08:49:21+00:00" }, { "name": "symfony/debug", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937" + "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/symfony/debug/symfony-debug-53f6af2805daf52a43b393b93d2f24925d35c937-zip-5b4f76.zip", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937", - "shasum": "96d1565feaae2ba9d745869945eda83004c84318" + "url": "https://composer.tiki.org/dist/symfony/debug/symfony-debug-b28fd73fefbac341f673f5efd707d539d6a19f68-zip-2b17d1.zip", + "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68", + "shasum": "415af93cf11f81c244ad021fb6c717aff5e491a2" }, "require": { "php": "^5.5.9|>=7.0.8", @@ -601,21 +601,21 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-05-16T14:03:39+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "reference": "3296adf6a6454a050679cde90f95350ad604b171" }, "dist": { "type": "zip", - "url": "https://composer.tiki.org/dist/symfony/polyfill-mbstring/symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b-zip-93441e.zip", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "shasum": "5a5a308321addb37c4f578742843b7b45f61000f" + "url": "https://composer.tiki.org/dist/symfony/polyfill-mbstring/symfony-polyfill-mbstring-3296adf6a6454a050679cde90f95350ad604b171-zip-0fdbaa.zip", + "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "shasum": "18fde59ae1a9c7c83a2649c1c3c87eae439af9b6" }, "require": { "php": ">=5.3.3" @@ -626,7 +626,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -660,20 +660,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-04-26T10:06:28+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.4", + "version": "v3.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" + "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e6545672d8c9ce70dd472adc2f8b03155a46f73", + "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73", "shasum": "" }, "require": { @@ -729,7 +729,7 @@ "debug", "dump" ], - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-04-26T12:42:15+00:00" }, { "name": "twitter/bootstrap", @@ -783,7 +783,1383 @@ "time": "2016-07-25T15:51:55+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/doctrine/instantiator/doctrine-instantiator-8e884e78f9f0eb1329e445619e04456e64d8051d-zip-681b88.zip", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "931e30a43d6d45df20fbb50e5ee469986e4c8f98" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocr...@gm...", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/myclabs/deep-copy/myclabs-deep-copy-3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e-zip-9eba9e.zip", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "17d241406beb71b37623ce5f99316f3521552e28" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpdocumentor/reflection-common/phpdocumentor-reflection-common-21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6-zip-5ca449.zip", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "c1edbd3f48429cad705068988157c593ecbb7dab" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "ope...@ij..." + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpdocumentor/reflection-docblock/phpdocumentor-reflection-docblock-bf329f6c1aadea3299f08ee804682b7c45b326a2-zip-9dccc3.zip", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "shasum": "0d871cbb6217ee3d1efc17bc76ccb0db0949ca42" + }, + "require": { + "php": "^5.6 || ^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me...@mi..." + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-10T14:09:06+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpdocumentor/type-resolver/phpdocumentor-type-resolver-9c977708995954784726e25d0cd1dddf4e65b0f7-zip-28400d.zip", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "c0756993c04e4b06513a622a8ad4174b71e9b9ab" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me...@mi..." + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.6", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpspec/prophecy/phpspec-prophecy-33a7e3c4fda54e912ff6338c48823bd5c0f0b712-zip-d750f0.zip", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "shasum": "4e933c3bf2144f1d8d3c298a2ca47c64dce0282b" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "eve...@gm...", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "mar...@gm..." + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-04-18T13:57:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/php-code-coverage/phpunit-php-code-coverage-ef7b2f56815df854e66ceaee8ebe9393ae36a40d-zip-32763d.zip", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "52954e23a1b22f4ead1dcd946afe04f4eaee385c" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb...@se...", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02T07:44:40+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/php-file-iterator/phpunit-php-file-iterator-730b01bc3e867237eaac355e06a36b85dd93a8b4-zip-00588a.zip", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "ed98891bc2ff4e6af9bc2ca5721887186ecdaad4" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb...@se...", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/php-text-template/phpunit-php-text-template-31f8b717e51d9a2afca6c9f046f5d69fc27c8686-zip-c6bcbd.zip", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "d28d6290e6a416a17c003a2193af4339ae7dc199" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph...", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/php-timer/phpunit-php-timer-3dcf38ca72b158baf0bc245e9184d3fdffa9c46f-zip-c27592.zip", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "a3a56d4c390028a458bfb749f162792448d748ed" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb...@se...", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/php-token-stream/phpunit-php-token-stream-1ce90ba27c42e4e44e6d8458241466380b51fa16-zip-f5a4be.zip", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "454fdfe9db33039b5cfd411e6ceba813c1e43e72" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-12-04T08:55:13+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.27", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/phpunit/phpunit-phpunit-b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c-zip-802b3e.zip", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "shasum": "5d2f751856c6ad0fdf277349c76a0bedf9844a41" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "^1.0.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph...", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-02-01T05:50:59+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/phpunit/phpunit-mock-objects/phpunit-phpunit-mock-objects-a23b761686d50a560cc56233b9ecf49597cc9118-zip-269bd1.zip", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "shasum": "7b71fed38bf472dff6086b87dc4d19f84b3d58b0" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb...@se...", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2017-06-30T09:13:00+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/code-unit-reverse-lookup/sebastian-code-unit-reverse-lookup-4419fcdb5eabb9caa61a27c7a1db532a6b55dd18-zip-2b8d33.zip", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "c2eda4ddb76dc7e748bfd7ad7dc116f88fa5a72d" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/comparator/sebastian-comparator-2b7424b55f5047b47ac6e5ccb20b2aea4011d9be-zip-5c4a53.zip", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "ebde29dc315dacf2c7b73caf8613e655f63a979e" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "wha...@gm..." + }, + { + "name": "Volker Dusch", + "email": "gi...@wa..." + }, + { + "name": "Bernhard Schussek", + "email": "bsc...@2b..." + }, + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/diff/sebastian-diff-7f066a26a962dbe58ddea9f72a4e82874a3975a4-zip-92da4d.zip", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "3e753e8c14543922c62fe344a506ce75da99ead5" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "ma...@ko..." + }, + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-05-22T07:24:03+00:00" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/environment/sebastian-environment-5795ffe5dc5b02460c3e34222fee8cbe245d8fac-zip-f320b8.zip", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "49f52a7be18894f3a78d66c52ce03bb94a8d9876" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-11-26T07:53:53+00:00" + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/exporter/sebastian-exporter-ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4-zip-72608d.zip", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "3056f54be3e2e8a4ef9c415851d8027722923d0b" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "wha...@gm..." + }, + { + "name": "Volker Dusch", + "email": "gi...@wa..." + }, + { + "name": "Bernhard Schussek", + "email": "bsc...@2b..." + }, + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + }, + { + "name": "Adam Harvey", + "email": "ah...@ph..." + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19T08:54:04+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/global-state/sebastian-global-state-bc37d50fea7d017d3d340f230811c9f1d7280af4-zip-c4abec.zip", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "83f4bd6f3da0a9090227043ab7b5bf8822c7d08e" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/object-enumerator/sebastian-object-enumerator-1311872ac850040a79c3c058bea3e22d0f09cbb7-zip-371ea9.zip", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "41f906dda4866d573b8cdf21dd3aeedfdea41afd" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/recursion-context/sebastian-recursion-context-2c3ba150cbec723aa057506e73a8d33bdb286c9a-zip-567089.zip", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "3de6636b688380fd953275d1981cf91f1b90bae2" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "wha...@gm..." + }, + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + }, + { + "name": "Adam Harvey", + "email": "ah...@ph..." + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/resource-operations/sebastian-resource-operations-ce990bb21759f94aeafd30209e8cfcdfa8bc3f52-zip-4a3a08.zip", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "831cfdb145982db883686da55acd8a97456f2616" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph..." + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://composer.tiki.org/dist/sebastian/version/sebastian-version-99732be0ddb3361e16ad77b68ba41efc8e979019-zip-0eee83.zip", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "4870c9f83561a460849a0bbf8180f9ec78999c94" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "seb...@ph...", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "Bac...@gm..." + } + ], + ... [truncated message content] |