aboutsummaryrefslogtreecommitdiffstats
path: root/mod/item.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/item.php')
-rw-r--r--mod/item.php26
1 files changed, 20 insertions, 6 deletions
diff --git a/mod/item.php b/mod/item.php
index 226d05d7e..c1feb5c96 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -225,12 +225,26 @@ function item_post(&$a) {
$channel = $a->get_channel();
}
else {
- $r = q("SELECT channel.*, account.* FROM channel left join account on channel.channel_account_id = account.account_id
- where channel.channel_id = %d LIMIT 1",
- intval($profile_uid)
- );
- if(count($r))
- $channel = $r[0];
+ $dest_channel = ((array_key_exists('dest_channel',$_REQUEST) && intval($_REQUEST['dest_channel'])) ? intval($_REQUEST['dest_channel']) : 0);
+
+ if(local_user() && $dest_channel) {
+ // posting as another channel which you control
+ $account = $a->get_account();
+ $r = q("select * from channel left join account on channel_account_id = account_id where account_d = %d and channel_id = %d limit 1",
+ intval($account['account_id']),
+ intval($dest_channel)
+ );
+ if($r)
+ $channel = $r[0];
+ }
+ else {
+ // posting as yourself but not necessarily to a channel you control
+ $r = q("select * from channel left join account on channel_account_id = account_id where channel_id = %d LIMIT 1",
+ intval($profile_uid)
+ );
+ if(count($r))
+ $channel = $r[0];
+ }
}
if(! $channel) {