function post() { if (!local_channel()) { return; } if ($_SESSION['delegate']) { return; } if (!x($_POST, 'qxz_password') || !strlen(trim($_POST['qxz_password']))) { return; } if (!x($_POST, 'verify') || !strlen(trim($_POST['verify']))) { return; } if ($_POST['verify'] !== $_SESSION['remove_account_verify']) { return; } $account = \App::get_account(); $account_id = get_account_id(); if (!account_verify_password($account['account_email'], $_POST['qxz_password'])) { return; } if ($account['account_password_changed'] != NULL_DATE) { $d1 = datetime_convert('UTC', 'UTC', 'now - 48 hours'); if ($account['account_password_changed'] > d1) { notice(t('Account removals are not allowed within 48 hours of changing the account password.') . EOL); return; } } $global_remove = intval($_POST['global']); account_remove($account_id, 1 - $global_remove); }
function removeaccount_post(&$a) { if (!local_user()) { return; } if (x($_SESSION, 'submanage') && intval($_SESSION['submanage'])) { return; } if (!x($_POST, 'qxz_password') || !strlen(trim($_POST['qxz_password']))) { return; } if (!x($_POST, 'verify') || !strlen(trim($_POST['verify']))) { return; } if ($_POST['verify'] !== $_SESSION['remove_account_verify']) { return; } $account = $a->get_account(); $account_id = get_account_id(); if (!account_verify_password($account['account_email'], $_POST['qxz_password'])) { return; } if ($account['account_password_changed'] != NULL_DATE) { $d1 = datetime_convert('UTC', 'UTC', 'now - 48 hours'); if ($account['account_password_changed'] > d1) { notice(t('Account removals are not allowed within 48 hours of changing the account password.') . EOL); return; } } require_once 'include/Contact.php'; $global_remove = intval($_POST['global']); account_remove($account_id, true); }
function testdrive_cron($a, $b) { $r = q("select * from account where account_expires_on < %s + INTERVAL %s and\n\t\taccount_expire_notified = '%s' ", db_utcnow(), db_quoteinterval('5 DAY'), dbesc(NULL_DATE)); if ($r) { foreach ($r as $rr) { $uid = $rr['account_default_channel']; if (!$uid) { continue; } $x = q("select * from channel where channel_id = %d limit 1", intval($uid)); if (!$x) { continue; } \Zotlabs\Lib\Enotify::submit(array('type' => NOTIFY_SYSTEM, 'system_type' => 'testdrive_expire', 'from_xchan' => $x[0]['channel_hash'], 'to_xchan' => $x[0]['channel_hash'])); q("update account set account_expire_notified = '%s' where account_id = %d", dbesc(datetime_convert()), intval($rr['account_id'])); } } // give them a 5 day grace period. Then nuke the account. $r = q("select * from account where account_expired = 1 and account_expires < %s - INTERVAL %s", db_utcnow(), db_quoteinterval('5 DAY')); if ($r) { foreach ($r as $rr) { account_remove($rr['account_id']); } } }
/** * @brief Generate users admin page and handle single item operations. * * This function generates the users/account admin page and handles the actions * if an icon next to an entry was clicked. If several items were selected and * the form was submitted it is handled by the function admin_page_users_post(). * * @param App &$a * @return string */ function admin_page_users(&$a) { if (argc() > 2) { $uid = argv(3); $account = q("SELECT * FROM account WHERE account_id = %d", intval($uid)); if (!$account) { notice(t('Account not found') . EOL); goaway(z_root() . '/admin/users'); } check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't'); switch (argv(2)) { case 'delete': // delete user require_once 'include/Contact.php'; account_remove($uid, true, false); notice(sprintf(t("Account '%s' deleted"), $account[0]['account_email']) . EOL); break; case 'block': q("UPDATE account SET account_flags = ( account_flags | %d ) WHERE account_id = %d", intval(ACCOUNT_BLOCKED), intval($uid)); notice(sprintf(t("Account '%s' blocked"), $account[0]['account_email']) . EOL); break; case 'unblock': q("UPDATE account SET account_flags = ( account_flags & ~%d ) WHERE account_id = %d", intval(ACCOUNT_BLOCKED), intval($uid)); notice(sprintf(t("Account '%s' unblocked"), $account[0]['account_email']) . EOL); break; } goaway(z_root() . '/admin/users'); } /* get pending */ $pending = q("SELECT account.*, register.hash from account left join register on account_id = register.uid where (account_flags & %d )>0 ", intval(ACCOUNT_PENDING)); /* get users */ $total = q("SELECT count(*) as total FROM account"); if (count($total)) { \App::set_pager_total($total[0]['total']); \App::set_pager_itemspage(100); } // We'll still need to link email addresses to admin/users/channels or some such, but this bit doesn't exist yet. // That's where we need to be doing last post/channel flags/etc, not here. $serviceclass = $_REQUEST['class'] ? " and account_service_class = '" . dbesc($_REQUEST['class']) . "' " : ''; $order = " order by account_email asc "; if ($_REQUEST['order'] === 'expires') { $order = " order by account_expires desc "; } if ($_REQUEST['order'] === 'created') { $order = " order by account_created desc "; } $users = q("SELECT `account_id` , `account_email`, `account_lastlog`, `account_created`, `account_expires`, " . "`account_service_class`, ( account_flags & %d )>0 as `blocked`, " . "(SELECT %s FROM channel as ch " . "WHERE ch.channel_account_id = ac.account_id and ch.channel_removed = 0 ) as `channels` " . "FROM account as ac where true {$serviceclass} {$order} limit %d offset %d ", intval(ACCOUNT_BLOCKED), db_concat('ch.channel_address', ' '), intval(\App::$pager['itemspage']), intval(\App::$pager['start'])); // function _setup_users($e){ // $accounts = Array( // t('Normal Account'), // t('Soapbox Account'), // t('Community/Celebrity Account'), // t('Automatic Friend Account') // ); // $e['page_flags'] = $accounts[$e['page-flags']]; // $e['register_date'] = relative_date($e['register_date']); // $e['login_date'] = relative_date($e['login_date']); // $e['lastitem_date'] = relative_date($e['lastitem_date']); // return $e; // } // $users = array_map("_setup_users", $users); $t = get_markup_template('admin_users.tpl'); $o = replace_macros($t, array('$title' => t('Administration'), '$page' => t('Users'), '$submit' => t('Submit'), '$select_all' => t('select all'), '$h_pending' => t('User registrations waiting for confirm'), '$th_pending' => array(t('Request date'), t('Email')), '$no_pending' => t('No registrations.'), '$approve' => t('Approve'), '$deny' => t('Deny'), '$delete' => t('Delete'), '$block' => t('Block'), '$unblock' => t('Unblock'), '$h_users' => t('Users'), '$th_users' => array(t('ID'), t('Email'), t('All Channels'), t('Register date'), t('Last login'), t('Expires'), t('Service Class')), '$confirm_delete_multi' => t('Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?'), '$confirm_delete' => t('The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?'), '$form_security_token' => get_form_security_token("admin_users"), '$baseurl' => z_root(), '$pending' => $pending, '$users' => $users)); $o .= paginate($a); return $o; }