aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/chanman.php31
-rw-r--r--mod/cloud.php8
-rw-r--r--mod/filestorage.php47
-rw-r--r--mod/import.php2
-rw-r--r--mod/locs.php90
-rw-r--r--mod/photos.php9
-rw-r--r--mod/siteinfo.php5
-rw-r--r--mod/webpages.php4
8 files changed, 132 insertions, 64 deletions
diff --git a/mod/chanman.php b/mod/chanman.php
deleted file mode 100644
index 7a89708d7..000000000
--- a/mod/chanman.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php /** @file */
-
-
-/**
- Placeholder file at present. This is going to involve a bit of work.
-
- This file will deal with the deletion of channels and management of hublocs.
-
- We need to provide the following functionality:
-
- - Delete my account and all channels from the entire network
-
- - Delete my account and all channels from this server
-
- - Delete a channel from the entire network
-
- - Delete a channel from this server
-
- - List all hub locations for this channel
-
- - Remove this/some hub location from this channel
-
- - promote this/some hub location to primary
-
- - Remove hub location 'xyz' from this channel, (this should possibly only be allowed if that hub has been down for a period of time)
-
- - Some of these actions should probably require email verification
-
-*/
-
-
diff --git a/mod/cloud.php b/mod/cloud.php
index 149a6da5d..27724f6b0 100644
--- a/mod/cloud.php
+++ b/mod/cloud.php
@@ -63,7 +63,7 @@ function cloud_init(&$a) {
if ($which)
profile_load($a, $which, $profile);
- $auth = new RedBasicAuth();
+ $auth = new RedDAV\RedBasicAuth();
$ob_hash = get_observer_hash();
@@ -91,7 +91,7 @@ function cloud_init(&$a) {
$_SERVER['REQUEST_URI'] = strip_zids($_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['REQUEST_URI']);
- $rootDirectory = new RedDirectory('/', $auth);
+ $rootDirectory = new RedDAV\RedDirectory('/', $auth);
// A SabreDAV server-object
$server = new DAV\Server($rootDirectory);
@@ -117,7 +117,7 @@ function cloud_init(&$a) {
if ((! $auth->observer) && ($_SERVER['REQUEST_METHOD'] === 'GET')) {
try {
$x = RedFileData('/' . $a->cmd, $auth);
- if($x instanceof RedFile)
+ if($x instanceof RedDAV\RedFile)
$isapublic_file = true;
}
catch (Exception $e) {
@@ -150,4 +150,4 @@ function cloud_init(&$a) {
$server->exec();
killme();
-} \ No newline at end of file
+}
diff --git a/mod/filestorage.php b/mod/filestorage.php
index 383af84fc..e27087a92 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -1,18 +1,26 @@
<?php
+/**
+ * @file mod/filestorage.php
+ *
+ */
require_once('include/attach.php');
+/**
+ *
+ * @param object &$a
+ */
function filestorage_post(&$a) {
- $channel_id = ((x($_POST,'uid')) ? intval($_POST['uid']) : 0);
+ $channel_id = ((x($_POST, 'uid')) ? intval($_POST['uid']) : 0);
if((! $channel_id) || (! local_user()) || ($channel_id != local_user())) {
notice( t('Permission denied.') . EOL);
return;
}
- $recurse = ((x($_POST,'recurse')) ? intval($_POST['recurse']) : 0);
- $resource = ((x($_POST,'filehash')) ? notags($_POST['filehash']) : '');
+ $recurse = ((x($_POST, 'recurse')) ? intval($_POST['recurse']) : 0);
+ $resource = ((x($_POST, 'filehash')) ? notags($_POST['filehash']) : '');
if(! $resource) {
notice(t('Item not found.') . EOL);
@@ -24,11 +32,11 @@ function filestorage_post(&$a) {
$str_group_deny = perms2str($_REQUEST['group_deny']);
$str_contact_deny = perms2str($_REQUEST['contact_deny']);
- attach_change_permissions($channel_id,$resource,$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny,$recurse = false);
+ attach_change_permissions($channel_id, $resource, $str_contact_allow, $str_group_allow, $str_contact_deny,$str_group_deny, $recurse = false);
//Build directory tree and redirect
$channel = $a->get_channel();
- $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource) ;
+ $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource);
goaway($cloudPath);
}
@@ -53,15 +61,15 @@ function filestorage_content(&$a) {
$observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- $perms = get_all_perms($owner,$ob_hash);
+ $perms = get_all_perms($owner, $ob_hash);
if(! $perms['view_storage']) {
notice( t('Permission denied.') . EOL);
return;
}
- // Since we have ACL'd files in the wild, but don't have ACL here yet, we
- // need to return for anyone other than the owner, despite the perms check for now.
+ // Since we have ACL'd files in the wild, but don't have ACL here yet, we
+ // need to return for anyone other than the owner, despite the perms check for now.
$is_owner = (((local_user()) && ($owner == local_user())) ? true : false);
if(! $is_owner) {
@@ -69,7 +77,6 @@ function filestorage_content(&$a) {
return;
}
-
if(argc() > 3 && argv(3) === 'delete') {
if(! $perms['write_storage']) {
notice( t('Permission denied.') . EOL);
@@ -77,7 +84,7 @@ function filestorage_content(&$a) {
}
$file = intval(argv(2));
- $r = q("select hash from attach where id = %d and uid = %d limit 1",
+ $r = q("SELECT hash FROM attach WHERE id = %d AND uid = %d LIMIT 1",
dbesc($file),
intval($owner)
);
@@ -86,11 +93,15 @@ function filestorage_content(&$a) {
goaway(z_root() . '/cloud/' . $which);
}
- attach_delete($owner,$r[0]['hash']);
-
- goaway(z_root() . '/cloud/' . $which);
- }
+ $f = $r[0];
+ $channel = $a->get_channel();
+
+ $parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
+ attach_delete($owner, $f['hash']);
+
+ goaway($parentpath);
+ }
if(argc() > 3 && argv(3) === 'edit') {
require_once('include/acl_selectors.php');
@@ -106,18 +117,16 @@ function filestorage_content(&$a) {
);
$f = $r[0];
-
$channel = $a->get_channel();
$cloudpath = get_cloudpath($f) . (($f['flags'] & ATTACH_FLAG_DIR) ? '?f=&davguest=1' : '');
$parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
- $aclselect_e = populate_acl($f,false);
+ $aclselect_e = populate_acl($f, false);
$is_a_dir = (($f['flags'] & ATTACH_FLAG_DIR) ? true : false);
$lockstate = (($f['allow_cid'] || $f['allow_gid'] || $f['deny_cid'] || $f['deny_gid']) ? 'lock' : 'unlock');
-
$o = replace_macros(get_markup_template('attach_edit.tpl'), array(
'$header' => t('Edit file permissions'),
'$file' => $f,
@@ -135,12 +144,10 @@ function filestorage_content(&$a) {
'$cpdesc' => t('Copy/paste this code to attach file to a post'),
'$cpldesc' => t('Copy/paste this URL to link file from a web page'),
'$submit' => t('Submit')
-
));
return $o;
- }
+ }
goaway(z_root() . '/cloud/' . $which);
-
}
diff --git a/mod/import.php b/mod/import.php
index 3cf114d66..44dfcc38d 100644
--- a/mod/import.php
+++ b/mod/import.php
@@ -344,7 +344,7 @@ function import_post(&$a) {
unset($group['id']);
$group['uid'] = $channel['channel_id'];
dbesc_array($group);
- $r = dbq("INSERT INTO group (`"
+ $r = dbq("INSERT INTO groups (`"
. implode("`, `", array_keys($group))
. "`) VALUES ('"
. implode("', '", array_values($group))
diff --git a/mod/locs.php b/mod/locs.php
new file mode 100644
index 000000000..95aa7a579
--- /dev/null
+++ b/mod/locs.php
@@ -0,0 +1,90 @@
+<?php /** @file */
+
+
+/**
+ Placeholder file at present. This is going to involve a bit of work.
+
+ This file will deal with the deletion of channels and management of hublocs.
+
+ We need to provide the following functionality:
+
+ - Delete my account and all channels from the entire network
+
+ - Delete my account and all channels from this server
+
+ - Delete a channel from the entire network
+
+ - Delete a channel from this server
+
+ - List all hub locations for this channel
+
+ - Remove this/some hub location from this channel
+
+ - promote this/some hub location to primary
+
+ - Remove hub location 'xyz' from this channel, (this should possibly only be allowed if that hub has been down for a period of time)
+
+ - Some of these actions should probably require email verification
+
+*/
+
+
+function locs_post(&$a) {
+
+ if(! local_user())
+ return;
+
+ $channel = $a->get_channel();
+
+ if($_REQUEST['primary']) {
+ $hubloc_id = intval($_REQUEST['primary']);
+ if($hubloc_id) {
+ $r = q("select hubloc_id from hubloc where hubloc_id = %d and hubloc_hash = '%s' limit 1",
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ if(! $r) {
+ notice( t('Location not found.') . EOL);
+ return;
+ }
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags ^ %d) where (hubloc_flags & %d) and hubloc_hash = '%s' ",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ intval(HUBLOC_FLAGS_PRIMARY),
+ dbesc($channel['channel_hash'])
+ );
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & %d) where hubloc_id = %d and hubloc_hash = '%s' limit 1",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ return;
+ }
+ }
+
+ if($_REQUEST['drop']) {
+ $hubloc_id = intval($_REQUEST['drop']);
+ if($hubloc_id) {
+ $r = q("select hubloc_id, hubloc_flags from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' limit 1",
+ intval($hubloc_id),
+ dbesc(z_root()),
+ dbesc($channel['channel_hash'])
+ );
+ if(! $r) {
+ notice( t('Location not found.') . EOL);
+ return;
+ }
+ if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) {
+ notice( t('Primary location cannot be removed.') . EOL);
+ return;
+ }
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & %d) where hubloc_id = %d and hubloc_hash = '%s' limit 1",
+ intval(HUBLOC_FLAGS_DELETED),
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ return;
+ }
+ }
+} \ No newline at end of file
diff --git a/mod/photos.php b/mod/photos.php
index dc593f22b..2b859b7f1 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -999,7 +999,7 @@ function photos_content(&$a) {
$comments = '';
if(! count($r)) {
if($can_post || $can_comment) {
- $comments .= replace_macros($cmnt_tpl,array(
+ $commentbox = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$mode' => 'photos',
'$jsreload' => $return_url,
@@ -1070,7 +1070,7 @@ function photos_content(&$a) {
$body_e = prepare_text($item['body'],$item['mimetype']);
$comments .= replace_macros($template,array(
- '$id' => $item['item_id'],
+ '$id' => $item['id'],
'$mode' => 'photos',
'$profile_url' => $profile_link,
'$name' => $name_e,
@@ -1079,7 +1079,7 @@ function photos_content(&$a) {
'$title' => $title_e,
'$body' => $body_e,
'$ago' => relative_date($item['created']),
- '$indent' => (($item['parent'] != $item['item_id']) ? ' comment' : ''),
+ '$indent' => (($item['parent'] != $item['id']) ? ' comment' : ''),
'$drop' => $drop,
'$comment' => $comment
));
@@ -1087,7 +1087,7 @@ function photos_content(&$a) {
}
if($can_post || $can_comment) {
- $comments .= replace_macros($cmnt_tpl,array(
+ $commentbox = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$jsreload' => $return_url,
'$type' => 'wall-comment',
@@ -1129,6 +1129,7 @@ function photos_content(&$a) {
'$like' => $like_e,
'$dislike' => $dislike_e,
'$comments' => $comments,
+ '$commentbox' => $commentbox,
'$paginate' => $paginate,
));
diff --git a/mod/siteinfo.php b/mod/siteinfo.php
index c1d65fadd..a58f17c53 100644
--- a/mod/siteinfo.php
+++ b/mod/siteinfo.php
@@ -88,8 +88,10 @@ function siteinfo_content(&$a) {
if(! get_config('system','hidden_version_siteinfo')) {
$version = sprintf( t('Version %s'), RED_VERSION );
- if(@is_dir('.git') && function_exists('shell_exec'))
+ if(@is_dir('.git') && function_exists('shell_exec')) {
$commit = @shell_exec('git log -1 --format="%h"');
+ $tag = @shell_exec('git describe --tags --abbrev=0');
+ }
if(! isset($commit) || strlen($commit) > 16)
$commit = '';
}
@@ -130,6 +132,7 @@ function siteinfo_content(&$a) {
'$title' => t('Red'),
'$description' => t('This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites.'),
'$version' => $version,
+ '$tag' => $tag,
'$commit' => $commit,
'$web_location' => t('Running at web location') . ' ' . z_root(),
'$visit' => t('Please visit <a href="http://getzot.com">GetZot.com</a> to learn more about the Red Matrix.'),
diff --git a/mod/webpages.php b/mod/webpages.php
index 2c3cc36ea..a5cfd00e6 100644
--- a/mod/webpages.php
+++ b/mod/webpages.php
@@ -81,9 +81,6 @@ function webpages_content(&$a) {
require_once('include/conversation.php');
$o = profile_tabs($a,true);
- $o .= '<div class="generic-content-wrapper-styled">';
-
- $o .= '<h2>' . t('Webpages') . '</h2>';
$x = array(
'webpage' => ITEM_WEBPAGE,
@@ -129,6 +126,7 @@ function webpages_content(&$a) {
$url = z_root() . "/editwebpage/" . $which;
// This isn't pretty, but it works. Until I figure out what to do with the UI, it's Good Enough(TM).
return $o . replace_macros(get_markup_template("webpagelist.tpl"), array(
+ '$listtitle' => t('Webpages'),
'$baseurl' => $url,
'$edit' => t('Edit'),
'$pages' => $pages,