2010-07-20 05:52:31 +00:00
< ? php
2011-07-25 14:54:39 +00:00
require_once ( " include/datetime.php " );
2010-07-20 05:52:31 +00:00
function ping_init ( & $a ) {
if ( ! local_user ())
xml_status ( 0 );
2011-07-25 14:54:39 +00:00
2011-08-23 11:52:20 +00:00
$comments = array ();
$likes = array ();
$dislikes = array ();
$friends = array ();
2011-08-23 12:02:04 +00:00
$r = q ( " SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
2011-09-26 10:14:48 +00:00
`item` . `author-link` , `item` . `author-avatar` , `item` . `created` , `item` . `object` ,
2011-08-23 11:52:20 +00:00
`pitem` . `author-name` as `pname` , `pitem` . `author-link` as `plink`
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1 AND
`item` . `deleted` = 0 AND `item` . `uid` = % d AND `item` . `wall` = 0 " ,
2010-10-18 21:34:59 +00:00
intval ( local_user ())
2010-07-20 05:52:31 +00:00
);
2011-08-23 11:52:20 +00:00
$network = count ( $r );
foreach ( $r as $it ) {
switch ( $it [ 'verb' ]){
2011-09-26 10:14:48 +00:00
case ACTIVITY_LIKE :
2011-08-23 11:52:20 +00:00
$likes [] = $it ;
break ;
2011-09-26 10:14:48 +00:00
case ACTIVITY_DISLIKE :
2011-08-23 11:52:20 +00:00
$dislikes [] = $it ;
break ;
2011-09-26 10:14:48 +00:00
case ACTIVITY_FRIEND :
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
2011-08-23 11:52:20 +00:00
$friends [] = $it ;
break ;
default :
2011-08-23 12:02:04 +00:00
if ( $it [ 'parent' ] != $it [ 'id' ]) $comments [] = $it ;
2011-08-23 11:52:20 +00:00
}
}
2010-07-20 05:52:31 +00:00
2011-08-23 11:52:20 +00:00
2011-08-23 12:02:04 +00:00
$r = q ( " SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
2011-09-26 10:14:48 +00:00
`item` . `author-link` , `item` . `author-avatar` , `item` . `created` , `item` . `object` ,
2011-08-23 11:52:20 +00:00
`pitem` . `author-name` as `pname` , `pitem` . `author-link` as `plink`
FROM `item` INNER JOIN `item` as `pitem` ON `pitem` . `id` = `item` . `parent`
WHERE `item` . `unseen` = 1 AND `item` . `visible` = 1 AND
`item` . `deleted` = 0 AND `item` . `uid` = % d AND `item` . `wall` = 1 " ,
2010-10-18 21:34:59 +00:00
intval ( local_user ())
2011-08-23 11:52:20 +00:00
);
$home = count ( $r );
foreach ( $r as $it ) {
switch ( $it [ 'verb' ]){
2011-09-26 10:14:48 +00:00
case ACTIVITY_LIKE :
2011-08-23 11:52:20 +00:00
$likes [] = $it ;
break ;
2011-09-26 10:14:48 +00:00
case ACTIVITY_DISLIKE :
2011-08-23 11:52:20 +00:00
$dislikes [] = $it ;
break ;
2011-09-26 10:14:48 +00:00
case ACTIVITY_FRIEND :
$xmlhead = " < " . " ?xml version='1.0' encoding='UTF-8' ? " . " > " ;
$obj = parse_xml_string ( $xmlhead . $it [ 'object' ]);
$it [ 'fname' ] = $obj -> title ;
2011-08-23 11:52:20 +00:00
$friends [] = $it ;
break ;
default :
2011-08-23 12:02:04 +00:00
if ( $it [ 'parent' ] != $it [ 'id' ]) $comments [] = $it ;
2011-08-23 11:52:20 +00:00
}
}
2010-07-20 05:52:31 +00:00
2011-08-17 19:59:06 +00:00
$intros1 = q ( " SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`,
2011-07-25 14:54:39 +00:00
`fcontact` . `name` , `fcontact` . `url` , `fcontact` . `photo`
FROM `intro` LEFT JOIN `fcontact` ON `intro` . `fid` = `fcontact` . `id`
2011-08-17 19:59:06 +00:00
WHERE `intro` . `uid` = % d AND `intro` . `blocked` = 0 AND `intro` . `ignore` = 0 AND `intro` . `fid` != 0 " ,
2010-10-18 21:34:59 +00:00
intval ( local_user ())
2010-07-20 05:52:31 +00:00
);
2011-08-17 19:59:06 +00:00
$intros2 = q ( " SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`,
`contact` . `name` , `contact` . `url` , `contact` . `photo`
FROM `intro` LEFT JOIN `contact` ON `intro` . `contact-id` = `contact` . `id`
WHERE `intro` . `uid` = % d AND `intro` . `blocked` = 0 AND `intro` . `ignore` = 0 AND `intro` . `contact-id` != 0 " ,
intval ( local_user ())
);
$intro = $intros1 [ 0 ][ 'total' ] + $intros2 [ 0 ][ 'total' ];
if ( $intros1 [ 0 ][ 'total' ] == 0 ) $intros1 = Array ();
if ( $intros2 [ 0 ][ 'total' ] == 0 ) $intros2 = Array ();
$intros = $intros1 + $intros2 ;
2010-07-20 05:52:31 +00:00
2010-10-30 20:25:37 +00:00
$myurl = $a -> get_baseurl () . '/profile/' . $a -> user [ 'nickname' ] ;
2011-07-25 14:54:39 +00:00
$mails = q ( " SELECT *, COUNT(*) AS `total` FROM `mail`
2010-07-31 04:22:52 +00:00
WHERE `uid` = % d AND `seen` = 0 AND `from-url` != '%s' " ,
2010-10-18 21:34:59 +00:00
intval ( local_user ()),
2010-07-31 04:22:52 +00:00
dbesc ( $myurl )
);
2011-07-25 14:54:39 +00:00
$mail = $mails [ 0 ][ 'total' ];
2011-07-29 14:24:09 +00:00
if ( $a -> config [ 'register_policy' ] == REGISTER_APPROVE && is_site_admin ()){
$regs = q ( " SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) as `total` FROM `contact` RIGHT JOIN `register` ON `register`.`uid`=`contact`.`uid` WHERE `contact`.`self`=1 " );
$register = $regs [ 0 ][ 'total' ];
} else {
$register = " 0 " ;
}
2011-08-23 11:52:20 +00:00
function xmlize ( $href , $name , $url , $photo , $date , $message ){
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>' ;
return sprintf ( $notsxml ,
$href , $name , $url , $photo , $date , $message
);
}
2010-07-31 04:22:52 +00:00
2010-07-20 05:52:31 +00:00
header ( " Content-type: text/xml " );
2011-07-25 14:54:39 +00:00
echo " <?xml version= \" 1.0 \" encoding= \" UTF-8 \" ?>
< result >
< intro > $intro </ intro >
< mail > $mail </ mail >
< net > $network </ net >
2011-07-29 14:24:09 +00:00
< home > $home </ home > " ;
if ( $register != 0 ) echo " <register> $register </register> " ;
2011-08-23 11:52:20 +00:00
$tot = $mail + $intro + $register + count ( $comments ) + count ( $likes ) + count ( $dislikes ) + count ( $friends );
echo ' <notif count="' . $tot . '">' ;
2011-07-25 14:54:39 +00:00
if ( $intro > 0 ){
foreach ( $intros as $i ) {
2011-08-23 11:52:20 +00:00
echo xmlize ( $a -> get_baseurl () . '/notifications/' . $i [ 'id' ], $i [ 'name' ], $i [ 'url' ], $i [ 'photo' ], relative_date ( $i [ 'datetime' ]), t ( " { 0} wants to be your friend " ) );
2011-07-25 14:54:39 +00:00
};
}
if ( $mail > 0 ){
foreach ( $mails as $i ) {
2011-08-23 11:52:20 +00:00
echo xmlize ( $a -> get_baseurl () . '/message/' . $i [ 'id' ], $i [ 'from-name' ], $i [ 'from-url' ], $i [ 'from-photo' ], relative_date ( $i [ 'created' ]), t ( " { 0} sent you a message " ) );
2011-07-25 14:54:39 +00:00
};
}
2011-07-29 14:24:09 +00:00
if ( $register > 0 ){
foreach ( $regs as $i ) {
2011-08-23 11:52:20 +00:00
echo xmlize ( $a -> get_baseurl () . '/admin/users/' , $i [ 'name' ], $i [ 'url' ], $i [ 'micro' ], relative_date ( $i [ 'created' ]), t ( " { 0} requested registration " ) );
};
}
if ( count ( $comments )){
foreach ( $comments as $i ) {
echo xmlize ( $a -> get_baseurl () . '/display/' . $a -> user [ 'nickname' ] . " / " . $i [ 'parent' ], $i [ 'author-name' ], $i [ 'author-link' ], $i [ 'author-avatar' ], relative_date ( $i [ 'created' ]), sprintf ( t ( " { 0} commented %s's post " ), $i [ 'pname' ] ) );
};
}
if ( count ( $likes )){
foreach ( $likes as $i ) {
echo xmlize ( $a -> get_baseurl () . '/display/' . $a -> user [ 'nickname' ] . " / " . $i [ 'parent' ], $i [ 'author-name' ], $i [ 'author-link' ], $i [ 'author-avatar' ], relative_date ( $i [ 'created' ]), sprintf ( t ( " { 0} like %s's post " ), $i [ 'pname' ] ) );
};
}
if ( count ( $dislikes )){
foreach ( $dislikes as $i ) {
echo xmlize ( $a -> get_baseurl () . '/display/' . $a -> user [ 'nickname' ] . " / " . $i [ 'parent' ], $i [ 'author-name' ], $i [ 'author-link' ], $i [ 'author-avatar' ], relative_date ( $i [ 'created' ]), sprintf ( t ( " { 0} dislike %s's post " ), $i [ 'pname' ] ) );
};
}
if ( count ( $friends )){
foreach ( $friends as $i ) {
2011-09-26 10:14:48 +00:00
echo xmlize ( $a -> get_baseurl () . '/display/' . $a -> user [ 'nickname' ] . " / " . $i [ 'parent' ], $i [ 'author-name' ], $i [ 'author-link' ], $i [ 'author-avatar' ], relative_date ( $i [ 'created' ]), sprintf ( t ( " { 0} is now friend with %s " ), $i [ 'fname' ] ) );
2011-07-29 14:24:09 +00:00
};
}
2011-07-25 14:54:39 +00:00
2011-09-05 12:01:21 +00:00
echo " </notif> " ;
echo " <sysmsgs> " ;
if ( x ( $_SESSION , 'sysmsg' )){
foreach ( $_SESSION [ 'sysmsg' ] as $m ){
echo " <notice> " . ( $m ) . " </notice> " ;
}
$_SESSION [ 'sysmsg' ] = array ();
unset ( $_SESSION [ 'sysmsg' ]);
}
if ( x ( $_SESSION , 'sysmsg_info' )){
foreach ( $_SESSION [ 'sysmsg_info' ] as $m ){
echo " <info> " . ( $m ) . " </info> " ;
}
$_SESSION [ 'sysmsg_info' ] = array ();
unset ( $_SESSION [ 'sysmsg_info' ]);
}
echo " </sysmsgs> " ;
echo " </result>
2011-07-25 14:54:39 +00:00
" ;
2010-07-20 05:52:31 +00:00
killme ();
}