2011-03-02 04:36:24 +00:00
< ? php
2018-01-21 18:33:59 +00:00
/**
* @ file mod / manage . php
*/
2017-04-30 04:07:00 +00:00
use Friendica\App ;
2018-10-17 12:19:58 +00:00
use Friendica\Core\Authentication ;
2018-01-17 18:42:40 +00:00
use Friendica\Core\Addon ;
2018-01-21 18:33:59 +00:00
use Friendica\Core\L10n ;
2017-08-26 06:04:21 +00:00
use Friendica\Core\System ;
2018-07-21 12:40:21 +00:00
use Friendica\Database\DBA ;
2013-01-26 19:52:21 +00:00
2018-01-21 18:33:59 +00:00
require_once " include/text.php " ;
2016-02-07 14:11:34 +00:00
2017-01-09 12:14:25 +00:00
function manage_post ( App $a ) {
2011-03-02 04:36:24 +00:00
2016-12-20 10:56:34 +00:00
if ( ! local_user ()) {
2011-03-02 04:36:24 +00:00
return ;
2016-12-20 10:56:34 +00:00
}
2011-03-02 04:36:24 +00:00
2012-01-27 00:52:12 +00:00
$uid = local_user ();
$orig_record = $a -> user ;
2017-03-21 16:02:59 +00:00
if (( x ( $_SESSION , 'submanage' )) && intval ( $_SESSION [ 'submanage' ])) {
$r = q ( " select * from user where uid = %d limit 1 " ,
2012-01-27 00:52:12 +00:00
intval ( $_SESSION [ 'submanage' ])
);
2018-07-21 12:46:04 +00:00
if ( DBA :: isResult ( $r )) {
2012-01-27 00:52:12 +00:00
$uid = intval ( $r [ 0 ][ 'uid' ]);
$orig_record = $r [ 0 ];
}
}
2017-03-25 12:14:50 +00:00
$r = q ( " SELECT * FROM `manage` WHERE `uid` = %d " ,
2012-01-27 00:52:12 +00:00
intval ( $uid )
);
$submanage = $r ;
2018-02-08 22:18:34 +00:00
$identity = ( x ( $_POST [ 'identity' ]) ? intval ( $_POST [ 'identity' ]) : 0 );
if ( ! $identity ) {
2011-03-02 04:36:24 +00:00
return ;
2017-03-25 12:14:50 +00:00
}
2011-03-02 04:36:24 +00:00
2012-01-27 00:52:12 +00:00
$limited_id = 0 ;
$original_id = $uid ;
2018-07-21 12:46:04 +00:00
if ( DBA :: isResult ( $submanage )) {
2017-03-25 12:14:50 +00:00
foreach ( $submanage as $m ) {
if ( $identity == $m [ 'mid' ]) {
2012-01-27 00:52:12 +00:00
$limited_id = $m [ 'mid' ];
break ;
}
}
}
2017-03-25 12:14:50 +00:00
if ( $limited_id ) {
2012-01-27 00:52:12 +00:00
$r = q ( " SELECT * FROM `user` WHERE `uid` = %d LIMIT 1 " ,
intval ( $limited_id )
);
2017-03-25 12:14:50 +00:00
} else {
2018-02-08 22:18:34 +00:00
// Check if the target user is one of our children
$r = q ( " SELECT * FROM `user` WHERE `uid` = %d AND `parent-uid` = %d LIMIT 1 " ,
2012-01-27 00:52:12 +00:00
intval ( $identity ),
2018-07-21 13:10:13 +00:00
DBA :: escape ( $orig_record [ 'uid' ])
2012-01-27 00:52:12 +00:00
);
2018-02-08 22:18:34 +00:00
// Check if the target user is one of our siblings
2018-07-21 12:46:04 +00:00
if ( ! DBA :: isResult ( $r ) && ( $orig_record [ 'parent-uid' ] != 0 )) {
2018-02-08 22:18:34 +00:00
$r = q ( " SELECT * FROM `user` WHERE `uid` = %d AND `parent-uid` = %d LIMIT 1 " ,
intval ( $identity ),
2018-07-21 13:10:13 +00:00
DBA :: escape ( $orig_record [ 'parent-uid' ])
2018-02-08 22:18:34 +00:00
);
}
// Check if it's our parent
2018-07-21 12:46:04 +00:00
if ( ! DBA :: isResult ( $r ) && ( $orig_record [ 'parent-uid' ] != 0 ) && ( $orig_record [ 'parent-uid' ] == $identity )) {
2018-02-08 22:18:34 +00:00
$r = q ( " SELECT * FROM `user` WHERE `uid` = %d LIMIT 1 " ,
intval ( $identity )
);
}
// Finally check if it's out own user
2018-07-21 12:46:04 +00:00
if ( ! DBA :: isResult ( $r ) && ( $orig_record [ 'uid' ] != 0 ) && ( $orig_record [ 'uid' ] == $identity )) {
2018-02-08 22:18:34 +00:00
$r = q ( " SELECT * FROM `user` WHERE `uid` = %d LIMIT 1 " ,
intval ( $identity )
);
}
2012-01-27 00:52:12 +00:00
}
2011-03-02 04:36:24 +00:00
2018-07-21 12:46:04 +00:00
if ( ! DBA :: isResult ( $r )) {
2011-03-02 04:36:24 +00:00
return ;
2016-12-20 09:10:33 +00:00
}
2011-03-02 04:36:24 +00:00
unset ( $_SESSION [ 'authenticated' ]);
unset ( $_SESSION [ 'uid' ]);
unset ( $_SESSION [ 'visitor_id' ]);
unset ( $_SESSION [ 'administrator' ]);
unset ( $_SESSION [ 'cid' ]);
unset ( $_SESSION [ 'theme' ]);
2012-09-06 23:24:34 +00:00
unset ( $_SESSION [ 'mobile-theme' ]);
2011-03-02 04:36:24 +00:00
unset ( $_SESSION [ 'page_flags' ]);
2012-01-13 03:18:01 +00:00
unset ( $_SESSION [ 'return_url' ]);
2017-03-25 12:14:50 +00:00
if ( x ( $_SESSION , 'submanage' )) {
2012-01-27 00:52:12 +00:00
unset ( $_SESSION [ 'submanage' ]);
2017-03-25 12:14:50 +00:00
}
if ( x ( $_SESSION , 'sysmsg' )) {
2013-01-26 19:52:21 +00:00
unset ( $_SESSION [ 'sysmsg' ]);
2017-03-24 19:57:52 +00:00
}
2017-03-25 12:14:50 +00:00
if ( x ( $_SESSION , 'sysmsg_info' )) {
2013-01-26 19:52:21 +00:00
unset ( $_SESSION [ 'sysmsg_info' ]);
2017-03-24 19:57:52 +00:00
}
2011-03-02 04:36:24 +00:00
2018-10-17 19:30:41 +00:00
Authentication :: setAuthenticatedSessionForUser ( $r [ 0 ], true , true );
2011-03-02 04:36:24 +00:00
2017-03-24 19:57:52 +00:00
if ( $limited_id ) {
2012-01-27 00:52:12 +00:00
$_SESSION [ 'submanage' ] = $original_id ;
2017-03-24 19:57:52 +00:00
}
2012-01-27 00:52:12 +00:00
2018-01-15 13:05:12 +00:00
$ret = [];
2018-01-17 18:42:40 +00:00
Addon :: callHooks ( 'home_init' , $ret );
2012-10-09 15:47:14 +00:00
2017-08-26 07:32:10 +00:00
goaway ( System :: baseUrl () . " /profile/ " . $a -> user [ 'nickname' ] );
2011-03-02 04:36:24 +00:00
// NOTREACHED
}
2016-02-07 14:11:34 +00:00
2017-01-09 12:14:25 +00:00
function manage_content ( App $a ) {
2011-03-02 04:36:24 +00:00
2016-12-20 10:56:34 +00:00
if ( ! local_user ()) {
2018-01-21 18:33:59 +00:00
notice ( L10n :: t ( 'Permission denied.' ) . EOL );
2011-03-02 04:36:24 +00:00
return ;
}
2018-08-01 05:29:58 +00:00
if ( ! empty ( $_GET [ 'identity' ])) {
2015-10-26 22:11:42 +00:00
$_POST [ 'identity' ] = $_GET [ 'identity' ];
manage_post ( $a );
return ;
}
2013-01-26 19:52:21 +00:00
$identities = $a -> identities ;
2015-10-25 13:00:08 +00:00
2015-10-25 15:49:45 +00:00
//getting additinal information for each identity
2015-10-25 13:00:08 +00:00
foreach ( $identities as $key => $id ) {
2015-10-25 23:19:55 +00:00
$thumb = q ( " SELECT `thumb` FROM `contact` WHERE `uid` = '%s' AND `self` = 1 " ,
2018-07-21 13:10:13 +00:00
DBA :: escape ( $id [ 'uid' ])
2015-10-25 23:19:55 +00:00
);
2017-03-24 19:57:52 +00:00
$identities [ $key ][ 'thumb' ] = $thumb [ 0 ][ 'thumb' ];
2015-10-25 13:00:08 +00:00
2017-03-24 19:57:52 +00:00
$identities [ $key ][ 'selected' ] = ( $id [ 'nickname' ] === $a -> user [ 'nickname' ]);
2015-11-28 21:56:48 +00:00
$notifications = 0 ;
$r = q ( " SELECT DISTINCT(`parent`) FROM `notify` WHERE `uid` = %d AND NOT `seen` AND NOT (`type` IN (%d, %d)) " ,
intval ( $id [ 'uid' ]), intval ( NOTIFY_INTRO ), intval ( NOTIFY_MAIL ));
2017-03-24 19:57:52 +00:00
2018-07-21 12:46:04 +00:00
if ( DBA :: isResult ( $r )) {
2015-11-28 21:56:48 +00:00
$notifications = sizeof ( $r );
2017-03-24 19:57:52 +00:00
}
2015-11-28 21:56:48 +00:00
$r = q ( " SELECT DISTINCT(`convid`) FROM `mail` WHERE `uid` = %d AND NOT `seen` " ,
intval ( $id [ 'uid' ]));
2017-03-24 19:57:52 +00:00
2018-07-21 12:46:04 +00:00
if ( DBA :: isResult ( $r )) {
2015-11-28 21:56:48 +00:00
$notifications = $notifications + sizeof ( $r );
2017-03-24 19:57:52 +00:00
}
2015-11-28 21:56:48 +00:00
2015-11-28 22:35:02 +00:00
$r = q ( " SELECT COUNT(*) AS `introductions` FROM `intro` WHERE NOT `blocked` AND NOT `ignore` AND `uid` = %d " ,
intval ( $id [ 'uid' ]));
2017-03-24 19:57:52 +00:00
2018-07-21 12:46:04 +00:00
if ( DBA :: isResult ( $r )) {
2015-11-28 22:35:02 +00:00
$notifications = $notifications + $r [ 0 ][ " introductions " ];
2017-03-24 19:57:52 +00:00
}
2015-11-28 22:35:02 +00:00
2015-11-28 21:56:48 +00:00
$identities [ $key ][ 'notifications' ] = $notifications ;
2011-03-02 04:36:24 +00:00
}
2018-01-15 13:05:12 +00:00
$o = replace_macros ( get_markup_template ( 'manage.tpl' ), [
2018-01-22 14:16:25 +00:00
'$title' => L10n :: t ( 'Manage Identities and/or Pages' ),
'$desc' => L10n :: t ( 'Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions' ),
'$choose' => L10n :: t ( 'Select an identity to manage: ' ),
2013-01-26 19:52:21 +00:00
'$identities' => $identities ,
2018-01-22 14:16:25 +00:00
'$submit' => L10n :: t ( 'Submit' ),
2018-01-15 13:05:12 +00:00
]);
2011-03-02 04:36:24 +00:00
return $o ;
2016-02-07 14:11:34 +00:00
2011-05-23 09:39:57 +00:00
}