aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2013-10-27 20:01:28 -0700
committerfriendica <info@friendica.com>2013-10-27 20:01:28 -0700
commit9b7994a9b785bac7ae8314ae398352d336b26aef (patch)
tree8934df6302de0effe1be6d1513dde5ba872a6038
parentc9f51d78605250582002627cf43fc38a4fb03d13 (diff)
downloadvolse-hubzilla-9b7994a9b785bac7ae8314ae398352d336b26aef.tar.gz
volse-hubzilla-9b7994a9b785bac7ae8314ae398352d336b26aef.tar.bz2
volse-hubzilla-9b7994a9b785bac7ae8314ae398352d336b26aef.zip
remote post module so that from anywhere on the web or at least within the matrix you'll be able to share content or we can have apps on other sites that post status updates on your wall. All with your permission of course as you'll have to click "share" to actually post it.
-rw-r--r--include/conversation.php4
-rw-r--r--mod/editpost.php6
-rw-r--r--mod/rpost.php90
3 files changed, 96 insertions, 4 deletions
diff --git a/include/conversation.php b/include/conversation.php
index a8b3150b4..497c2fda7 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1096,7 +1096,7 @@ function status_editor($a,$x,$popup=false) {
'$shortsetloc' => t('set location'),
'$noloc' => t('Clear browser location'),
'$shortnoloc' => t('clear location'),
- '$title' => "",
+ '$title' => ((x($x,'title')) ? htmlspecialchars($x['title']) : ''),
'$placeholdertitle' => t('Set title'),
'$catsenabled' => ((feature_enabled($x['profile_uid'],'categories') && (! $webpage)) ? 'categories' : ''),
'$category' => "",
@@ -1105,7 +1105,7 @@ function status_editor($a,$x,$popup=false) {
'$permset' => t('Permission settings'),
'$shortpermset' => t('permissions'),
'$ptyp' => (($notes_cid) ? 'note' : 'wall'),
- '$content' => '',
+ '$content' => ((x($x,'body')) ? htmlspecialchars($x['body']) : ''),
'$post_id' => '',
'$baseurl' => $a->get_baseurl(true),
'$defloc' => $x['default_location'],
diff --git a/mod/editpost.php b/mod/editpost.php
index 8d510ce05..161e8f301 100644
--- a/mod/editpost.php
+++ b/mod/editpost.php
@@ -1,4 +1,4 @@
-<?php
+<?php /** @file */
require_once('acl_selectors.php');
require_once('include/crypto.php');
@@ -36,6 +36,8 @@ function editpost_content(&$a) {
if(feature_enabled(local_user(),'richtext'))
$plaintext = false;
+ $channel = $a->get_channel();
+
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit post')
));
@@ -46,7 +48,7 @@ function editpost_content(&$a) {
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
'$geotag' => $geotag,
- '$nickname' => $a->user['nickname']
+ '$nickname' => $channel['channel_address']
));
diff --git a/mod/rpost.php b/mod/rpost.php
new file mode 100644
index 000000000..78adb5e34
--- /dev/null
+++ b/mod/rpost.php
@@ -0,0 +1,90 @@
+<?php /** @file */
+
+require_once('acl_selectors.php');
+require_once('include/crypto.php');
+require_once('include/items.php');
+require_once('include/taxonomy.php');
+require_once('include/conversation.php');
+
+/**
+ * remote post
+ *
+ * https://yoursite/rpost?f=&title=&body=&remote_return=
+ *
+ * This can be called via either GET or POST, use POST for long body content as suhosin often limits GET parameter length
+ *
+ * f= placeholder, often required
+ * title= Title of post
+ * body= Body of post
+ * remote_return= absolute URL to return after posting is finished
+ *
+ * currently content type is Red Matrix bbcode, though HTML is possible. This is left as an exercise for future developers
+ */
+
+
+
+function rpost_content(&$a) {
+
+ $o = '';
+
+ if(! local_user()) {
+ // FIXME
+ // probably need to figure out how to preserve the $_REQUEST variables in the session
+ // in case you aren't currently logged in. Otherwise you'll have to go back to
+ // the site that sent you here and try again.
+ return login();
+ }
+
+ if($_REQUEST['remote_return']) {
+ $_SESSION['remote_return'] = $_REQUEST['remote_return'];
+ }
+ if(argc() > 1 && argv(1) === 'return' && $_SESSION['remote_return']) {
+ goaway($_SESSION['remote_return']);
+ }
+
+ $plaintext = true;
+ if(feature_enabled(local_user(),'richtext'))
+ $plaintext = false;
+
+
+ $channel = $a->get_channel();
+
+ $o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
+ '$title' => t('Edit post')
+ ));
+
+
+ $a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array(
+ '$baseurl' => $a->get_baseurl(),
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
+ '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
+ '$geotag' => $geotag,
+ '$nickname' => $channel['channel_address']
+ ));
+
+
+
+ $x = array(
+ 'is_owner' => true,
+ 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
+ 'default_location' => $channel['channel_location'],
+ 'nickname' => $channel['channel_address'],
+ 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
+ || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
+ 'acl' => populate_acl($channel, $false),
+ 'bang' => '',
+ 'visitor' => 'block',
+ 'profile_uid' => local_user(),
+ 'title' => $_REQUEST['title'],
+ 'body' => $_REQUEST['body'],
+ 'return_path' => 'rpost/return'
+ );
+
+
+ $o .= status_editor($a,$x);
+
+ return $o;
+
+}
+
+