2010-07-02 01:48:07 +02:00
< ? php
function profile_init ( & $a ) {
if ( $a -> argc > 1 )
$which = $a -> argv [ 1 ];
else {
2010-09-09 05:14:17 +02:00
notice ( t ( 'No profile' ) . EOL );
2010-07-02 01:48:07 +02:00
$a -> error = 404 ;
return ;
}
2010-07-29 06:02:36 +02:00
$profile = 0 ;
2010-09-27 02:24:20 +02:00
if (( local_user ()) && ( $a -> argc > 2 ) && ( $a -> argv [ 2 ] === 'view' )) {
2010-07-29 06:02:36 +02:00
$which = $a -> user [ 'nickname' ];
$profile = $a -> argv [ 1 ];
}
2010-10-21 23:32:29 +02:00
2010-07-29 06:02:36 +02:00
profile_load ( $a , $which , $profile );
2010-08-11 01:54:36 +02:00
2011-02-27 23:17:42 +01:00
if (( x ( $a -> profile , 'page-flags' )) && ( $a -> profile [ 'page-flags' ] & PAGE_COMMUNITY )) {
$a -> page [ 'htmlhead' ] .= '<meta name="friendika.community" content="true" />' ;
}
2010-12-23 23:40:32 +01:00
if ( x ( $a -> profile , 'openidserver' ))
$a -> page [ 'htmlhead' ] .= '<link rel="openid.server" href="' . $a -> profile [ 'openidserver' ] . '" />' . " \r \n " ;
if ( x ( $a -> profile , 'openid' )) {
$delegate = (( strstr ( $a -> profile [ 'openid' ], '://' )) ? $a -> profile [ 'openid' ] : 'http://' . $a -> profile [ 'openid' ]);
$a -> page [ 'htmlhead' ] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . " \r \n " ;
2010-12-23 21:32:13 +01:00
}
2011-03-15 04:19:45 +01:00
$keywords = (( x ( $a -> profile , 'pub_keywords' )) ? $a -> profile [ 'pub_keywords' ] : '' );
$keywords = str_replace ( array ( ',' , ' ' , ',,' ), array ( ' ' , ',' , ',' ), $keywords );
if ( strlen ( $keywords ))
$a -> page [ 'htmlhead' ] .= '<meta name="keywords" content="' . $keywords . '" />' . " \r \n " ;
2010-10-21 23:32:29 +02:00
$a -> page [ 'htmlhead' ] .= '<meta name="dfrn-global-visibility" content="' . (( $a -> profile [ 'net-publish' ]) ? 'true' : 'false' ) . '" />' . " \r \n " ;
$a -> page [ 'htmlhead' ] .= '<link rel="alternate" type="application/atom+xml" href="' . $a -> get_baseurl () . '/dfrn_poll/' . $which . '" />' . " \r \n " ;
2010-10-23 10:20:26 +02:00
$uri = urlencode ( 'acct:' . $a -> profile [ 'nickname' ] . '@' . $a -> get_hostname () . (( $a -> path ) ? '/' . $a -> path : '' ));
2010-10-21 23:32:29 +02:00
$a -> page [ 'htmlhead' ] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $a -> get_baseurl () . '/xrd/?uri=' . $uri . '" />' . " \r \n " ;
2010-11-11 11:49:28 +01:00
header ( 'Link: <' . $a -> get_baseurl () . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"' , false );
2010-12-23 23:40:32 +01:00
2010-07-02 01:48:07 +02:00
$dfrn_pages = array ( 'request' , 'confirm' , 'notify' , 'poll' );
foreach ( $dfrn_pages as $dfrn )
$a -> page [ 'htmlhead' ] .= " <link rel= \" dfrn- { $dfrn } \" href= \" " . $a -> get_baseurl () . " /dfrn_ { $dfrn } / { $which } \" /> \r \n " ;
2010-07-08 16:03:25 +02:00
2010-07-02 01:48:07 +02:00
}
2010-09-21 04:34:44 +02:00
function profile_content ( & $a , $update = 0 ) {
2010-07-02 01:48:07 +02:00
require_once ( " include/bbcode.php " );
require_once ( 'include/security.php' );
2010-07-12 08:10:52 +02:00
$groups = array ();
2010-07-11 04:43:55 +02:00
$tab = 'posts' ;
2010-10-30 22:25:37 +02:00
$o = '' ;
2010-07-11 04:43:55 +02:00
2010-08-20 02:23:13 +02:00
if ( $update ) {
// Ensure we've got a profile owner if updating.
2010-09-21 04:34:44 +02:00
$a -> profile [ 'profile_uid' ] = $update ;
2010-08-20 02:23:13 +02:00
}
else {
2010-10-18 23:34:59 +02:00
if ( $a -> profile [ 'profile_uid' ] == local_user ())
2010-09-19 06:29:22 +02:00
$o .= '<script> $(document).ready(function() { $(\'#nav-home-link\').addClass(\'nav-selected\'); });</script>' ;
2010-07-28 14:01:52 +02:00
}
2010-07-26 07:51:45 +02:00
2010-08-20 02:23:13 +02:00
$contact = null ;
$remote_contact = false ;
2010-07-12 08:10:52 +02:00
if ( remote_user ()) {
2010-07-06 06:39:55 +02:00
$contact_id = $_SESSION [ 'visitor_id' ];
2010-07-12 08:10:52 +02:00
$groups = init_groups_visitor ( $contact_id );
2010-08-14 16:55:18 +02:00
$r = q ( " SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1 " ,
intval ( $contact_id ),
2010-08-20 02:23:13 +02:00
intval ( $a -> profile [ 'profile_uid' ])
2010-08-14 16:55:18 +02:00
);
2010-08-20 02:23:13 +02:00
if ( count ( $r )) {
2010-08-14 16:55:18 +02:00
$contact = $r [ 0 ];
2010-08-20 02:23:13 +02:00
$remote_contact = true ;
}
2010-07-12 08:10:52 +02:00
}
2010-08-20 02:23:13 +02:00
if ( ! $remote_contact ) {
2010-08-19 13:59:31 +02:00
if ( local_user ()) {
$contact_id = $_SESSION [ 'cid' ];
$contact = $a -> contact ;
}
2010-07-06 06:39:55 +02:00
}
2010-10-20 05:52:05 +02:00
$is_owner = (( local_user ()) && ( local_user () == $a -> profile [ 'profile_uid' ]) ? true : false );
2010-12-06 03:08:36 +01:00
2010-08-20 02:23:13 +02:00
if ( ! $update ) {
2010-07-25 00:21:33 +02:00
if ( x ( $_GET , 'tab' ))
$tab = notags ( trim ( $_GET [ 'tab' ]));
2010-07-02 01:48:07 +02:00
2010-09-23 03:00:19 +02:00
$tpl = load_view_file ( 'view/profile_tabs.tpl' );
2010-07-13 03:00:58 +02:00
2010-07-02 01:48:07 +02:00
$o .= replace_macros ( $tpl , array (
2010-08-06 06:15:24 +02:00
'$url' => $a -> get_baseurl () . '/' . $a -> cmd ,
2011-03-21 12:10:08 +01:00
'$phototab' => $a -> get_baseurl () . '/photos/' . $a -> profile [ 'nickname' ],
2011-03-21 23:12:40 +01:00
'$status' => t ( 'Status' ),
2011-03-21 12:10:08 +01:00
'$profile' => t ( 'Profile' ),
'$photos' => t ( 'Photos' )
2010-07-02 01:48:07 +02:00
));
2010-07-24 15:56:02 +02:00
2010-09-27 02:24:20 +02:00
if ( $tab === 'profile' ) {
2010-11-18 02:28:29 +01:00
$profile_lang = get_config ( 'system' , 'language' );
if ( ! $profile_lang )
$profile_lang = 'en' ;
if ( file_exists ( " view/ $profile_lang /profile_advanced.php " ))
require_once ( " view/ $profile_lang /profile_advanced.php " );
2010-09-23 03:00:19 +02:00
else
require_once ( 'view/profile_advanced.php' );
2010-12-23 05:23:41 +01:00
call_hooks ( 'profile_advanced' , $o );
2010-07-25 00:21:33 +02:00
return $o ;
}
2010-12-06 03:08:36 +01:00
$commpage = (( $a -> profile [ 'page-flags' ] == PAGE_COMMUNITY ) ? true : false );
$commvisitor = (( $commpage && $remote_contact == true ) ? true : false );
2010-10-18 09:43:49 +02:00
$celeb = ((( $a -> profile [ 'page-flags' ] == PAGE_SOAPBOX ) || ( $a -> profile [ 'page-flags' ] == PAGE_COMMUNITY )) ? true : false );
2010-10-20 05:52:05 +02:00
2010-12-06 03:08:36 +01:00
if ( can_write_wall ( $a , $a -> profile [ 'profile_uid' ])) {
2010-10-20 05:52:05 +02:00
2010-12-06 03:08:36 +01:00
$geotag = ((( $is_owner || $commvisitor ) && $a -> profile [ 'allow_location' ]) ? load_view_file ( 'view/jot_geotag.tpl' ) : '' );
2010-10-20 05:52:05 +02:00
2010-09-23 03:00:19 +02:00
$tpl = load_view_file ( 'view/jot-header.tpl' );
2010-07-25 00:21:33 +02:00
2010-10-20 05:52:05 +02:00
$a -> page [ 'htmlhead' ] .= replace_macros ( $tpl , array (
'$baseurl' => $a -> get_baseurl (),
2010-12-06 03:08:36 +01:00
'$geotag' => $geotag ,
2011-03-21 08:21:35 +01:00
'$nickname' => $a -> profile [ 'nickname' ],
'$linkurl' => t ( 'Please enter a link URL:' ),
'$utubeurl' => t ( 'Please enter a YouTube link:' ),
'$vidurl' => t ( " Please enter a video \x28 .ogg \x29 link/URL: " ),
'$audurl' => t ( " Please enter an audio \x28 .ogg \x29 link/URL: " ),
2011-03-30 03:57:26 +02:00
'$whereareu' => t ( 'Where are you right now?' ),
'$title' => t ( 'Enter a title for this item' )
2010-10-20 05:52:05 +02:00
));
2010-11-16 06:02:59 +01:00
require_once ( 'include/acl_selectors.php' );
2010-07-25 00:21:33 +02:00
2010-12-06 03:08:36 +01:00
$tpl = load_view_file ( 'view/jot.tpl' );
2010-08-08 08:54:22 +02:00
if ( is_array ( $a -> user ) && (( strlen ( $a -> user [ 'allow_cid' ])) || ( strlen ( $a -> user [ 'allow_gid' ])) || ( strlen ( $a -> user [ 'deny_cid' ])) || ( strlen ( $a -> user [ 'deny_gid' ]))))
$lockstate = 'lock' ;
else
$lockstate = 'unlock' ;
2011-01-26 16:17:28 +01:00
2011-02-11 11:35:19 +01:00
$jotplugins = '' ;
$jotnets = '' ;
2011-02-06 10:08:12 +01:00
call_hooks ( 'jot_tool' , $jotplugins );
2011-02-11 11:35:19 +01:00
call_hooks ( 'jot_networks' , $jotnets );
2011-02-06 10:08:12 +01:00
$tpl = replace_macros ( $tpl , array ( '$jotplugins' => $jotplugins ));
2010-07-25 00:21:33 +02:00
$o .= replace_macros ( $tpl , array (
'$baseurl' => $a -> get_baseurl (),
2011-03-08 04:58:22 +01:00
'$action' => 'item' ,
'$share' => t ( 'Share' ),
'$upload' => t ( 'Upload photo' ),
'$weblink' => t ( 'Insert web link' ),
'$youtube' => t ( 'Insert YouTube video' ),
2011-03-17 05:14:22 +01:00
'$video' => t ( 'Insert Vorbis [.ogg] video' ),
'$audio' => t ( 'Insert Vorbis [.ogg] audio' ),
2011-03-08 04:58:22 +01:00
'$setloc' => t ( 'Set your location' ),
'$noloc' => t ( 'Clear browser location' ),
2011-03-30 03:57:26 +02:00
'$title' => t ( 'Set title' ),
2011-03-08 04:58:22 +01:00
'$wait' => t ( 'Please wait' ),
'$permset' => t ( 'Permission settings' ),
'$content' => '' ,
'$post_id' => '' ,
2010-10-20 05:52:05 +02:00
'$defloc' => (( $is_owner ) ? $a -> user [ 'default-location' ] : '' ),
2010-07-25 00:21:33 +02:00
'$return_path' => $a -> cmd ,
2010-12-06 03:08:36 +01:00
'$visitor' => (( $is_owner || $commvisitor ) ? 'block' : 'none' ),
2010-08-08 08:54:22 +02:00
'$lockstate' => $lockstate ,
2011-02-01 04:07:13 +01:00
'$emailcc' => t ( 'CC: email addresses' ),
2011-02-11 11:35:19 +01:00
'$jotnets' => $jotnets ,
2011-02-01 04:07:13 +01:00
'$emtitle' => t ( 'Example: bob@example.com, mary@example.com' ),
2010-09-17 12:43:03 +02:00
'$bang' => '' ,
2010-10-20 05:52:05 +02:00
'$acl' => (( $is_owner ) ? populate_acl ( $a -> user , $celeb ) : '' ),
2011-02-06 10:08:12 +01:00
'$profile_uid' => $a -> profile [ 'profile_uid' ]
2010-07-25 00:21:33 +02:00
));
}
2010-09-21 04:34:44 +02:00
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
// because browser prefetching might change it on us. We have to deliver it with the page.
2011-02-17 09:40:35 +01:00
if ( $tab === 'posts' ) {
2010-09-21 07:27:33 +02:00
$o .= '<div id="live-profile"></div>' . " \r \n " ;
2011-02-17 09:40:35 +01:00
$o .= " <script> var profile_uid = " . $a -> profile [ 'profile_uid' ]
. " ; var netargs = ''; var profile_page = " . $a -> pager [ 'page' ] . " ; </script> \r \n " ;
2010-09-21 07:27:33 +02:00
}
2010-07-25 00:21:33 +02:00
}
2010-07-02 01:48:07 +02:00
2010-10-20 05:52:05 +02:00
// Construct permissions
2010-07-12 08:10:52 +02:00
2010-07-17 16:03:06 +02:00
// default permissions - anonymous user
2010-07-12 08:10:52 +02:00
$sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = '' " ;
// Profile owner - everything is visible
2010-07-02 01:48:07 +02:00
2010-10-30 07:18:05 +02:00
if ( $is_owner ) {
2010-07-12 08:10:52 +02:00
$sql_extra = '' ;
2010-07-20 14:21:19 +02:00
// Oh - while we're here... reset the Unseen messages
$r = q ( " UPDATE `item` SET `unseen` = 0
WHERE `type` != 'remote' AND `unseen` = 1 AND `uid` = % d " ,
intval ( $_SESSION [ 'uid' ])
);
}
2010-07-02 01:48:07 +02:00
2010-07-12 08:10:52 +02:00
// authenticated visitor - here lie dragons
2010-08-20 02:23:13 +02:00
// If $remotecontact is true, we know that not only is this a remotely authenticated
// person, but that it is *our* contact, which is important in multi-user mode.
elseif ( $remote_contact ) {
2010-07-12 08:10:52 +02:00
$gs = '<<>>' ; // should be impossible to match
if ( count ( $groups )) {
foreach ( $groups as $g )
2010-07-13 11:00:53 +02:00
$gs .= '|<' . intval ( $g ) . '>' ;
2010-07-12 08:10:52 +02:00
}
$sql_extra = sprintf (
" AND ( `allow_cid` = '' OR `allow_cid` REGEXP '<%d>' )
2010-07-19 08:23:18 +02:00
AND ( `deny_cid` = '' OR NOT `deny_cid` REGEXP '<%d>' )
AND ( `allow_gid` = '' OR `allow_gid` REGEXP '%s' )
AND ( `deny_gid` = '' OR NOT `deny_gid` REGEXP '%s' ) " ,
2010-07-12 08:10:52 +02:00
2010-07-13 08:08:07 +02:00
intval ( $_SESSION [ 'visitor_id' ]),
intval ( $_SESSION [ 'visitor_id' ]),
2010-07-13 11:00:53 +02:00
dbesc ( $gs ),
dbesc ( $gs )
2010-07-02 01:48:07 +02:00
);
2010-07-12 08:10:52 +02:00
}
2010-07-02 01:48:07 +02:00
2010-07-12 08:10:52 +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-08-13 09:43:44 +02:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2011-03-28 04:53:36 +02:00
AND `item` . `id` = `item` . `parent` AND `item` . `wall` = 1
2010-07-12 08:10:52 +02:00
$sql_extra " ,
2010-08-20 02:23:13 +02:00
intval ( $a -> profile [ 'profile_uid' ])
2010-07-06 06:39:55 +02:00
2010-07-12 08:10:52 +02:00
);
2010-07-06 06:39:55 +02:00
2011-03-28 04:53:36 +02:00
if ( count ( $r )) {
2010-07-12 08:10:52 +02:00
$a -> set_pager_total ( $r [ 0 ][ 'total' ]);
2011-03-28 04:53:36 +02:00
$a -> set_pager_itemspage ( 40 );
}
2010-07-17 16:03:06 +02:00
2011-03-28 04:53:36 +02:00
$r = q ( " SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact-uid`
2010-07-12 08:10:52 +02:00
FROM `item` LEFT JOIN `contact` ON `contact` . `id` = `item` . `contact-id`
WHERE `item` . `uid` = % d AND `item` . `visible` = 1 AND `item` . `deleted` = 0
2010-08-13 09:43:44 +02:00
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
2011-03-28 04:53:36 +02:00
AND `item` . `id` = `item` . `parent` AND `item` . `wall` = 1
2010-07-12 08:10:52 +02:00
$sql_extra
2011-03-28 04:59:27 +02:00
ORDER BY `item` . `created` DESC LIMIT % d , % d " ,
2010-08-20 02:23:13 +02:00
intval ( $a -> profile [ 'profile_uid' ]),
2010-07-12 08:10:52 +02:00
intval ( $a -> pager [ 'start' ]),
intval ( $a -> pager [ 'itemspage' ])
);
2010-07-02 01:48:07 +02:00
2011-03-28 04:53:36 +02:00
$parents_arr = array ();
$parents_str = '' ;
if ( count ( $r )) {
foreach ( $r as $rr )
$parents_arr [] = $rr [ 'item_id' ];
$parents_str = implode ( ', ' , $parents_arr );
$r = q ( " SELECT `item`.*, `item`.`id` AS `item_id`,
`contact` . `name` , `contact` . `photo` , `contact` . `url` , `contact` . `network` , `contact` . `rel` ,
`contact` . `thumb` , `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
AND `contact` . `blocked` = 0 AND `contact` . `pending` = 0
AND `item` . `parent` IN ( % s )
$sql_extra
ORDER BY `parent` DESC , `gravity` ASC , `item` . `id` ASC " ,
intval ( $a -> profile [ 'profile_uid' ]),
dbesc ( $parents_str )
);
}
2011-01-14 05:28:33 +01:00
if ( $is_owner && ! $update )
2011-01-17 01:40:09 +01:00
$o .= get_birthdays ();
2011-01-14 05:28:33 +01:00
2010-09-23 03:00:19 +02:00
$cmnt_tpl = load_view_file ( 'view/comment_item.tpl' );
2010-07-12 08:10:52 +02:00
2010-09-23 03:00:19 +02:00
$like_tpl = load_view_file ( 'view/like.tpl' );
2011-03-17 06:04:00 +01:00
$noshare_tpl = load_view_file ( 'view/like_noshare.tpl' );
2010-09-17 12:10:19 +02:00
2010-09-23 03:00:19 +02:00
$tpl = load_view_file ( 'view/wall_item.tpl' );
2010-07-17 08:14:37 +02:00
2010-09-23 03:00:19 +02:00
$droptpl = load_view_file ( 'view/wall_item_drop.tpl' );
$fakedrop = load_view_file ( 'view/wall_fake_drop.tpl' );
2010-09-21 06:26:18 +02:00
2010-07-27 02:01:37 +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
2010-09-17 12:10:19 +02:00
$alike = array ();
$dlike = array ();
2011-01-06 22:26:25 +01:00
if ( $r !== false && count ( $r )) {
2010-09-17 12:10:19 +02:00
2011-03-28 04:53:36 +02:00
$comments = array ();
foreach ( $r as $rr ) {
if ( intval ( $rr [ 'gravity' ]) == 6 ) {
if ( ! x ( $comments , $rr [ 'parent' ]))
$comments [ $rr [ 'parent' ]] = 1 ;
else
$comments [ $rr [ 'parent' ]] += 1 ;
}
}
2010-09-17 12:10:19 +02:00
foreach ( $r as $item ) {
2010-11-01 00:38:22 +01:00
like_puller ( $a , $item , $alike , 'like' );
like_puller ( $a , $item , $dlike , 'dislike' );
2010-09-17 12:10:19 +02:00
}
2011-03-28 05:37:44 +02:00
$comments_collapsed = false ;
2010-07-17 08:14:37 +02:00
foreach ( $r as $item ) {
2010-09-17 12:10:19 +02:00
2010-09-28 04:48:45 +02:00
$sparkle = '' ;
2010-07-12 09:49:06 +02:00
$comment = '' ;
2010-09-17 12:10:19 +02:00
$likebuttons = '' ;
2010-07-17 08:14:37 +02:00
$template = $tpl ;
2010-07-17 16:03:06 +02:00
$redirect_url = $a -> get_baseurl () . '/redir/' . $item [ 'cid' ] ;
2010-09-17 12:10:19 +02:00
2010-11-01 00:38:22 +01:00
if ((( activity_match ( $item [ 'verb' ], ACTIVITY_LIKE )) || ( activity_match ( $item [ 'verb' ], ACTIVITY_DISLIKE )))
&& ( $item [ 'id' ] != $item [ 'parent' ]))
2010-09-17 12:10:19 +02:00
continue ;
2010-07-25 08:20:20 +02:00
2011-03-28 04:53:36 +02:00
if ( $item [ 'id' ] == $item [ 'parent' ]) {
$comments_seen = 0 ;
$comments_collapsed = false ;
}
else
$comments_seen ++ ;
if (( $comments [ $item [ 'parent' ]] > 2 ) && ( $comments_seen <= ( $comments [ $item [ 'parent' ]] - 2 )) && ( $item [ 'gravity' ] == 6 )) {
if ( ! $comments_collapsed ) {
$o .= '<div class="ccollapse-wrapper fakelink" id="ccollapse-wrapper-' . $item [ 'parent' ] . '" onclick="openClose(' . '\'ccollapse-' . $item [ 'parent' ] . '\');" >' . sprintf ( t ( 'See all %d comments' ), $comments [ $item [ 'parent' ]]) . '</div>' ;
$o .= '<div class="ccollapse" id="ccollapse-' . $item [ 'parent' ] . '" style="display: none;" >' ;
$comments_collapsed = true ;
}
}
if (( $comments [ $item [ 'parent' ]] > 2 ) && ( $comments_seen == ( $comments [ $item [ 'parent' ]] - 1 ))) {
$o .= '</div></div>' ;
}
2010-12-08 05:47:53 +01:00
$lock = ((( $item [ 'private' ]) || (( $item [ 'uid' ] == local_user ()) && ( strlen ( $item [ 'allow_cid' ]) || strlen ( $item [ 'allow_gid' ])
|| strlen ( $item [ 'deny_cid' ]) || strlen ( $item [ 'deny_gid' ]))))
2010-09-30 07:11:26 +02:00
? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t ( 'Private Message' ) . '" onclick="lockview(event,' . $item [ 'id' ] . ');" /></div>'
2010-09-29 07:12:27 +02:00
: '<div class="wall-item-lock"></div>' );
2010-08-20 02:23:13 +02:00
if ( can_write_wall ( $a , $a -> profile [ 'profile_uid' ])) {
2010-09-17 12:10:19 +02:00
if ( $item [ 'id' ] == $item [ 'parent' ]) {
2011-03-17 06:04:00 +01:00
$likebuttons = replace_macros ((( $item [ 'private' ]) ? $noshare_tpl : $like_tpl ), array (
2011-03-09 03:53:52 +01:00
'$id' => $item [ 'id' ],
'$likethis' => t ( " I like this \x28 toggle \x29 " ),
'$nolike' => t ( " I don't like this \x28 toggle \x29 " ),
2011-03-17 03:36:59 +01:00
'$share' => t ( 'Share' ),
2011-03-09 03:53:52 +01:00
'$wait' => t ( 'Please wait' )
));
2010-09-17 12:10:19 +02:00
}
2010-07-17 08:14:37 +02:00
if ( $item [ 'last-child' ]) {
$comment = replace_macros ( $cmnt_tpl , array (
2011-02-17 06:17:49 +01:00
'$return_path' => '' ,
'$jsreload' => '' , // $_SESSION['return_url'],
2010-07-26 07:51:45 +02:00
'$type' => 'wall-comment' ,
2010-07-17 08:14:37 +02:00
'$id' => $item [ 'item_id' ],
'$parent' => $item [ 'parent' ],
2010-08-20 02:23:13 +02:00
'$profile_uid' => $a -> profile [ 'profile_uid' ],
2010-08-14 16:55:18 +02:00
'$mylink' => $contact [ 'url' ],
2010-09-28 04:48:45 +02:00
'$mytitle' => t ( 'This is you' ),
2010-08-14 16:55:18 +02:00
'$myphoto' => $contact [ 'thumb' ],
2011-04-08 01:19:46 +02:00
'$comment' => t ( 'Comment' ),
'$submit' => t ( 'Submit' ),
2010-07-17 16:03:06 +02:00
'$ww' => ''
2010-07-12 09:49:06 +02:00
));
}
2010-07-12 08:10:52 +02:00
}
2010-07-17 08:14:37 +02:00
$profile_url = $item [ 'url' ];
2011-01-20 04:51:34 +01:00
// This is my profile page but I'm not the author of this post/comment. If it's somebody that's a fan or mutual friend,
2010-07-17 16:03:06 +02:00
// I can go directly to their profile as an authenticated guest.
2011-04-04 14:52:59 +02:00
if ( local_user () && ( $item [ 'contact-uid' ] == local_user ())
2010-10-18 09:43:49 +02:00
&& ( $item [ 'network' ] === 'dfrn' ) && ( ! $item [ 'self' ] )) {
2010-07-17 16:03:06 +02:00
$profile_url = $redirect_url ;
2010-09-28 04:48:45 +02:00
$sparkle = ' sparkle' ;
}
else
$sparkle = '' ;
2010-07-17 16:03:06 +02:00
2011-03-18 08:30:34 +01:00
$edpost = '' ;
if (( local_user ()) && ( $a -> profile [ 'profile_uid' ] == local_user ()) && ( $item [ 'id' ] == $item [ 'parent' ]) && ( intval ( $item [ 'wall' ]) == 1 ))
$edpost = '<a class="editpost" href="' . $a -> get_baseurl () . '/editpost/' . $item [ 'id' ] . '" title="' . t ( 'Edit' ) . '"><img src="images/pencil.gif" /></a>' ;
2010-12-05 07:09:16 +01:00
// We would prefer to use our own avatar link for this item because the one in the author-avatar might reference a
// remote site (which could be down). We will use author-avatar if we haven't got something stored locally.
// We use this same logic block in mod/network.php to determine it this is a third party post and we don't have any
// local contact info at all. In this module you should never encounter a third-party author, but we still will do
// the right thing if you ever do.
2011-01-20 04:51:34 +01:00
$diff_author = (( link_compare ( $item [ 'url' ], $item [ 'author-link' ])) ? false : true );
2010-12-05 07:09:16 +01:00
$profile_name = ((( strlen ( $item [ 'author-name' ])) && $diff_author ) ? $item [ 'author-name' ] : $item [ 'name' ]);
$profile_avatar = ((( strlen ( $item [ 'author-avatar' ])) && $diff_author ) ? $item [ 'author-avatar' ] : $item [ 'thumb' ]);
2010-07-17 16:03:06 +02:00
$profile_link = $profile_url ;
2010-07-17 08:14:37 +02:00
2010-07-26 07:51:45 +02:00
$drop = '' ;
2010-09-21 06:26:18 +02:00
$dropping = false ;
2010-07-26 07:51:45 +02:00
2010-10-30 13:59:10 +02:00
if (( $item [ 'contact-id' ] == remote_user ()) || ( $item [ 'uid' ] == local_user ()))
2010-09-21 06:26:18 +02:00
$dropping = true ;
2011-02-24 11:46:06 +01:00
$drop = replace_macros ((( $dropping ) ? $droptpl : $fakedrop ), array ( '$id' => $item [ 'id' ], '$delete' => t ( 'Delete' )));
2010-07-26 07:51:45 +02:00
2010-10-30 13:59:10 +02:00
$like = (( isset ( $alike [ $item [ 'id' ]])) ? format_like ( $alike [ $item [ 'id' ]], $alike [ $item [ 'id' ] . '-l' ], 'like' , $item [ 'id' ]) : '' );
$dislike = (( isset ( $dlike [ $item [ 'id' ]])) ? format_like ( $dlike [ $item [ 'id' ]], $dlike [ $item [ 'id' ] . '-l' ], 'dislike' , $item [ 'id' ]) : '' );
2011-03-08 16:50:10 +01:00
$location = (( $item [ 'location' ]) ? '<a target="map" title="' . $item [ 'location' ] . '" href="http://maps.google.com/?q=' . urlencode ( $item [ 'location' ]) . '">' . $item [ 'location' ] . '</a>' : '' );
$coord = (( $item [ 'coord' ]) ? '<a target="map" title="' . $item [ 'coord' ] . '" href="http://maps.google.com/?q=' . urlencode ( $item [ 'coord' ]) . '">' . $item [ 'coord' ] . '</a>' : '' );
2010-10-20 05:52:05 +02:00
if ( $coord ) {
if ( $location )
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>' ;
else
$location = '<span class="smalltext">' . $coord . '</span>' ;
}
2010-09-17 12:10:19 +02:00
2010-12-08 01:27:30 +01:00
$indent = (( $item [ 'parent' ] != $item [ 'item_id' ]) ? ' comment' : '' );
if ( strcmp ( datetime_convert ( 'UTC' , 'UTC' , $item [ 'created' ]), datetime_convert ( 'UTC' , 'UTC' , 'now - 12 hours' )) > 0 )
$indent .= ' shiny' ;
2011-03-31 16:52:51 +02:00
2010-12-26 02:46:25 +01:00
$tmp_item = replace_macros ( $template , array (
2010-07-17 16:03:06 +02:00
'$id' => $item [ 'item_id' ],
2011-02-24 11:32:46 +01:00
'$linktitle' => t ( 'View $name\'s profile' ),
2010-07-17 16:03:06 +02:00
'$profile_url' => $profile_link ,
2011-03-31 16:52:51 +02:00
'$item_photo_menu' => item_photo_menu ( $item ),
2010-07-17 16:03:06 +02:00
'$name' => $profile_name ,
'$thumb' => $profile_avatar ,
2010-09-28 04:48:45 +02:00
'$sparkle' => $sparkle ,
2010-07-28 04:27:14 +02:00
'$title' => $item [ 'title' ],
2010-12-09 02:05:51 +01:00
'$body' => smilies ( bbcode ( $item [ 'body' ])),
2010-07-17 16:03:06 +02:00
'$ago' => relative_date ( $item [ 'created' ]),
2010-09-29 07:12:27 +02:00
'$lock' => $lock ,
2010-10-20 05:52:05 +02:00
'$location' => $location ,
2010-12-08 01:27:30 +01:00
'$indent' => $indent ,
2011-02-16 11:07:11 +01:00
'$plink' => get_plink ( $item ),
2011-03-18 08:30:34 +01:00
'$edpost' => $edpost ,
2010-07-26 07:51:45 +02:00
'$drop' => $drop ,
2010-09-17 12:10:19 +02:00
'$like' => $like ,
'$vote' => $likebuttons ,
'$dislike' => $dislike ,
2010-07-17 16:03:06 +02:00
'$comment' => $comment
));
2010-12-26 02:46:25 +01:00
$arr = array ( 'item' => $item , 'output' => $tmp_item );
call_hooks ( 'display_item' , $arr );
$o .= $arr [ 'output' ];
2010-08-09 02:08:39 +02:00
2010-07-02 01:48:07 +02:00
}
}
2010-07-25 00:21:33 +02:00
if ( $update ) {
return $o ;
}
2010-07-12 08:10:52 +02:00
$o .= paginate ( $a );
2011-01-23 23:56:14 +01:00
$o .= '<div class="cc-license">' . t ( 'Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.' ) . '</div>' ;
2010-07-02 01:48:07 +02:00
return $o ;
2010-12-23 21:32:13 +01:00
}