2010-07-17 02:16:50 +02:00
< ? php
function network_init ( & $a ) {
2010-07-26 01:27:22 +02:00
require_once ( 'include/group.php' );
$a -> page [ 'aside' ] .= group_side ( 'network' , 'network' );
2010-07-17 02:16:50 +02:00
}
2010-07-25 00:21:33 +02:00
function network_content ( & $a , $update = false ) {
2010-07-17 02:16:50 +02:00
if ( ! local_user ())
return ;
require_once ( " include/bbcode.php " );
$contact_id = $a -> cid ;
2010-07-26 01:27:22 +02:00
$group = 0 ;
2010-07-20 14:21:19 +02:00
2010-07-25 00:21:33 +02:00
if ( ! $update ) {
2010-07-26 01:27:22 +02:00
// pull out the group here because the updater might have different args
if ( $a -> argc > 1 )
$group = intval ( $a -> argv [ 1 ]);
2010-07-25 00:21:33 +02:00
2010-07-26 13:22:19 +02:00
$_SESSION [ 'return_url' ] = $a -> cmd ;
2010-07-25 00:21:33 +02:00
$tpl = file_get_contents ( 'view/jot-header.tpl' );
2010-07-17 02:16:50 +02:00
2010-07-25 00:21:33 +02:00
$a -> page [ 'htmlhead' ] .= replace_macros ( $tpl , array ( '$baseurl' => $a -> get_baseurl ()));
require_once ( 'view/acl_selectors.php' );
$tpl = file_get_contents ( " view/jot.tpl " );
2010-07-17 16:03:06 +02:00
2010-07-25 00:21:33 +02:00
$o .= replace_macros ( $tpl , array (
'$return_path' => $a -> cmd ,
'$baseurl' => $a -> get_baseurl (),
'$visitor' => 'block' ,
'$lockstate' => 'unlock' ,
2010-08-08 08:54:22 +02:00
'$acl' => populate_acl ( $a -> user ),
2010-07-25 00:21:33 +02:00
'$profile_uid' => $_SESSION [ 'uid' ]
));
2010-07-17 02:16:50 +02:00
2010-07-26 01:27:22 +02:00
// The special div is needed for liveUpdate to kick in for this page.
// We only launch liveUpdate if you are on the front page, you aren't
// filtering by group and also you aren't writing a comment (the last
// criteria is discovered in javascript).
if ( $a -> pager [ 'start' ] == 0 && $a -> argc == 1 )
$o .= '<div id="live-network"></div>' . " \r \n " ;
2010-07-25 00:21:33 +02:00
}
2010-07-17 02:16:50 +02:00
2010-07-26 01:27:22 +02:00
// We aren't going to try and figure out at the item, group, and page level
// which items you've seen and which you haven't. You're looking at some
// subset of items, so just mark everything seen.
2010-07-25 00:21:33 +02:00
$r = q ( " UPDATE `item` SET `unseen` = 0
WHERE `unseen` = 1 AND `uid` = % d " ,
intval ( $_SESSION [ 'uid' ])
);
2010-07-17 02:16:50 +02:00
2010-07-26 01:27:22 +02:00
// We don't have to deal with ACL's on this page. You're looking at everything
// that belongs to you, hence you can see all of it. We will filter by group if
// desired.
2010-07-24 15:56:02 +02:00
2010-08-13 14:47:16 +02:00
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `type` IN ('wall', 'photo', 'remote' )) " ;
2010-07-17 02:16:50 +02:00
2010-07-26 01:27:22 +02:00
if ( $group ) {
2010-08-11 10:48:43 +02:00
$r = q ( " SELECT `name`, `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
2010-07-26 01:27:22 +02:00
intval ( $group ),
intval ( $_SESSION [ 'uid' ])
);
if ( ! count ( $r )) {
2010-08-12 00:40:18 +02:00
notice ( t ( 'No such group' ) . EOL );
2010-07-26 01:27:22 +02:00
goaway ( $a -> get_baseurl () . '/network' );
return ; // NOTREACHED
}
$contacts = expand_groups ( array ( $group ));
$contact_str = implode ( ',' , $contacts );
2010-08-13 14:52:28 +02:00
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `type` IN ('wall', 'photo', 'remote') AND `contact-id` IN ( $contact_str )) " ;
2010-08-11 10:48:43 +02:00
$o = '<h4>' . t ( 'Group: ' ) . $r [ 0 ][ 'name' ] . '</h4>' . $o ;
2010-07-26 01:27:22 +02:00
}
2010-07-17 02:16:50 +02:00
$r = q ( " SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact` . `id` = `item` . `contact-id`
WHERE `item` . `uid` = % d AND `item` . `visible` = 1 AND `item` . `deleted` = 0
2010-07-19 15:58:03 +02:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2010-07-17 02:16:50 +02:00
$sql_extra " ,
intval ( $_SESSION [ 'uid' ])
);
if ( count ( $r ))
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
$r = q ( " SELECT `item`.*, `item`.`id` AS `item_id`,
`contact` . `name` , `contact` . `photo` , `contact` . `url` ,
`contact` . `thumb` , `contact` . `dfrn-id` , `contact` . `self` ,
`contact` . `id` AS `cid` , `contact` . `uid` AS `contact-uid`
FROM `item` LEFT JOIN `contact` ON `contact` . `id` = `item` . `contact-id`
WHERE `item` . `uid` = % d AND `item` . `visible` = 1 AND `item` . `deleted` = 0
2010-07-19 15:58:03 +02:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2010-07-17 02:16:50 +02:00
$sql_extra
2010-07-19 05:49:10 +02:00
ORDER BY `parent` DESC , `created` ASC LIMIT % d , % d " ,
2010-07-17 02:16:50 +02:00
intval ( $_SESSION [ 'uid' ]),
intval ( $a -> pager [ 'start' ]),
intval ( $a -> pager [ 'itemspage' ])
);
$cmnt_tpl = file_get_contents ( 'view/comment_item.tpl' );
$tpl = file_get_contents ( 'view/wall_item.tpl' );
$wallwall = file_get_contents ( 'view/wallwall_item.tpl' );
if ( count ( $r )) {
2010-07-17 08:14:37 +02:00
foreach ( $r as $item ) {
2010-07-17 02:16:50 +02:00
$comment = '' ;
2010-07-17 08:14:37 +02:00
$template = $tpl ;
$commentww = '' ;
2010-07-17 16:03:06 +02:00
$profile_url = $item [ 'url' ];
$redirect_url = $a -> get_baseurl () . '/redir/' . $item [ 'cid' ] ;
// Top-level wall post not written by the wall owner (wall-to-wall)
// First figure out who owns it.
2010-07-17 08:14:37 +02:00
if (( $item [ 'parent' ] == $item [ 'item_id' ]) && ( ! $item [ 'self' ])) {
2010-07-17 16:03:06 +02:00
2010-07-17 08:14:37 +02:00
if ( $item [ 'type' ] == 'wall' ) {
2010-07-17 16:03:06 +02:00
// I do. Put me on the left of the wall-to-wall notice.
2010-07-17 08:14:37 +02:00
$owner_url = $a -> contact [ 'url' ];
$owner_photo = $a -> contact [ 'thumb' ];
$owner_name = $a -> contact [ 'name' ];
$template = $wallwall ;
$commentww = 'ww' ;
}
2010-07-19 08:23:18 +02:00
if ( $item [ 'type' ] == 'remote' && ( $item [ 'owner-link' ] != $item [ 'author-link' ])) {
2010-07-17 16:03:06 +02:00
// Could be anybody.
2010-07-17 08:14:37 +02:00
$owner_url = $item [ 'owner-link' ];
$owner_photo = $item [ 'owner-avatar' ];
$owner_name = $item [ 'owner-name' ];
$template = $wallwall ;
2010-07-17 16:03:06 +02:00
$commentww = 'ww' ;
// If it is our contact, use a friendly redirect link
2010-08-19 13:59:31 +02:00
if (( $item [ 'owner-link' ] == $item [ 'url' ]) && ( $item [ 'rel' ] == DIRECTION_IN || $item [ 'rel' ] == DIRECTION_BOTH ))
$owner_url = $redirect_url ;
2010-07-17 16:03:06 +02:00
$owner_url = $redirect_url ;
2010-07-17 08:14:37 +02:00
}
}
2010-07-17 02:16:50 +02:00
2010-07-25 08:20:20 +02:00
if ( $update )
$return_url = $_SESSION [ 'return_url' ];
else
$return_url = $_SESSION [ 'return_url' ] = $a -> cmd ;
2010-07-17 08:14:37 +02:00
if ( $item [ 'last-child' ]) {
2010-07-17 02:16:50 +02:00
$comment = replace_macros ( $cmnt_tpl , array (
2010-07-25 08:20:20 +02:00
'$return_path' => $_SESSION [ 'return_url' ],
2010-07-26 07:51:45 +02:00
'$type' => 'net-comment' ,
2010-07-17 08:14:37 +02:00
'$id' => $item [ 'item_id' ],
'$parent' => $item [ 'parent' ],
'$profile_uid' => $_SESSION [ 'uid' ],
2010-08-11 06:22:36 +02:00
'$mylink' => $a -> contact [ 'url' ],
'$mytitle' => t ( 'Me' ),
'$myphoto' => $a -> contact [ 'thumb' ],
2010-07-17 08:14:37 +02:00
'$ww' => $commentww
2010-07-17 02:16:50 +02:00
));
}
2010-07-26 07:51:45 +02:00
$drop = replace_macros ( file_get_contents ( 'view/wall_item_drop.tpl' ), array ( '$id' => $item [ 'id' ]));
2010-07-17 02:16:50 +02:00
2010-08-20 04:07:19 +02:00
if (( $item [ 'contact-uid' ] == $_SESSION [ 'uid' ]) && ( $item [ 'rel' ] == DIRECTION_IN || $item [ 'rel' ] == DIRECTION_BOTH ) && ( ! $item [ 'self' ] ))
2010-07-17 16:03:06 +02:00
$profile_url = $redirect_url ;
2010-07-17 02:16:50 +02:00
$photo = $item [ 'photo' ];
$thumb = $item [ 'thumb' ];
2010-07-17 08:14:37 +02:00
2010-07-17 16:03:06 +02:00
// Post was remotely authored.
2010-07-19 08:23:18 +02:00
$profile_name = (( strlen ( $item [ 'author-name' ])) ? $item [ 'author-name' ] : $item [ 'name' ]);
$profile_avatar = (( strlen ( $item [ 'author-avatar' ])) ? $item [ 'author-avatar' ] : $thumb );
2010-07-17 02:16:50 +02:00
2010-07-17 16:03:06 +02:00
$profile_link = $profile_url ;
// Can we use our special contact URL for this author?
2010-07-19 08:23:18 +02:00
if ( strlen ( $item [ 'author-link' ])) {
if ( $item [ 'author-link' ] == $item [ 'url' ])
2010-07-17 16:03:06 +02:00
$profile_link = $redirect_url ;
else
2010-07-19 08:23:18 +02:00
$profile_link = $item [ 'author-link' ];
2010-07-17 16:03:06 +02:00
}
// Build the HTML
2010-07-17 02:16:50 +02:00
$o .= replace_macros ( $template , array (
'$id' => $item [ 'item_id' ],
'$profile_url' => $profile_link ,
'$name' => $profile_name ,
'$thumb' => $profile_avatar ,
2010-07-28 04:27:14 +02:00
'$title' => $item [ 'title' ],
2010-07-17 02:16:50 +02:00
'$body' => bbcode ( $item [ 'body' ]),
'$ago' => relative_date ( $item [ 'created' ]),
2010-08-19 13:59:31 +02:00
'$location' => (( $item [ 'location' ]) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode ( $item [ 'location' ]) . '">' . $item [ 'location' ] . '</a>' : '' ),
2010-07-24 14:52:29 +02:00
'$indent' => (( $item [ 'parent' ] != $item [ 'item_id' ]) ? ' comment' : '' ),
2010-07-17 02:16:50 +02:00
'$owner_url' => $owner_url ,
'$owner_photo' => $owner_photo ,
'$owner_name' => $owner_name ,
2010-07-26 07:51:45 +02:00
'$drop' => $drop ,
2010-07-17 02:16:50 +02:00
'$comment' => $comment
));
}
}
2010-07-25 00:21:33 +02:00
if ( ! $update )
$o .= paginate ( $a );
2010-07-17 02:16:50 +02:00
return $o ;
}