aboutsummaryrefslogtreecommitdiffstats
path: root/mod/channel.php
diff options
context:
space:
mode:
authorzottel <github@zottel.net>2014-01-08 16:03:59 +0100
committerzottel <github@zottel.net>2014-01-08 16:03:59 +0100
commit9762b264cc51292c737a9c6ba223f4e6ec33550d (patch)
tree4708a25c21f2a3151e0eb1790d9d7f744a2057a8 /mod/channel.php
parent73102f0c261be1ca54bf454264ea85fa266bfab8 (diff)
downloadvolse-hubzilla-9762b264cc51292c737a9c6ba223f4e6ec33550d.tar.gz
volse-hubzilla-9762b264cc51292c737a9c6ba223f4e6ec33550d.tar.bz2
volse-hubzilla-9762b264cc51292c737a9c6ba223f4e6ec33550d.zip
Add display of a thread to channel module using channel/<channel>/?mid=<mid>
Diffstat (limited to 'mod/channel.php')
-rw-r--r--mod/channel.php76
1 files changed, 48 insertions, 28 deletions
diff --git a/mod/channel.php b/mod/channel.php
index 149936dd7..5d7c24206 100644
--- a/mod/channel.php
+++ b/mod/channel.php
@@ -47,6 +47,8 @@ function channel_content(&$a, $update = 0, $load = false) {
$category = $datequery = $datequery2 = '';
+ $mid = $_GET['mid'];
+
$datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
@@ -102,7 +104,7 @@ function channel_content(&$a, $update = 0, $load = false) {
);
- if($perms['post_wall']) {
+ if($perms['post_wall'] && (!$mid)) {
$x = array(
'is_owner' => $is_owner,
@@ -132,19 +134,24 @@ function channel_content(&$a, $update = 0, $load = false) {
if(($update) && (! $load)) {
-
- $r = q("SELECT distinct parent AS `item_id` from item
- left join abook on item.author_xchan = abook.abook_xchan
- WHERE uid = %d AND item_restrict = 0
- AND (item_flags & %d) AND ( item_flags & %d )
- AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
- $sql_extra
- ORDER BY created DESC",
- intval($a->profile['profile_uid']),
- intval(ITEM_WALL),
- intval(ITEM_UNSEEN),
- intval(ABOOK_FLAG_BLOCKED)
- );
+ if ($mid) {
+ $r = q("SELECT parent AS item_id from item where mid = '%s' limit 1",
+ dbesc($mid)
+ );
+ } else {
+ $r = q("SELECT distinct parent AS `item_id` from item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE uid = %d AND item_restrict = 0
+ AND (item_flags & %d) AND ( item_flags & %d )
+ AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
+ $sql_extra
+ ORDER BY created DESC",
+ intval($a->profile['profile_uid']),
+ intval(ITEM_WALL),
+ intval(ITEM_UNSEEN),
+ intval(ABOOK_FLAG_BLOCKED)
+ );
+ }
}
else {
@@ -166,19 +173,24 @@ function channel_content(&$a, $update = 0, $load = false) {
$pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
if($load || ($_COOKIE['jsAvailable'] != 1)) {
- $r = q("SELECT distinct id AS item_id FROM item
- left join abook on item.author_xchan = abook.abook_xchan
- WHERE uid = %d AND item_restrict = 0
- AND (item_flags & %d) and (item_flags & %d)
- AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
- $sql_extra $sql_extra2
- ORDER BY created DESC $pager_sql ",
- intval($a->profile['profile_uid']),
- intval(ITEM_WALL),
- intval(ITEM_THREAD_TOP),
- intval(ABOOK_FLAG_BLOCKED)
-
- );
+ if ($mid) {
+ $r = q("SELECT parent AS item_id from item where mid = '%s' limit 1",
+ dbesc($mid)
+ );
+ } else {
+ $r = q("SELECT distinct id AS item_id FROM item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE uid = %d AND item_restrict = 0
+ AND (item_flags & %d) and (item_flags & %d)
+ AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
+ $sql_extra $sql_extra2
+ ORDER BY created DESC $pager_sql ",
+ intval($a->profile['profile_uid']),
+ intval(ITEM_WALL),
+ intval(ITEM_THREAD_TOP),
+ intval(ABOOK_FLAG_BLOCKED)
+ );
+ }
}
else {
$r = array();
@@ -202,6 +214,14 @@ function channel_content(&$a, $update = 0, $load = false) {
$items = fetch_post_tags($items, true);
$items = conv_sort($items,'created');
+ if ($mid && (! count($items))) {
+ // This will happen if channel is called with a mid from another
+ // channel, if we don't have sufficient permissions to view the
+ // item, or if it doesn't exist.
+ // Do we need separate error messages for that?
+ notice( t('Item not found.') . EOL);
+ }
+
} else {
$items = array();
}
@@ -235,7 +255,7 @@ function channel_content(&$a, $update = 0, $load = false) {
'$order' => '',
'$file' => '',
'$cats' => (($category) ? $category : ''),
- '$mid' => '',
+ '$mid' => $mid,
'$dend' => $datequery,
'$dbegin' => $datequery2
));