diff options
author | Andrew Manning <tamanning@zoho.com> | 2016-05-07 18:39:19 -0400 |
---|---|---|
committer | Andrew Manning <tamanning@zoho.com> | 2016-05-07 18:39:19 -0400 |
commit | 0746794e8145eac0608eef26b9c6d3d0ae5319cc (patch) | |
tree | 883fb17d04aa6a9e9ad6deb31c858fd4c63a787a /Zotlabs/Module/Admin.php | |
parent | 284d86ad7681d05c3e362bddf39e1b7759ab20a5 (diff) | |
download | volse-hubzilla-0746794e8145eac0608eef26b9c6d3d0ae5319cc.tar.gz volse-hubzilla-0746794e8145eac0608eef26b9c6d3d0ae5319cc.tar.bz2 volse-hubzilla-0746794e8145eac0608eef26b9c6d3d0ae5319cc.zip |
New plugin repo cloned using new GitRepo class. Readme and info displayed in wide modal dialog.
Diffstat (limited to 'Zotlabs/Module/Admin.php')
-rw-r--r-- | Zotlabs/Module/Admin.php | 63 |
1 files changed, 20 insertions, 43 deletions
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php index ddec02916..68508fdb0 100644 --- a/Zotlabs/Module/Admin.php +++ b/Zotlabs/Module/Admin.php @@ -1,7 +1,7 @@ <?php namespace Zotlabs\Module; -use PHPGit\Git as Git; +use \Zotlabs\Storage\GitRepo as GitRepo; /** * @file mod/admin.php @@ -1359,6 +1359,15 @@ class Admin extends \Zotlabs\Web\Controller { '$submit' => t('Download Plugin Repo') ) ); + $newRepoModalID = random_string(3); + $newRepoModal = replace_macros( + get_markup_template('generic_modal.tpl'), array( + '$id' => $newRepoModalID, + '$title' => t('Install new repo'), + '$ok' => t('OK'), + '$cancel' => t('Cancel') + ) + ); $t = get_markup_template('admin_plugins.tpl'); return replace_macros($t, array( @@ -1372,7 +1381,9 @@ class Admin extends \Zotlabs\Web\Controller { '$form_security_token' => get_form_security_token('admin_plugins'), '$addrepo' => t('Add Plugin Repo'), '$expandform' => false, - '$form' => $admin_plugins_add_repo_form + '$form' => $admin_plugins_add_repo_form, + '$newRepoModal' => $newRepoModal, + '$newRepoModalID' => $newRepoModalID )); } @@ -1669,57 +1680,23 @@ class Admin extends \Zotlabs\Web\Controller { function admin_page_plugins_post($action) { switch($action) { - case 'addrepo': - + case 'addrepo': require_once('library/markdown.php'); if(array_key_exists('repoURL',$_REQUEST)) { require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies logger('Repo URL submitted: ' . $_REQUEST['repoURL']); $repoURL = $_REQUEST['repoURL']; - $urlpath = parse_url($repoURL, PHP_URL_PATH); - $lastslash = strrpos($urlpath, '/') + 1; - $gitext = strrpos($urlpath, '.'); - if ($gitext) { - $reponame = substr($urlpath, $lastslash, $gitext - $lastslash); - } else { - logger('invalid git repo URL'); - notice('Invalid git repo URL'); - break; - } - $storepath = realpath(__DIR__ . '/../../store/'); - //logger('storepath: ' . $storepath); - $repopath = $storepath . '/pluginrepos/' . $reponame; - $git = new Git(); - if (!file_exists($repopath)) { - //logger('repopath does not exist'); - if (mkdir($repopath, 0770, true)) { - $cloned = $git->clone($repoURL, $repopath); - if (!$cloned) { - logger('git clone failed'); - notice('Repo coule not be cloned. Filesystem path error.'); - json_return_and_die(array('message' => 'Repo could not be cloned. Filesystem path error.', 'success' => false)); - } - //json_return_and_die(array('repo'=> $repo, 'message' => 'Successfully cloned to: ' . $repopath , 'success' => true)); - } else { - logger('repopath could not be created'); - notice('Repo coule not be cloned. Filesystem path error.'); - json_return_and_die(array('message' => 'Repo could not be cloned. Filesystem path error', 'success' => false)); - } - } - $git->setRepository($repopath); - $repo = array(); - $repo['url'] = $repoURL; - $repo['branches'] = $git->branch(['all' => true]); - $repo['objects'] = array(); + $git = new GitRepo('sys', $repoURL, true); + + $repo = $git->probeRepo($git->path); $repo['readme'] = $repo['manifest'] = null; - foreach ($git->tree('master') as $object) { + foreach ($git->git->tree('master') as $object) { if ($object['type'] == 'blob' && (strtolower($object['file']) === 'readme.md' || strtolower($object['file']) === 'readme')) { - $repo['readme'] = Markdown($git->cat->blob($object['hash'])); + $repo['readme'] = Markdown($git->git->cat->blob($object['hash'])); } else if ($object['type'] == 'blob' && strtolower($object['file']) === 'manifest.json') { - $repo['manifest'] = $git->cat->blob($object['hash']); + $repo['manifest'] = $git->git->cat->blob($object['hash']); } } - //logger('repo: ' . json_encode($repo)); json_return_and_die(array('repo'=> $repo, 'message' => '', 'success' => true)); } else { |