Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 18
add_user_last_active
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
42.00
0.00% covered (danger)
0.00%
0 / 18
 depends_on
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 update_schema
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 revert_schema
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 2
 update_data
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 set_user_last_active
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 12
<?php
/**
 *
 * This file is part of the phpBB Forum Software package.
 *
 * @copyright (c) phpBB Limited <https://www.phpbb.com>
 * @license GNU General Public License, version 2 (GPL-2.0)
 *
 * For full copyright and license information, please see
 * the docs/CREDITS.txt file.
 *
 */
namespace phpbb\db\migration\data\v33x;
use phpbb\db\migration\migration;
class add_user_last_active extends migration
{
    public static function depends_on()
    {
        return [
            '\phpbb\db\migration\data\v33x\v3311',
        ];
    }
    public function update_schema()
    {
        return [
            'add_columns'    => [
                $this->table_prefix . 'users'    => [
                    'user_last_active'        => ['TIMESTAMP', 0, 'after' => 'user_lastvisit'],
                ],
            ],
        ];
    }
    public function revert_schema()
    {
        return [
            'drop_columns'    => [
                $this->table_prefix . 'users'    => ['user_last_active'],
            ],
        ];
    }
    public function update_data()
    {
        return [
            ['custom', [[$this, 'set_user_last_active']]],
        ];
    }
    public function set_user_last_active($start = 0)
    {
        // Get maximum user id from database
        $sql = "SELECT MAX(user_id) AS max_user_id
            FROM {$this->table_prefix}users";
        $result = $this->db->sql_query($sql);
        $max_id = (int) $this->db->sql_fetchfield('max_user_id');
        $this->db->sql_freeresult($result);
        if ($start > $max_id)
        {
            return;
        }
        // Keep setting user_last_active time
        $next_start = $start + 10000;
        $sql = 'UPDATE ' . $this->table_prefix . 'users
            SET user_last_active = user_lastvisit
            WHERE user_id > ' . (int) $start . '
                AND user_id <= ' . (int) ($next_start);
        $this->db->sql_query($sql);
        return $next_start;
    }
}