[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/phpbb/db/migration/data/v33x/ -> add_user_last_active.php (source)

   1  <?php
   2  /**
   3   *
   4   * This file is part of the phpBB Forum Software package.
   5   *
   6   * @copyright (c) phpBB Limited <https://www.phpbb.com>
   7   * @license GNU General Public License, version 2 (GPL-2.0)
   8   *
   9   * For full copyright and license information, please see
  10   * the docs/CREDITS.txt file.
  11   *
  12   */
  13  
  14  namespace phpbb\db\migration\data\v33x;
  15  
  16  use phpbb\db\migration\migration;
  17  
  18  class add_user_last_active extends migration
  19  {
  20  	public static function depends_on()
  21      {
  22          return [
  23              '\phpbb\db\migration\data\v33x\v3311',
  24          ];
  25      }
  26  
  27  	public function update_schema()
  28      {
  29          return [
  30              'add_columns'    => [
  31                  $this->table_prefix . 'users'    => [
  32                      'user_last_active'        => ['TIMESTAMP', 0, 'after' => 'user_lastvisit'],
  33                  ],
  34              ],
  35          ];
  36      }
  37  
  38  	public function revert_schema()
  39      {
  40          return [
  41              'drop_columns'    => [
  42                  $this->table_prefix . 'users'    => ['user_last_active'],
  43              ],
  44          ];
  45      }
  46  
  47  	public function update_data()
  48      {
  49          return [
  50              ['custom', [[$this, 'set_user_last_active']]],
  51          ];
  52      }
  53  
  54  	public function set_user_last_active($start = 0)
  55      {
  56          // Get maximum user id from database
  57          $sql = "SELECT MAX(user_id) AS max_user_id
  58              FROM {$this->table_prefix}users";
  59          $result = $this->db->sql_query($sql);
  60          $max_id = (int) $this->db->sql_fetchfield('max_user_id');
  61          $this->db->sql_freeresult($result);
  62  
  63          if ($start > $max_id)
  64          {
  65              return;
  66          }
  67  
  68          // Keep setting user_last_active time
  69          $next_start = $start + 10000;
  70  
  71          $sql = 'UPDATE ' . $this->table_prefix . 'users
  72              SET user_last_active = user_lastvisit
  73              WHERE user_id > ' . (int) $start . '
  74                  AND user_id <= ' . (int) ($next_start);
  75          $this->db->sql_query($sql);
  76  
  77          return $next_start;
  78      }
  79  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1