2010-07-17 02:16:50 +02:00
< ? php
function network_init ( & $a ) {
2011-01-20 23:25:44 +01:00
if ( ! local_user ()) {
2011-01-21 00:30:45 +01:00
notice ( t ( 'Permission denied.' ) . EOL );
2011-01-20 23:25:44 +01:00
return ;
}
2012-06-11 11:21:46 +02:00
2012-06-13 05:46:30 +02:00
$is_a_date_query = false ;
if ( $a -> argc > 1 ) {
for ( $x = 1 ; $x < $a -> argc ; $x ++ ) {
if ( is_a_date_arg ( $a -> argv [ $x ])) {
$is_a_date_query = true ;
break ;
}
}
}
2012-06-11 11:21:46 +02:00
// fetch last used tab and redirect if needed
$sel_tabs = network_query_get_sel_tab ( $a );
$last_sel_tabs = get_pconfig ( local_user (), 'network.view' , 'tab.selected' );
if ( is_array ( $last_sel_tabs )){
$tab_urls = array (
'/network?f=&order=comment' , //all
'/network?f=&order=post' , //postord
'/network?f=&conv=1' , //conv
'/network/new' , //new
'/network?f=&star=1' , //starred
'/network?f=&bmark=1' , //bookmarked
'/network?f=&spam=1' , //spam
);
// redirect if current selected tab is 'no_active' and
// last selected tab is _not_ 'all_active'.
2012-06-13 05:46:30 +02:00
// and this isn't a date query
if ( $sel_tabs [ 0 ] == 'active' && $last_sel_tabs [ 0 ] != 'active' && ( ! $is_a_date_query )) {
2012-06-11 11:21:46 +02:00
$k = array_search ( 'active' , $last_sel_tabs );
//echo "<pre>"; var_dump($sel_tabs, $last_sel_tabs, $tab_urlsm, $k, $tab_urls[$k]); killme();
goaway ( $a -> get_baseurl () . $tab_urls [ $k ]);
}
}
2011-07-01 15:14:15 +02:00
$group_id = (( $a -> argc > 1 && intval ( $a -> argv [ 1 ])) ? intval ( $a -> argv [ 1 ]) : 0 );
2010-07-26 01:27:22 +02:00
require_once ( 'include/group.php' );
2012-01-06 05:40:48 +01:00
require_once ( 'include/contact_widgets.php' );
2012-06-13 05:46:30 +02:00
require_once ( 'include/items.php' );
2012-01-06 05:40:48 +01:00
2010-11-01 00:38:22 +01:00
if ( ! x ( $a -> page , 'aside' ))
$a -> page [ 'aside' ] = '' ;
2011-01-20 02:56:36 +01:00
2011-05-27 02:47:33 +02:00
$search = (( x ( $_GET , 'search' )) ? escape_tags ( $_GET [ 'search' ]) : '' );
2011-09-06 09:55:24 +02:00
2011-09-05 02:35:06 +02:00
if ( x ( $_GET , 'save' )) {
$r = q ( " select * from `search` where `uid` = %d and `term` = '%s' limit 1 " ,
intval ( local_user ()),
dbesc ( $search )
);
if ( ! count ( $r )) {
q ( " insert into `search` ( `uid`,`term` ) values ( %d, '%s') " ,
intval ( local_user ()),
dbesc ( $search )
);
}
}
if ( x ( $_GET , 'remove' )) {
q ( " delete from `search` where `uid` = %d and `term` = '%s' limit 1 " ,
intval ( local_user ()),
dbesc ( $search )
);
}
2011-05-27 02:47:33 +02:00
2011-10-10 15:28:34 +02:00
2011-09-25 20:20:19 +02:00
// search terms header
if ( x ( $_GET , 'search' )) {
2012-01-03 01:54:37 +01:00
$a -> page [ 'content' ] .= '<h2>' . t ( 'Search Results For:' ) . ' ' . $search . '</h2>' ;
2011-09-25 20:20:19 +02:00
}
2012-06-13 05:46:30 +02:00
2011-07-01 15:14:15 +02:00
$a -> page [ 'aside' ] .= group_side ( 'network' , 'network' , true , $group_id );
2012-06-13 05:46:30 +02:00
$a -> page [ 'aside' ] .= posted_date_widget ( $a -> get_baseurl () . '/network' , local_user (), false );
2012-03-15 05:20:20 +01:00
$a -> page [ 'aside' ] .= networks_widget ( $a -> get_baseurl ( true ) . '/network' ,( x ( $_GET , 'nets' ) ? $_GET [ 'nets' ] : '' ));
2011-09-25 20:20:19 +02:00
$a -> page [ 'aside' ] .= saved_searches ( $search );
2012-03-15 05:20:20 +01:00
$a -> page [ 'aside' ] .= fileas_widget ( $a -> get_baseurl ( true ) . '/network' ,( x ( $_GET , 'file' ) ? $_GET [ 'file' ] : '' ));
2011-09-05 02:35:06 +02:00
}
2011-09-25 20:20:19 +02:00
function saved_searches ( $search ) {
2011-09-05 02:35:06 +02:00
2012-03-15 05:20:20 +01:00
$a = get_app ();
2012-03-06 23:27:53 +01:00
$srchurl = '/network?f='
2012-03-12 04:19:56 +01:00
. (( x ( $_GET , 'cid' )) ? '&cid=' . $_GET [ 'cid' ] : '' )
. (( x ( $_GET , 'star' )) ? '&star=' . $_GET [ 'star' ] : '' )
2012-03-06 23:27:53 +01:00
. (( x ( $_GET , 'bmark' )) ? '&bmark=' . $_GET [ 'bmark' ] : '' )
2012-03-12 04:19:56 +01:00
. (( x ( $_GET , 'conv' )) ? '&conv=' . $_GET [ 'conv' ] : '' )
. (( x ( $_GET , 'nets' )) ? '&nets=' . $_GET [ 'nets' ] : '' )
. (( x ( $_GET , 'cmin' )) ? '&cmin=' . $_GET [ 'cmin' ] : '' )
. (( x ( $_GET , 'cmax' )) ? '&cmax=' . $_GET [ 'cmax' ] : '' )
. (( x ( $_GET , 'file' )) ? '&file=' . $_GET [ 'file' ] : '' );
;
2011-09-25 20:20:19 +02:00
2011-09-05 02:35:06 +02:00
$o = '' ;
2011-12-02 03:27:45 +01:00
$r = q ( " select `id`,`term` from `search` WHERE `uid` = %d " ,
2011-09-05 02:35:06 +02:00
intval ( local_user ())
);
2011-11-21 12:34:22 +01:00
$saved = array ();
2011-09-05 02:35:06 +02:00
if ( count ( $r )) {
foreach ( $r as $rr ) {
2011-11-21 12:34:22 +01:00
$saved [] = array (
2011-12-02 03:27:45 +01:00
'id' => $rr [ 'id' ],
2011-11-21 12:34:22 +01:00
'term' => $rr [ 'term' ],
'encodedterm' => urlencode ( $rr [ 'term' ]),
'delete' => t ( 'Remove term' ),
'selected' => ( $search == $rr [ 'term' ]),
);
2011-09-05 02:35:06 +02:00
}
}
2011-11-21 12:34:22 +01:00
$tpl = get_markup_template ( " saved_searches_aside.tpl " );
$o = replace_macros ( $tpl , array (
'$title' => t ( 'Saved Searches' ),
'$add' => t ( 'add' ),
2012-03-16 13:51:04 +01:00
'$searchbox' => search ( $search , 'netsearch-box' , $srchurl , true ),
2011-11-21 12:34:22 +01:00
'$saved' => $saved ,
));
2011-09-05 02:35:06 +02:00
return $o ;
2010-07-17 02:16:50 +02:00
}
2012-06-11 11:21:46 +02:00
/**
* Return selected tab from query
*
* urls -> returns
* '/network' => $no_active = 'active'
* '/network?f=&order=comment' => $comment_active = 'active'
* '/network?f=&order=post' => $postord_active = 'active'
* '/network?f=&conv=1' , => $conv_active = 'active'
* '/network/new' , => $new_active = 'active'
* '/network?f=&star=1' , => $starred_active = 'active'
* '/network?f=&bmark=1' , => $bookmarked_active = 'active'
* '/network?f=&spam=1' , => $spam_active = 'active'
*
* @ return Array ( $no_active , $comment_active , $postord_active , $conv_active , $new_active , $starred_active , $bookmarked_active , $spam_active );
*/
function network_query_get_sel_tab ( $a ) {
$no_active = '' ;
2011-10-10 15:28:34 +02:00
$starred_active = '' ;
$new_active = '' ;
$bookmarked_active = '' ;
$all_active = '' ;
$search_active = '' ;
2011-11-29 23:35:20 +01:00
$conv_active = '' ;
2012-02-01 09:20:54 +01:00
$spam_active = '' ;
2012-06-11 11:21:46 +02:00
$postord_active = '' ;
2011-11-29 23:35:20 +01:00
2011-10-10 15:28:34 +02:00
if (( $a -> argc > 1 && $a -> argv [ 1 ] === 'new' )
|| ( $a -> argc > 2 && $a -> argv [ 2 ] === 'new' )) {
$new_active = 'active' ;
}
if ( x ( $_GET , 'search' )) {
$search_active = 'active' ;
}
if ( x ( $_GET , 'star' )) {
$starred_active = 'active' ;
}
2012-02-28 22:56:42 +01:00
if ( x ( $_GET , 'bmark' )) {
2011-10-10 15:28:34 +02:00
$bookmarked_active = 'active' ;
}
2011-11-29 23:35:20 +01:00
2012-02-28 22:56:42 +01:00
if ( x ( $_GET , 'conv' )) {
2011-11-29 23:35:20 +01:00
$conv_active = 'active' ;
}
2012-02-28 22:56:42 +01:00
if ( x ( $_GET , 'spam' )) {
2012-02-01 09:20:54 +01:00
$spam_active = 'active' ;
}
2011-10-10 15:28:34 +02:00
2012-06-11 11:21:46 +02:00
2011-10-10 15:28:34 +02:00
if (( $new_active == '' )
&& ( $starred_active == '' )
&& ( $bookmarked_active == '' )
2011-11-29 23:35:20 +01:00
&& ( $conv_active == '' )
2012-02-01 09:20:54 +01:00
&& ( $search_active == '' )
&& ( $spam_active == '' )) {
2012-06-11 11:21:46 +02:00
$no_active = 'active' ;
2011-10-10 15:28:34 +02:00
}
2011-11-29 23:35:20 +01:00
2012-06-11 11:21:46 +02:00
if ( $no_active == 'active' && x ( $_GET , 'order' )) {
switch ( $_GET [ 'order' ]){
case 'post' : $postord_active = 'active' ; $no_active = '' ; break ;
case 'comment' : $all_active = 'active' ; $no_active = '' ; break ;
}
}
2012-05-23 06:20:31 +02:00
2012-06-11 11:21:46 +02:00
return array ( $no_active , $all_active , $postord_active , $conv_active , $new_active , $starred_active , $bookmarked_active , $spam_active );
}
function network_content ( & $a , $update = 0 ) {
2011-10-18 03:24:23 +02:00
2012-06-11 11:21:46 +02:00
require_once ( 'include/conversation.php' );
if ( ! local_user ()) {
$_SESSION [ 'return_url' ] = $a -> query_string ;
return login ( false );
2011-10-18 03:24:23 +02:00
}
2012-06-11 11:21:46 +02:00
$arr = array ( 'query' => $a -> query_string );
call_hooks ( 'network_content_init' , $arr );
2012-06-12 06:07:53 +02:00
$datequery = $datequery2 = '' ;
2012-06-12 10:01:35 +02:00
$group = 0 ;
$nouveau = false ;
2012-06-12 06:07:53 +02:00
if ( $a -> argc > 1 ) {
for ( $x = 1 ; $x < $a -> argc ; $x ++ ) {
if ( is_a_date_arg ( $a -> argv [ $x ])) {
if ( $datequery )
$datequery2 = escape_tags ( $a -> argv [ $x ]);
else {
$datequery = escape_tags ( $a -> argv [ $x ]);
$_GET [ 'order' ] = 'post' ;
}
}
elseif ( $a -> argv [ $x ] === 'new' ) {
$nouveau = true ;
}
elseif ( intval ( $a -> argv [ $x ])) {
$group = intval ( $a -> argv [ $x ]);
$def_acl = array ( 'allow_gid' => '<' . $group . '>' );
}
}
}
2012-06-11 11:21:46 +02:00
$o = '' ;
// item filter tabs
// TODO: fix this logic, reduce duplication
//$a->page['content'] .= '<div class="tabs-wrapper">';
list ( $no_active , $all_active , $postord_active , $conv_active , $new_active , $starred_active , $bookmarked_active , $spam_active ) = network_query_get_sel_tab ( $a );
// if no tabs are selected, defaults to comments
if ( $no_active == 'active' ) $all_active = 'active' ;
//echo "<pre>"; var_dump($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active); killme();
2012-06-13 05:46:30 +02:00
$cmd = (( $datequery ) ? '' : $a -> cmd );
$len_naked_cmd = strlen ( str_replace ( '/new' , '' , $cmd ));
2011-10-10 15:28:34 +02:00
// tabs
$tabs = array (
array (
2011-10-18 03:24:23 +02:00
'label' => t ( 'Commented Order' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . '?f=&order=comment' . (( x ( $_GET , 'cid' )) ? '&cid=' . $_GET [ 'cid' ] : '' ),
2011-10-10 15:28:34 +02:00
'sel' => $all_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Sort by Comment Date' ),
2011-10-10 15:28:34 +02:00
),
2011-10-18 03:24:23 +02:00
array (
'label' => t ( 'Posted Order' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . '?f=&order=post' . (( x ( $_GET , 'cid' )) ? '&cid=' . $_GET [ 'cid' ] : '' ),
2011-10-18 03:24:23 +02:00
'sel' => $postord_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Sort by Post Date' ),
2011-10-18 03:24:23 +02:00
),
2011-11-29 23:35:20 +01:00
array (
'label' => t ( 'Personal' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . (( x ( $_GET , 'cid' )) ? '/?f=&cid=' . $_GET [ 'cid' ] : '' ) . '&conv=1' ,
2011-11-29 23:35:20 +01:00
'sel' => $conv_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Posts that mention or involve you' ),
2011-11-29 23:35:20 +01:00
),
2011-10-10 15:28:34 +02:00
array (
'label' => t ( 'New' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . ( $len_naked_cmd ? '/' : '' ) . 'new' . (( x ( $_GET , 'cid' )) ? '/?f=&cid=' . $_GET [ 'cid' ] : '' ),
2011-10-10 15:28:34 +02:00
'sel' => $new_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Activity Stream - by date' ),
2011-10-10 15:28:34 +02:00
),
array (
'label' => t ( 'Starred' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . (( x ( $_GET , 'cid' )) ? '/?f=&cid=' . $_GET [ 'cid' ] : '' ) . '&star=1' ,
2011-10-10 15:28:34 +02:00
'sel' => $starred_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Favourite Posts' ),
2011-10-10 15:28:34 +02:00
),
array (
2012-03-14 07:52:13 +01:00
'label' => t ( 'Shared Links' ),
2012-06-13 05:46:30 +02:00
'url' => $a -> get_baseurl ( true ) . '/' . str_replace ( '/new' , '' , $cmd ) . (( x ( $_GET , 'cid' )) ? '/?f=&cid=' . $_GET [ 'cid' ] : '' ) . '&bmark=1' ,
2011-10-10 15:28:34 +02:00
'sel' => $bookmarked_active ,
2012-04-30 14:15:29 +02:00
'title' => t ( 'Interesting Links' ),
2011-10-10 15:28:34 +02:00
),
2012-02-01 09:20:54 +01:00
// array(
// 'label' => t('Spam'),
2012-03-15 05:20:20 +01:00
// 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
2012-02-01 09:20:54 +01:00
// 'sel'=> $spam_active,
2012-04-30 14:15:29 +02:00
// 'title' => t('Posts flagged as SPAM'),
2012-02-01 09:20:54 +01:00
// ),
2011-10-10 15:28:34 +02:00
);
2012-06-11 11:21:46 +02:00
// save selected tab, but only if not in search or file mode
if ( ! x ( $_GET , 'search' ) && ! x ( $_GET , 'file' )) {
set_pconfig ( local_user (), 'network.view' , 'tab.selected' , array ( $all_active , $postord_active , $conv_active , $new_active , $starred_active , $bookmarked_active , $spam_active ) );
}
2012-04-06 06:42:47 +02:00
$arr = array ( 'tabs' => $tabs );
call_hooks ( 'network_tabs' , $arr );
$o .= replace_macros ( get_markup_template ( 'common_tabs.tpl' ), array ( '$tabs' => $arr [ 'tabs' ]));
2011-10-10 15:28:34 +02:00
// --- end item filter tabs
2010-07-17 02:16:50 +02:00
$contact_id = $a -> cid ;
2011-02-17 09:52:26 +01:00
require_once ( 'include/acl_selectors.php' );
2011-02-02 05:23:58 +01:00
2011-09-14 03:40:15 +02:00
$cid = (( x ( $_GET , 'cid' )) ? intval ( $_GET [ 'cid' ]) : 0 );
$star = (( x ( $_GET , 'star' )) ? intval ( $_GET [ 'star' ]) : 0 );
$bmark = (( x ( $_GET , 'bmark' )) ? intval ( $_GET [ 'bmark' ]) : 0 );
$order = (( x ( $_GET , 'order' )) ? notags ( $_GET [ 'order' ]) : 'comment' );
2011-09-23 12:12:31 +02:00
$liked = (( x ( $_GET , 'liked' )) ? intval ( $_GET [ 'liked' ]) : 0 );
2011-11-29 23:35:20 +01:00
$conv = (( x ( $_GET , 'conv' )) ? intval ( $_GET [ 'conv' ]) : 0 );
2012-02-01 09:20:54 +01:00
$spam = (( x ( $_GET , 'spam' )) ? intval ( $_GET [ 'spam' ]) : 0 );
2012-01-06 03:11:53 +01:00
$nets = (( x ( $_GET , 'nets' )) ? $_GET [ 'nets' ] : '' );
2012-02-09 02:56:23 +01:00
$cmin = (( x ( $_GET , 'cmin' )) ? intval ( $_GET [ 'cmin' ]) : 0 );
$cmax = (( x ( $_GET , 'cmax' )) ? intval ( $_GET [ 'cmax' ]) : 99 );
2012-03-12 04:19:56 +01:00
$file = (( x ( $_GET , 'file' )) ? $_GET [ 'file' ] : '' );
2011-04-20 05:50:02 +02:00
2011-02-17 09:40:35 +01:00
2011-02-17 08:05:48 +01:00
2012-03-12 04:19:56 +01:00
if ( x ( $_GET , 'search' ) || x ( $_GET , 'file' ))
2011-05-27 02:47:33 +02:00
$nouveau = true ;
2011-04-20 05:50:02 +02:00
if ( $cid )
$def_acl = array ( 'allow_cid' => '<' . intval ( $cid ) . '>' );
2012-03-24 09:33:50 +01:00
if ( $nets ) {
$r = q ( " select id from contact where uid = %d and network = '%s' and self = 0 " ,
intval ( local_user ()),
dbesc ( $nets )
);
$str = '' ;
if ( count ( $r ))
foreach ( $r as $rr )
$str .= '<' . $rr [ 'id' ] . '>' ;
if ( strlen ( $str ))
$def_acl = array ( 'allow_cid' => $str );
}
2010-07-25 00:21:33 +02:00
if ( ! $update ) {
2012-02-28 22:56:42 +01:00
if ( $group ) {
2011-04-04 05:41:40 +02:00
if (( $t = group_public_members ( $group )) && ( ! get_pconfig ( local_user (), 'system' , 'nowarn_insecure' ))) {
2011-05-23 11:39:57 +02:00
notice ( sprintf ( tt ( 'Warning: This group contains %s member from an insecure network.' ,
'Warning: This group contains %s members from an insecure network.' ,
$t ), $t ) . EOL );
2011-04-04 05:41:40 +02:00
notice ( t ( 'Private messages to this group are at risk of public disclosure.' ) . EOL );
}
}
2011-08-17 18:36:24 +02:00
nav_set_selected ( 'network' );
2010-09-19 06:11:18 +02:00
2010-10-18 09:43:49 +02:00
$celeb = ((( $a -> user [ 'page-flags' ] == PAGE_SOAPBOX ) || ( $a -> user [ 'page-flags' ] == PAGE_COMMUNITY )) ? true : false );
2011-04-20 14:48:12 +02:00
$x = array (
'is_owner' => true ,
'allow_location' => $a -> user [ 'allow_location' ],
2012-02-28 23:52:23 +01:00
'default_location' => $a -> user [ 'default-location' ],
2011-04-20 14:48:12 +02:00
'nickname' => $a -> user [ 'nickname' ],
2012-03-24 11:11:45 +01:00
'lockstate' => ((( $group ) || ( $cid ) || ( $nets ) || ( is_array ( $a -> user ) && (( strlen ( $a -> user [ 'allow_cid' ])) || ( strlen ( $a -> user [ 'allow_gid' ])) || ( strlen ( $a -> user [ 'deny_cid' ])) || ( strlen ( $a -> user [ 'deny_gid' ]))))) ? 'lock' : 'unlock' ),
2012-03-24 09:33:50 +01:00
'acl' => populate_acl ((( $group || $cid || $nets ) ? $def_acl : $a -> user ), $celeb ),
2012-03-24 11:11:45 +01:00
'bang' => (( $group || $cid || $nets ) ? '!' : '' ),
2011-04-20 14:48:12 +02:00
'visitor' => 'block' ,
'profile_uid' => local_user ()
);
$o .= status_editor ( $a , $x );
2010-07-17 02:16:50 +02:00
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 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
2012-01-06 03:11:53 +01:00
2012-01-02 12:40:52 +01:00
$sql_options = (( $star ) ? " and starred = 1 " : '' );
$sql_options .= (( $bmark ) ? " and bookmark = 1 " : '' );
2011-09-05 04:58:03 +02:00
2012-01-06 03:11:53 +01:00
$sql_nets = (( $nets ) ? sprintf ( " and `contact`.`network` = '%s' " , dbesc ( $nets )) : '' );
2012-02-15 08:29:24 +01:00
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $sql_options ) " ;
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 )) {
2011-02-17 08:10:18 +01:00
if ( $update )
killme ();
2010-08-12 00:40:18 +02:00
notice ( t ( 'No such group' ) . EOL );
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/network' );
2011-04-20 05:50:02 +02:00
// NOTREACHED
2010-07-26 01:27:22 +02:00
}
$contacts = expand_groups ( array ( $group ));
2011-01-03 22:53:26 +01:00
if (( is_array ( $contacts )) && count ( $contacts )) {
$contact_str = implode ( ',' , $contacts );
}
else {
$contact_str = ' 0 ' ;
2011-05-23 11:39:57 +02:00
info ( t ( 'Group is empty' ));
2011-01-03 22:53:26 +01:00
}
2011-01-20 02:56:36 +01:00
2012-05-09 07:46:40 +02:00
$sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` like ' " . protect_sprintf ( '%<' . intval ( $group ) . '>%' ) . " ' ) and deleted = 0 ) " ;
2011-02-28 11:56:46 +01:00
$o = '<h2>' . t ( 'Group: ' ) . $r [ 0 ][ 'name' ] . '</h2>' . $o ;
2010-07-26 01:27:22 +02:00
}
2011-04-20 05:50:02 +02:00
elseif ( $cid ) {
2011-12-23 01:05:03 +01:00
$r = q ( " SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d
2011-04-20 05:50:02 +02:00
AND `blocked` = 0 AND `pending` = 0 LIMIT 1 " ,
intval ( $cid )
);
if ( count ( $r )) {
2012-01-13 03:30:52 +01:00
$sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND `contact-id` = " . intval ( $cid ) . " and deleted = 0 ) " ;
2011-04-20 05:50:02 +02:00
$o = '<h2>' . t ( 'Contact: ' ) . $r [ 0 ][ 'name' ] . '</h2>' . $o ;
2011-12-23 01:05:03 +01:00
if ( $r [ 0 ][ 'network' ] === NETWORK_OSTATUS && $r [ 0 ][ 'writable' ] && ( ! get_pconfig ( local_user (), 'system' , 'nowarn_insecure' ))) {
2011-04-20 06:09:25 +02:00
notice ( t ( 'Private messages to this person are at risk of public disclosure.' ) . EOL );
}
2011-04-20 05:50:02 +02:00
}
else {
notice ( t ( 'Invalid contact.' ) . EOL );
2012-03-15 05:20:20 +01:00
goaway ( $a -> get_baseurl ( true ) . '/network' );
2011-04-20 05:50:02 +02:00
// NOTREACHED
}
}
2010-07-17 02:16:50 +02:00
2011-10-25 07:07:42 +02:00
if (( ! $group ) && ( ! $cid ) && ( ! $update )) {
2011-01-17 01:40:09 +01:00
$o .= get_birthdays ();
2011-10-25 07:07:42 +02:00
$o .= get_events ();
}
2011-01-17 01:40:09 +01:00
2011-11-25 02:32:45 +01:00
if ( ! $update ) {
// The special div is needed for liveUpdate to kick in for this page.
// We only launch liveUpdate if you aren't filtering in some incompatible
// way and also you aren't writing a comment (discovered in javascript).
$o .= '<div id="live-network"></div>' . " \r \n " ;
$o .= " <script> var profile_uid = " . $_SESSION [ 'uid' ]
. " ; var netargs = ' " . substr ( $a -> cmd , 8 )
. '?f='
2012-02-01 09:20:54 +01:00
. (( x ( $_GET , 'cid' )) ? '&cid=' . $_GET [ 'cid' ] : '' )
2011-11-25 02:32:45 +01:00
. (( x ( $_GET , 'search' )) ? '&search=' . $_GET [ 'search' ] : '' )
2012-02-01 09:20:54 +01:00
. (( x ( $_GET , 'star' )) ? '&star=' . $_GET [ 'star' ] : '' )
. (( x ( $_GET , 'order' )) ? '&order=' . $_GET [ 'order' ] : '' )
. (( x ( $_GET , 'bmark' )) ? '&bmark=' . $_GET [ 'bmark' ] : '' )
. (( x ( $_GET , 'liked' )) ? '&liked=' . $_GET [ 'liked' ] : '' )
. (( x ( $_GET , 'conv' )) ? '&conv=' . $_GET [ 'conv' ] : '' )
. (( x ( $_GET , 'spam' )) ? '&spam=' . $_GET [ 'spam' ] : '' )
. (( x ( $_GET , 'nets' )) ? '&nets=' . $_GET [ 'nets' ] : '' )
2012-02-09 02:56:23 +01:00
. (( x ( $_GET , 'cmin' )) ? '&cmin=' . $_GET [ 'cmin' ] : '' )
. (( x ( $_GET , 'cmax' )) ? '&cmax=' . $_GET [ 'cmax' ] : '' )
2012-03-12 04:19:56 +01:00
. (( x ( $_GET , 'file' )) ? '&file=' . $_GET [ 'file' ] : '' )
2012-02-01 09:20:54 +01:00
2011-11-25 02:32:45 +01:00
. " '; var profile_page = " . $a -> pager [ 'page' ] . " ; </script> \r \n " ;
}
2012-06-12 06:07:53 +02:00
$sql_extra3 = '' ;
if ( $datequery ) {
2012-06-13 05:46:30 +02:00
$sql_extra3 .= protect_sprintf ( sprintf ( " AND item.created <= '%s' " , dbesc ( datetime_convert ( date_default_timezone_get (), '' , $datequery ))));
2012-06-12 06:07:53 +02:00
}
if ( $datequery2 ) {
2012-06-13 05:46:30 +02:00
$sql_extra3 .= protect_sprintf ( sprintf ( " AND item.created >= '%s' " , dbesc ( datetime_convert ( date_default_timezone_get (), '' , $datequery2 ))));
2012-06-12 06:07:53 +02:00
}
2011-05-05 05:49:11 +02:00
$sql_extra2 = (( $nouveau ) ? '' : " AND `item`.`parent` = `item`.`id` " );
2012-06-12 06:07:53 +02:00
$sql_extra3 = (( $nouveau ) ? '' : $sql_extra3 );
2011-01-17 01:40:09 +01:00
2011-10-24 13:17:46 +02:00
if ( x ( $_GET , 'search' )) {
$search = escape_tags ( $_GET [ 'search' ]);
2012-05-26 11:51:48 +02:00
if ( get_config ( 'system' , 'use_fulltext_engine' )) {
if ( strpos ( $search , '#' ) === 0 )
$sql_extra .= sprintf ( " AND (MATCH(tag) AGAINST (' " . '"%s"' . " ' in boolean mode)) " ,
dbesc ( protect_sprintf ( $search ))
);
else
$sql_extra .= sprintf ( " AND (MATCH(`item`.`body`) AGAINST (' " . '"%s"' . " ' in boolean mode) or MATCH(tag) AGAINST (' " . '"%s"' . " ' in boolean mode)) " ,
dbesc ( protect_sprintf ( $search )),
dbesc ( protect_sprintf ( $search ))
);
} else {
$sql_extra .= sprintf ( " AND ( `item`.`body` like '%s' OR `item`.`tag` like '%s' ) " ,
dbesc ( protect_sprintf ( '%' . $search . '%' )),
dbesc ( protect_sprintf ( '%]' . $search . '[%' ))
);
}
2011-10-24 13:17:46 +02:00
}
2012-03-12 04:19:56 +01:00
if ( strlen ( $file )) {
2012-04-01 00:25:17 +02:00
$sql_extra .= file_tag_file_query ( 'item' , unxmlify ( $file ));
2012-03-12 04:19:56 +01:00
}
2011-05-27 02:47:33 +02:00
2011-11-29 23:35:20 +01:00
if ( $conv ) {
$myurl = $a -> get_baseurl () . '/profile/' . $a -> user [ 'nickname' ];
$myurl = substr ( $myurl , strpos ( $myurl , '://' ) + 3 );
2012-05-26 03:29:06 +02:00
$myurl = str_replace ( 'www.' , '' , $myurl );
2011-12-07 00:24:01 +01:00
$diasp_url = str_replace ( '/profile/' , '/u/' , $myurl );
2012-05-26 03:21:07 +02:00
if ( get_config ( 'system' , 'use_fulltext_engine' ))
$sql_extra .= sprintf ( " AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST (' " . '"%s"' . " ' in boolean mode) or MATCH(`tag`) AGAINST (' " . '"%s"' . " ' in boolean mode) or MATCH(tag) AGAINST (' " . '"%s"' . " ' in boolean mode))) " ,
dbesc ( protect_sprintf ( $myurl )),
dbesc ( protect_sprintf ( $myurl )),
dbesc ( protect_sprintf ( $diasp_url ))
);
else
$sql_extra .= sprintf ( " AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) " ,
dbesc ( protect_sprintf ( '%' . $myurl )),
2012-05-30 01:50:42 +02:00
dbesc ( protect_sprintf ( '%' . $myurl . ']%' )),
dbesc ( protect_sprintf ( '%' . $diasp_url . ']%' ))
2012-05-26 03:21:07 +02:00
);
2011-11-29 23:35:20 +01:00
}
2011-12-12 23:39:25 +01:00
if ( $update ) {
2011-11-29 23:35:20 +01:00
2011-12-12 23:39:25 +01:00
// only setup pagination on initial page view
$pager_sql = '' ;
2010-07-17 02:16:50 +02:00
2011-03-28 04:53:36 +02:00
}
2011-12-12 23:39:25 +01:00
else {
$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
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2012-06-12 06:07:53 +02:00
$sql_extra2 $sql_extra3
2012-01-06 03:11:53 +01:00
$sql_extra $sql_nets " ,
2011-12-12 23:39:25 +01:00
intval ( $_SESSION [ 'uid' ])
);
2011-03-28 04:53:36 +02:00
2011-12-12 23:39:25 +01:00
if ( count ( $r )) {
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
2012-03-10 03:29:39 +01:00
$itemspage_network = get_pconfig ( local_user (), 'system' , 'itemspage_network' );
$a -> set_pager_itemspage ((( intval ( $itemspage_network )) ? $itemspage_network : 40 ));
2011-12-12 23:39:25 +01:00
}
$pager_sql = sprintf ( " LIMIT %d, %d " , intval ( $a -> pager [ 'start' ]), intval ( $a -> pager [ 'itemspage' ]));
}
2010-07-17 02:16:50 +02:00
2011-12-13 01:11:03 +01:00
$simple_update = (( $update ) ? " and `item`.`unseen` = 1 " : '' );
2011-01-20 02:56:36 +01:00
if ( $nouveau ) {
2011-03-29 02:24:11 +02:00
// "New Item View" - show all items unthreaded in reverse created date order
2011-12-14 12:51:50 +01:00
$items = q ( " SELECT `item`.*, `item`.`id` AS `item_id`,
2011-04-11 12:22:09 +02:00
`contact` . `name` , `contact` . `photo` , `contact` . `url` , `contact` . `rel` , `contact` . `writable` ,
2011-01-20 03:31:04 +01:00
`contact` . `network` , `contact` . `thumb` , `contact` . `dfrn-id` , `contact` . `self` ,
2011-01-20 02:56:36 +01:00
`contact` . `id` AS `cid` , `contact` . `uid` AS `contact-uid`
FROM `item` , `contact`
2012-01-24 05:56:11 +01:00
WHERE `item` . `uid` = % d AND `item` . `visible` = 1
AND `item` . `deleted` = 0 and `item` . `moderated` = 0
2011-12-13 01:11:03 +01:00
$simple_update
2011-01-20 02:56:36 +01:00
AND `contact` . `id` = `item` . `contact-id`
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2012-01-06 03:11:53 +01:00
$sql_extra $sql_nets
2011-12-12 23:39:25 +01:00
ORDER BY `item` . `received` DESC $pager_sql " ,
intval ( $_SESSION [ 'uid' ])
2011-01-20 02:56:36 +01:00
);
2011-12-14 12:51:50 +01:00
2011-01-20 02:56:36 +01:00
}
else {
2011-03-29 02:24:11 +02:00
// Normal conversation view
2011-03-28 04:53:36 +02:00
2011-09-19 04:04:11 +02:00
if ( $order === 'post' )
$ordering = " `created` " ;
else
$ordering = " `commented` " ;
// Fetch a page full of parent items for this page
2011-12-13 01:11:03 +01:00
if ( $update ) {
2012-01-03 04:33:26 +01:00
$r = q ( " SELECT `parent` AS `item_id`, `contact`.`uid` AS `contact_uid`
2011-12-13 01:11:03 +01:00
FROM `item` LEFT JOIN `contact` ON `contact` . `id` = `item` . `contact-id`
WHERE `item` . `uid` = % d AND `item` . `visible` = 1 AND `item` . `deleted` = 0
2012-01-24 05:56:11 +01:00
and `item` . `moderated` = 0 and `item` . `unseen` = 1
2011-12-13 01:11:03 +01:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2012-06-12 06:07:53 +02:00
$sql_extra3 $sql_extra $sql_nets " ,
2011-12-13 01:11:03 +01:00
intval ( local_user ())
);
}
else {
$r = q ( " SELECT `item`.`id` AS `item_id`, `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
2012-01-24 05:56:11 +01:00
AND `item` . `moderated` = 0 AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2011-12-13 01:11:03 +01:00
AND `item` . `parent` = `item` . `id`
2012-06-12 06:07:53 +02:00
$sql_extra3 $sql_extra $sql_nets
2011-12-13 01:11:03 +01:00
ORDER BY `item` . $ordering DESC $pager_sql " ,
intval ( local_user ())
);
}
2011-09-19 04:04:11 +02:00
2011-09-13 14:13:01 +02:00
// Then fetch all the children of the parents that are on this page
2011-09-13 04:42:10 +02:00
2011-09-13 14:13:01 +02:00
$parents_arr = array ();
$parents_str = '' ;
2011-09-13 04:42:10 +02:00
2011-09-13 14:13:01 +02:00
if ( count ( $r )) {
foreach ( $r as $rr )
2012-03-08 06:12:31 +01:00
if ( ! in_array ( $rr [ 'item_id' ], $parents_arr ))
2012-01-03 04:33:26 +01:00
$parents_arr [] = $rr [ 'item_id' ];
2011-09-13 14:13:01 +02:00
$parents_str = implode ( ', ' , $parents_arr );
2011-09-13 04:42:10 +02:00
2011-12-12 23:39:25 +01:00
$items = q ( " SELECT `item`.*, `item`.`id` AS `item_id`,
2012-06-02 09:40:38 +02:00
`contact` . `name` , `contact` . `photo` , `contact` . `url` , `contact` . `alias` , `contact` . `rel` , `contact` . `writable` ,
2011-09-19 04:04:11 +02:00
`contact` . `network` , `contact` . `thumb` , `contact` . `dfrn-id` , `contact` . `self` ,
`contact` . `id` AS `cid` , `contact` . `uid` AS `contact-uid`
2012-01-03 01:54:37 +01:00
FROM `item` , `contact`
2011-09-19 04:04:11 +02:00
WHERE `item` . `uid` = % d AND `item` . `visible` = 1 AND `item` . `deleted` = 0
2012-01-24 05:56:11 +01:00
AND `item` . `moderated` = 0 AND `contact` . `id` = `item` . `contact-id`
2011-09-19 04:04:11 +02:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2012-01-03 01:54:37 +01:00
AND `item` . `parent` IN ( % s )
2012-01-06 09:23:05 +01:00
$sql_extra " ,
2011-09-19 04:04:11 +02:00
intval ( local_user ()),
dbesc ( $parents_str )
);
2012-01-03 01:54:37 +01:00
$items = conv_sort ( $items , $ordering );
2012-02-28 22:56:42 +01:00
} else {
$items = array ();
}
2011-01-20 02:56:36 +01:00
}
2010-07-17 02:16:50 +02:00
2011-12-12 23:39:25 +01: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. If you're looking
// at the top level network page just mark everything seen.
if (( ! $group ) && ( ! $cid ) && ( ! $star )) {
$r = q ( " UPDATE `item` SET `unseen` = 0
WHERE `unseen` = 1 AND `uid` = % d " ,
intval ( local_user ())
);
}
2011-04-12 01:15:38 +02:00
// Set this so that the conversation function can find out contact info for our wall-wall items
$a -> page_contact = $a -> contact ;
2011-04-11 06:21:16 +02:00
$mode = (( $nouveau ) ? 'network-new' : 'network' );
2011-03-29 02:24:11 +02:00
2011-12-12 23:39:25 +01:00
$o .= conversation ( $a , $items , $mode , $update );
2010-07-25 00:21:33 +02:00
2011-01-23 23:56:14 +01:00
if ( ! $update ) {
2010-07-25 00:21:33 +02:00
$o .= paginate ( $a );
2011-01-23 23:56:14 +01:00
}
2010-07-25 00:21:33 +02:00
2010-07-17 02:16:50 +02:00
return $o ;
2011-03-30 17:10:14 +02:00
}