]> git.mxchange.org Git - friendica.git/blobdiff - mod/admin.php
Converting timezone in admin queues
[friendica.git] / mod / admin.php
index 8e20850c4e12d4d0b030aa3f99f93f61adfc76b5..9ef4c31aed6b0d57ebfa31af7fcd4dfe2827c27b 100644 (file)
@@ -14,13 +14,14 @@ use Friendica\Core\L10n;
 use Friendica\Core\System;
 use Friendica\Core\Theme;
 use Friendica\Core\Worker;
-use Friendica\Database\DBM;
+use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\User;
 use Friendica\Module\Login;
 use Friendica\Module\Tos;
+use Friendica\Util\Arrays;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Temporal;
 
@@ -471,14 +472,14 @@ function admin_page_contactblock(App $a)
 {
        $condition = ['uid' => 0, 'blocked' => true];
 
-       $total = dba::count('contact', $condition);
+       $total = DBA::count('contact', $condition);
 
        $a->set_pager_total($total);
        $a->set_pager_itemspage(30);
 
-       $statement = dba::select('contact', [], $condition, ['limit' => [$a->pager['start'], $a->pager['itemspage']]]);
+       $statement = DBA::select('contact', [], $condition, ['limit' => [$a->pager['start'], $a->pager['itemspage']]]);
 
-       $contacts = dba::inArray($statement);
+       $contacts = DBA::toArray($statement);
 
        $t = get_markup_template('admin/contactblock.tpl');
        $o = replace_macros($t, [
@@ -745,11 +746,21 @@ function admin_page_federation(App $a)
 function admin_page_queue(App $a)
 {
        // get content from the queue table
+       // PLEASE REVIEW (not 100% sure about my code)
+       $statement = DBA::Select('`queue` AS `q`, `contact` AS `c`',
+               [ '`c`.`name`', '`c`.`nurl`', '`q`.`id`', '`q`.`network`', "CONVERT_TZ(`q`.`created`, 'UTC' " . Config::get('system', 'default_timezone') . ') as created', "CONVERT_TZ(`q`.`last`, 'UTC', " . Config::get('system', 'default_timezone') . "') as last" ],
+               '`c`.`id`' => '`q`.`cid`',
+               ['order'=> ['`q`.`cid`, `q`.`created`']]
+       );
+       $r = DBA::toArray($statement);
+
+       /*
+       // Leaving this one here for the code review as well as backup
        $r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
                        FROM `queue` AS `q`, `contact` AS `c`
                        WHERE `c`.`id` = `q`.`cid`
                        ORDER BY `q`.`cid`, `q`.`created`;");
-
+       */
        $t = get_markup_template('admin/queue.tpl');
        return replace_macros($t, [
                '$title' => L10n::t('Administration'),
@@ -780,13 +791,13 @@ function admin_page_queue(App $a)
 function admin_page_workerqueue(App $a)
 {
        // get jobs from the workerqueue table
-       $statement = dba::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
-       $r = dba::inArray($statement);
-        
-       for($i = 0; $i < count($r); $i++) {
-               $r[$i]['parameter'] = implode(': ', explode('","', $r[$i]['parameter']));
-               $r[$i]['parameter'] = substr($r[$i]['parameter'], 2, -4);
-       }
+       $statement = DBA::select('workerqueue', ['id', 'parameter', "CONVERT_TZ(created', 'UTC', " . Config::get('system', 'default_timezone') . "') as created", 'priority'], ['done' => 0], ['order'=> ['priority']]);
+       $r = DBA::toArray($statement);
+
+       foreach ($r as $key => $rr) {
+               // fix GH-5469. ref: src/Core/Worker.php:217
+               $r[$key]['parameter'] = Arrays::recursiveImplode(json_decode($rr['parameter'], true), ': ');
+       }
 
        $t = get_markup_template('admin/workerqueue.tpl');
        return replace_macros($t, [
@@ -816,10 +827,10 @@ function admin_page_workerqueue(App $a)
 function admin_page_summary(App $a)
 {
        // are there MyISAM tables in the DB? If so, trigger a warning message
-       $r = q("SELECT `engine` FROM `information_schema`.`tables` WHERE `engine` = 'myisam' AND `table_schema` = '%s' LIMIT 1", dbesc(dba::database_name()));
+       $r = q("SELECT `engine` FROM `information_schema`.`tables` WHERE `engine` = 'myisam' AND `table_schema` = '%s' LIMIT 1", DBA::escape(DBA::databaseName()));
        $showwarning = false;
        $warningtext = [];
-       if (DBM::is_result($r)) {
+       if (DBA::isResult($r)) {
                $showwarning = true;
                $warningtext[] = L10n::t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
        }
@@ -949,8 +960,8 @@ function admin_page_site_post(App $a)
 
                function update_table($table_name, $fields, $old_url, $new_url)
                {
-                       $dbold = dbesc($old_url);
-                       $dbnew = dbesc($new_url);
+                       $dbold = DBA::escape($old_url);
+                       $dbnew = DBA::escape($new_url);
 
                        $upd = [];
                        foreach ($fields as $f) {
@@ -961,8 +972,8 @@ function admin_page_site_post(App $a)
 
                        $r = q("UPDATE %s SET %s;", $table_name, $upds);
 
-                       if (!DBM::is_result($r)) {
-                               notice("Failed updating '$table_name': " . dba::errorMessage());
+                       if (!DBA::isResult($r)) {
+                               notice("Failed updating '$table_name': " . DBA::errorMessage());
                                goaway('admin/site');
                        }
                }
@@ -1581,7 +1592,7 @@ function admin_page_dbsync(App $a)
        $failed = [];
        $r = q("SELECT `k`, `v` FROM `config` WHERE `cat` = 'database' ");
 
-       if (DBM::is_result($r)) {
+       if (DBA::isResult($r)) {
                foreach ($r as $rr) {
                        $upd = intval(substr($rr['k'], 7));
                        if ($upd < 1139 || $rr['v'] === 'success') {
@@ -1730,8 +1741,8 @@ function admin_page_users(App $a)
 {
        if ($a->argc > 2) {
                $uid = $a->argv[3];
-               $user = dba::selectFirst('user', ['username', 'blocked'], ['uid' => $uid]);
-               if (!DBM::is_result($user)) {
+               $user = DBA::selectFirst('user', ['username', 'blocked'], ['uid' => $uid]);
+               if (!DBA::isResult($user)) {
                        notice('User not found' . EOL);
                        goaway('admin/users');
                        return ''; // NOTREACHED
@@ -1807,25 +1818,23 @@ function admin_page_users(App $a)
        $adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email')));
        $_setup_users = function ($e) use ($adminlist) {
                $page_types = [
-                       PAGE_NORMAL => L10n::t('Normal Account Page'),
-                       PAGE_SOAPBOX => L10n::t('Soapbox Page'),
-                       PAGE_COMMUNITY => L10n::t('Public Forum'),
-                       PAGE_FREELOVE => L10n::t('Automatic Friend Page'),
-                       PAGE_PRVGROUP => L10n::t('Private Forum')
+                       Contact::PAGE_NORMAL    => L10n::t('Normal Account Page'),
+                       Contact::PAGE_SOAPBOX   => L10n::t('Soapbox Page'),
+                       Contact::PAGE_COMMUNITY => L10n::t('Public Forum'),
+                       Contact::PAGE_FREELOVE  => L10n::t('Automatic Friend Page'),
+                       Contact::PAGE_PRVGROUP  => L10n::t('Private Forum')
                ];
                $account_types = [
-                       ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'),
-                       ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),
-                       ACCOUNT_TYPE_NEWS => L10n::t('News Page'),
-                       ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum')
+                       Contact::ACCOUNT_TYPE_PERSON       => L10n::t('Personal Page'),
+                       Contact::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'),
+                       Contact::ACCOUNT_TYPE_NEWS         => L10n::t('News Page'),
+                       Contact::ACCOUNT_TYPE_COMMUNITY    => L10n::t('Community Forum')
                ];
 
-
-
-               $e['page-flags-raw'] = $e['page-flags'];
+               $e['page_flags_raw'] = $e['page-flags'];
                $e['page-flags'] = $page_types[$e['page-flags']];
 
-               $e['account-type-raw'] = ($e['page_flags_raw'] == 0) ? $e['account-type'] : -1;
+               $e['account_type_raw'] = ($e['page_flags_raw'] == 0) ? $e['account-type'] : -1;
                $e['account-type'] = ($e['page_flags_raw'] == 0) ? $account_types[$e['account-type']] : "";
 
                $e['register_date'] = Temporal::getRelativeDate($e['register_date']);
@@ -1834,8 +1843,10 @@ function admin_page_users(App $a)
                $e['is_admin'] = in_array($e['email'], $adminlist);
                $e['is_deletable'] = (intval($e['uid']) != local_user());
                $e['deleted'] = ($e['account_removed'] ? Temporal::getRelativeDate($e['account_expires_on']) : False);
+
                return $e;
        };
+
        $users = array_map($_setup_users, $users);
 
 
@@ -1881,6 +1892,7 @@ function admin_page_users(App $a)
                '$deny' => L10n::t('Deny'),
                '$delete' => L10n::t('Delete'),
                '$block' => L10n::t('Block'),
+               '$blocked' => L10n::t('User blocked'),
                '$unblock' => L10n::t('Unblock'),
                '$siteadmin' => L10n::t('Site admin'),
                '$accountexpired' => L10n::t('Account expired'),
@@ -2356,11 +2368,12 @@ function admin_page_logs_post(App $a)
 function admin_page_logs(App $a)
 {
        $log_choices = [
-               LOGGER_NORMAL   => 'Normal',
-               LOGGER_TRACE    => 'Trace',
-               LOGGER_DEBUG    => 'Debug',
-               LOGGER_DATA     => 'Data',
-               LOGGER_ALL      => 'All'
+               LOGGER_WARNING => 'Warning',
+               LOGGER_INFO    => 'Info',
+               LOGGER_TRACE   => 'Trace',
+               LOGGER_DEBUG   => 'Debug',
+               LOGGER_DATA    => 'Data',
+               LOGGER_ALL     => 'All'
        ];
 
        if (ini_get('log_errors')) {