2011-03-02 05:36:24 +01:00
< ? php
2018-01-21 19:33:59 +01:00
/**
* @ file mod / manage . php
*/
2019-05-13 06:55:26 +02:00
2017-04-30 06:07:00 +02:00
use Friendica\App ;
2018-12-26 07:06:24 +01:00
use Friendica\Core\Hook ;
2018-01-21 19:33:59 +01:00
use Friendica\Core\L10n ;
2018-10-31 15:35:50 +01:00
use Friendica\Core\Renderer ;
2019-05-13 06:55:26 +02:00
use Friendica\Core\Session ;
2018-07-21 14:40:21 +02:00
use Friendica\Database\DBA ;
2013-01-26 20:52:21 +01:00
2017-01-09 13:14:25 +01:00
function manage_post ( App $a ) {
2011-03-02 05:36:24 +01:00
2019-09-17 06:05:26 +02:00
if ( ! local_user ()) {
2011-03-02 05:36:24 +01:00
return ;
2016-12-20 11:56:34 +01:00
}
2011-03-02 05:36:24 +01:00
2012-01-27 01:52:12 +01:00
$uid = local_user ();
$orig_record = $a -> user ;
2018-11-30 15:06:22 +01:00
if ( ! empty ( $_SESSION [ 'submanage' ])) {
2019-09-17 06:05:26 +02:00
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $_SESSION [ 'submanage' ]]);
if ( DBA :: isResult ( $user )) {
$uid = intval ( $user [ 'uid' ]);
$orig_record = $user ;
2012-01-27 01:52:12 +01:00
}
}
2018-11-30 15:06:22 +01:00
$identity = ( ! empty ( $_POST [ 'identity' ]) ? intval ( $_POST [ 'identity' ]) : 0 );
2018-02-08 23:18:34 +01:00
if ( ! $identity ) {
2011-03-02 05:36:24 +01:00
return ;
2017-03-25 13:14:50 +01:00
}
2011-03-02 05:36:24 +01:00
2012-01-27 01:52:12 +01:00
$limited_id = 0 ;
$original_id = $uid ;
2019-09-17 06:05:26 +02:00
$manage = DBA :: select ( 'manage' , [ 'mid' ], [ 'uid' => $uid ]);
while ( $m = DBA :: fetch ( $manage )) {
if ( $identity == $m [ 'mid' ]) {
$limited_id = $m [ 'mid' ];
break ;
2012-01-27 01:52:12 +01:00
}
}
2019-09-17 06:05:26 +02:00
DBA :: close ( $manage );
2012-01-27 01:52:12 +01:00
2017-03-25 13:14:50 +01:00
if ( $limited_id ) {
2019-09-17 06:05:26 +02:00
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $limited_id ]);
2017-03-25 13:14:50 +01:00
} else {
2018-02-08 23:18:34 +01:00
// Check if the target user is one of our children
2019-09-17 06:05:26 +02:00
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $identity , 'parent-uid' => $orig_record [ 'uid' ]]);
2018-02-08 23:18:34 +01:00
// Check if the target user is one of our siblings
2019-09-17 06:05:26 +02:00
if ( ! DBA :: isResult ( $user ) && ( $orig_record [ 'parent-uid' ] != 0 )) {
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $identity , 'parent-uid' => $orig_record [ 'parent-uid' ]]);
2018-02-08 23:18:34 +01:00
}
// Check if it's our parent
2019-09-17 06:05:26 +02:00
if ( ! DBA :: isResult ( $user ) && ( $orig_record [ 'parent-uid' ] != 0 ) && ( $orig_record [ 'parent-uid' ] == $identity )) {
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $identity ]);
2018-02-08 23:18:34 +01:00
}
// Finally check if it's out own user
2019-09-17 06:05:26 +02:00
if ( ! DBA :: isResult ( $user ) && ( $orig_record [ 'uid' ] != 0 ) && ( $orig_record [ 'uid' ] == $identity )) {
$user = DBA :: selectFirst ( 'user' , [], [ 'uid' => $identity ]);
2018-02-08 23:18:34 +01:00
}
2019-09-17 06:05:26 +02:00
2012-01-27 01:52:12 +01:00
}
2011-03-02 05:36:24 +01:00
2019-09-17 06:05:26 +02:00
if ( ! DBA :: isResult ( $user )) {
2011-03-02 05:36:24 +01:00
return ;
2016-12-20 10:10:33 +01:00
}
2011-03-02 05:36:24 +01:00
unset ( $_SESSION [ 'authenticated' ]);
unset ( $_SESSION [ 'uid' ]);
unset ( $_SESSION [ 'visitor_id' ]);
unset ( $_SESSION [ 'administrator' ]);
unset ( $_SESSION [ 'cid' ]);
unset ( $_SESSION [ 'theme' ]);
2012-09-07 01:24:34 +02:00
unset ( $_SESSION [ 'mobile-theme' ]);
2011-03-02 05:36:24 +01:00
unset ( $_SESSION [ 'page_flags' ]);
2018-10-19 23:55:11 +02:00
unset ( $_SESSION [ 'return_path' ]);
2018-11-30 15:06:22 +01:00
if ( ! empty ( $_SESSION [ 'submanage' ])) {
2012-01-27 01:52:12 +01:00
unset ( $_SESSION [ 'submanage' ]);
2017-03-25 13:14:50 +01:00
}
2018-11-30 15:06:22 +01:00
if ( ! empty ( $_SESSION [ 'sysmsg' ])) {
2013-01-26 20:52:21 +01:00
unset ( $_SESSION [ 'sysmsg' ]);
2017-03-24 20:57:52 +01:00
}
2018-11-30 15:06:22 +01:00
if ( ! empty ( $_SESSION [ 'sysmsg_info' ])) {
2013-01-26 20:52:21 +01:00
unset ( $_SESSION [ 'sysmsg_info' ]);
2017-03-24 20:57:52 +01:00
}
2011-03-02 05:36:24 +01:00
2019-09-17 06:05:26 +02:00
Session :: setAuthenticatedForUser ( $a , $user , true , true );
2011-03-02 05:36:24 +01:00
2017-03-24 20:57:52 +01:00
if ( $limited_id ) {
2012-01-27 01:52:12 +01:00
$_SESSION [ 'submanage' ] = $original_id ;
2017-03-24 20:57:52 +01:00
}
2012-01-27 01:52:12 +01:00
2018-01-15 14:05:12 +01:00
$ret = [];
2019-09-17 06:05:26 +02:00
Hook :: callAll ( 'home_init' , $ret );
2012-10-09 17:47:14 +02:00
2019-09-17 06:05:26 +02:00
$a -> internalRedirect ( 'profile/' . $a -> user [ 'nickname' ]);
2011-03-02 05:36:24 +01:00
// NOTREACHED
}
2017-01-09 13:14:25 +01:00
function manage_content ( App $a ) {
2011-03-02 05:36:24 +01:00
2019-09-17 06:05:26 +02:00
if ( ! local_user ()) {
2018-01-21 19:33:59 +01:00
notice ( L10n :: t ( 'Permission denied.' ) . EOL );
2011-03-02 05:36:24 +01:00
return ;
}
2018-08-01 07:29:58 +02:00
if ( ! empty ( $_GET [ 'identity' ])) {
2015-10-26 23:11:42 +01:00
$_POST [ 'identity' ] = $_GET [ 'identity' ];
manage_post ( $a );
return ;
}
2013-01-26 20:52:21 +01:00
$identities = $a -> identities ;
2015-10-25 14:00:08 +01:00
2015-10-25 16:49:45 +01:00
//getting additinal information for each identity
2019-09-17 06:05:26 +02:00
foreach ( $identities as $key => $id ) {
$thumb = DBA :: selectFirst ( 'contact' , [ 'thumb' ], [ 'uid' => $id [ 'uid' ] , 'self' => true ]);
if ( ! DBA :: isResult ( $thumb )) {
continue ;
}
2015-10-26 00:19:55 +01:00
2019-09-17 06:05:26 +02:00
$identities [ $key ][ 'thumb' ] = $thumb [ 'thumb' ];
2015-10-25 14:00:08 +01:00
2017-03-24 20:57:52 +01:00
$identities [ $key ][ 'selected' ] = ( $id [ 'nickname' ] === $a -> user [ 'nickname' ]);
2015-11-28 22:56:48 +01:00
2019-09-17 06:05:26 +02:00
$condition = [ " `uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen` " , $id [ 'uid' ], NOTIFY_INTRO , NOTIFY_MAIL ];
$params = [ 'distinct' => true , 'expression' => 'parent' ];
$notifications = DBA :: count ( 'notify' , $condition , $params );
2015-11-28 22:56:48 +01:00
2019-09-17 06:05:26 +02:00
$params = [ 'distinct' => true , 'expression' => 'convid' ];
$notifications += DBA :: count ( 'mail' , [ 'uid' => $id [ 'uid' ], 'seen' => false ], $params );
2017-03-24 20:57:52 +01:00
2019-09-17 06:05:26 +02:00
$notifications += DBA :: count ( 'intro' , [ 'blocked' => false , 'ignore' => false , 'uid' => $id [ 'uid' ]]);
2015-11-28 23:35:02 +01:00
2015-11-28 22:56:48 +01:00
$identities [ $key ][ 'notifications' ] = $notifications ;
2011-03-02 05:36:24 +01:00
}
2018-10-31 15:44:06 +01:00
$o = Renderer :: replaceMacros ( Renderer :: getMarkupTemplate ( 'manage.tpl' ), [
2018-01-22 15:16:25 +01: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 20:52:21 +01:00
'$identities' => $identities ,
2018-01-22 15:16:25 +01:00
'$submit' => L10n :: t ( 'Submit' ),
2018-01-15 14:05:12 +01:00
]);
2011-03-02 05:36:24 +01:00
return $o ;
2016-02-07 15:11:34 +01:00
2011-05-23 11:39:57 +02:00
}