aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Storage
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Storage')
-rw-r--r--Zotlabs/Storage/Browser.php9
-rw-r--r--Zotlabs/Storage/GitRepo.php159
2 files changed, 6 insertions, 162 deletions
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index e7f71c8c8..6ea6031d3 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -5,6 +5,7 @@ namespace Zotlabs\Storage;
use Sabre\DAV;
use App;
use Zotlabs\Lib\Config;
+use Zotlabs\Lib\Text;
/**
* @brief Provides a DAV frontend for the webbrowser.
@@ -260,13 +261,16 @@ class Browser extends DAV\Browser\Plugin {
}
}
+ $display_path_encoded = Text::rawurlencode_parts($data['display_path']);
+ $href_encoded = Text::rawurlencode_parts($href);
+
// put the array for this file together
$ft['attach_id'] = $id;
// $ft['icon'] = $icon;
$ft['photo_icon'] = $photo_icon;
$ft['is_creator'] = $is_creator;
- $ft['rel_path'] = (($data) ? '/cloud/' . $nick .'/' . $data['display_path'] : $href);
- $ft['full_path'] = z_root() . (($data) ? '/cloud/' . $nick .'/' . $data['display_path'] : $href);
+ $ft['rel_path'] = (($data) ? '/cloud/' . $nick .'/' . $display_path_encoded : $href_encoded);
+ $ft['full_path'] = z_root() . (($data) ? '/cloud/' . $nick .'/' . $display_path_encoded : $href_encoded);
$ft['name'] = $name;
$ft['type'] = $type;
$ft['size'] = $size;
@@ -399,7 +403,6 @@ class Browser extends DAV\Browser\Plugin {
'$allow_gid' => ((isset($channel_acl['allow_gid'])) ? acl2json($channel_acl['allow_gid']) : ''),
'$deny_cid' => ((isset($channel_acl['deny_cid'])) ? acl2json($channel_acl['deny_cid']) : ''),
'$deny_gid' => ((isset($channel_acl['deny_gid'])) ? acl2json($channel_acl['deny_gid']) : ''),
- '$is_owner' => $is_owner,
'$select_all_label' => t('Select All'),
'$bulk_actions_label' => t('Bulk Actions'),
'$adjust_permissions_label' => t('Adjust Permissions'),
diff --git a/Zotlabs/Storage/GitRepo.php b/Zotlabs/Storage/GitRepo.php
deleted file mode 100644
index 306abc0ba..000000000
--- a/Zotlabs/Storage/GitRepo.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-
-namespace Zotlabs\Storage;
-
-use PHPGit\Git as PHPGit;
-
-require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies
-
-/**
- * Wrapper class for PHPGit class for git repositories managed by Hubzilla
- *
- * @author Andrew Manning <andrewmanning@grid.reticu.li>
- */
-class GitRepo {
-
- public $url = null;
- public $name = null;
- private $path = null;
- private $channel = null;
- public $git = null;
- private $repoBasePath = null;
-
- function __construct($channel = 'sys', $url = null, $clone = false, $name = null, $path = null) {
-
- if ($channel === 'sys' && !is_site_admin()) {
- logger('Only admin can use channel sys');
- return null;
- }
-
- $this->repoBasePath = __DIR__ . '/../../store/git';
- $this->channel = $channel;
- $this->git = new PHPGit();
-
- // Allow custom path for repo in the case of , for example
- if ($path) {
- $this->path = $path;
- } else {
- $this->path = $this->repoBasePath . "/" . $this->channel . "/" . $this->name;
- }
-
- if ($this->isValidGitRepoURL($url)) {
- $this->url = $url;
- }
-
- if ($name) {
- $this->name = $name;
- } else {
- $this->name = $this->getRepoNameFromURL($url);
- }
- if (!$this->name) {
- logger('Error creating GitRepo. No repo name found.');
- return null;
- }
-
- if (is_dir($this->path)) {
- // ignore the $url input if it exists
- // TODO: Check if the path is either empty or is a valid git repo and error if not
- $this->git->setRepository($this->path);
- // TODO: get repo metadata
- return;
- }
-
- if ($this->url) {
- // create the folder and clone the repo at url to that folder if $clone is true
- if ($clone) {
- if (mkdir($this->path, 0770, true)) {
- $this->git->setRepository($this->path);
- if (!$this->cloneRepo()) {
- // TODO: throw error
- logger('git clone failed: ' . json_encode($this->git));
- }
- } else {
- logger('git repo path could not be created: ' . json_encode($this->git));
- }
- }
- }
- }
-
- public function initRepo() {
- if(!$this->path) return false;
- try {
- return $this->git->init($this->path);
- } catch (\PHPGit\Exception\GitException $ex) {
- return false;
- }
- }
-
- public function pull() {
- try {
- $success = $this->git->pull();
- } catch (\PHPGit\Exception\GitException $ex) {
- return false;
- }
- return $success;
- }
-
- public function getRepoPath() {
- return $this->path;
- }
-
- public function setRepoPath($directory) {
- if (is_dir($directory)) {
- $this->path->$directory;
- $this->git->setRepository($directory);
- return true;
- }
- return false;
- }
-
- public function setIdentity($user_name, $user_email) {
- // setup user for commit messages
- $this->git->config->set("user.name", $user_name, ['global' => false, 'system' => false]);
- $this->git->config->set("user.email", $user_email, ['global' => false, 'system' => false]);
- }
-
- public function cloneRepo() {
- if (validate_url($this->url) && $this->isValidGitRepoURL($this->url) && is_dir($this->path)) {
- return $this->git->clone($this->url, $this->path);
- }
- }
-
- public function probeRepo() {
- $git = $this->git;
- $repo = array();
- $repo['remote'] = $git->remote();
- $repo['branches'] = $git->branch(['all' => true]);
- $repo['logs'] = $git->log(array('limit' => 50));
- return $repo;
- }
-
- // Commit changes to the repo. Default is to stage all changes and commit everything.
- public function commit($msg, $options = array()) {
- try {
- return $this->git->commit($msg, $options);
- } catch (\PHPGit\Exception\GitException $ex) {
- return false;
- }
- }
-
- public static function isValidGitRepoURL($url) {
- if (validate_url($url) && strrpos(parse_url($url, PHP_URL_PATH), '.')) {
- return true;
- } else {
- return false;
- }
- }
-
- public static function getRepoNameFromURL($url) {
- $urlpath = parse_url($url, PHP_URL_PATH);
- $lastslash = strrpos($urlpath, '/') + 1;
- $gitext = strrpos($urlpath, '.');
- if ($gitext) {
- return substr($urlpath, $lastslash, $gitext - $lastslash);
- } else {
- return null;
- }
- }
-
-}