Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

remove_profilefield_wlm.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 3.68 KiB


 001  <?php
 002  /**
 003  *
 004  * This file is part of the phpBB Forum Software package.
 005  *
 006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
 007  * @license GNU General Public License, version 2 (GPL-2.0)
 008  *
 009  * For full copyright and license information, please see
 010  * the docs/CREDITS.txt file.
 011  *
 012  */
 013   
 014  namespace phpbb\db\migration\data\v320;
 015   
 016  class remove_profilefield_wlm extends \phpbb\db\migration\migration
 017  {
 018      static public function depends_on()
 019      {
 020          return array(
 021              '\phpbb\db\migration\data\v320\dev',
 022          );
 023      }
 024   
 025      public function update_schema()
 026      {
 027          return array(
 028              'drop_columns'    => array(
 029                  $this->table_prefix . 'profile_fields_data'            => array(
 030                      'pf_phpbb_wlm',
 031                  ),
 032              ),
 033          );
 034      }
 035   
 036      public function revert_schema()
 037      {
 038          return array(
 039              'add_columns'    => array(
 040                  $this->table_prefix . 'profile_fields_data'            => array(
 041                      'pf_phpbb_wlm'        => array('VCHAR', ''),
 042                  ),
 043              ),
 044          );
 045      }
 046   
 047      public function update_data()
 048      {
 049          return array(
 050              array('custom', array(array($this, 'delete_custom_profile_field_data'))),
 051          );
 052      }
 053   
 054      public function revert_data()
 055      {
 056          return array(
 057              array('custom', array(array($this, 'create_custom_field'))),
 058          );
 059      }
 060   
 061      public function delete_custom_profile_field_data()
 062      {
 063          $field_id = $this->get_custom_profile_field_id();
 064   
 065          $sql = 'DELETE FROM ' . PROFILE_FIELDS_TABLE . '
 066              WHERE field_id = ' . (int) $field_id;
 067          $this->db->sql_query($sql);
 068   
 069          $sql = 'DELETE FROM ' . PROFILE_LANG_TABLE . '
 070              WHERE field_id = ' . (int) $field_id;
 071          $this->db->sql_query($sql);
 072   
 073          $sql = 'DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . '
 074              WHERE field_id = ' . (int) $field_id;
 075          $this->db->sql_query($sql);
 076      }
 077   
 078      /**
 079       * Get custom profile field id
 080       * @return    int    custom profile filed id
 081       */
 082      public function get_custom_profile_field_id()
 083      {
 084          $sql = 'SELECT field_id
 085              FROM ' . PROFILE_FIELDS_TABLE . "
 086              WHERE field_name = 'phpbb_wlm'";
 087          $result = $this->db->sql_query($sql);
 088          $field_id = (int) $this->db->sql_fetchfield('field_id');
 089          $this->db->sql_freeresult($result);
 090   
 091          return $field_id;
 092      }
 093   
 094      public function create_custom_field()
 095      {
 096          $sql = 'SELECT MAX(field_order) as max_field_order
 097              FROM ' . PROFILE_FIELDS_TABLE;
 098          $result = $this->db->sql_query($sql);
 099          $max_field_order = (int) $this->db->sql_fetchfield('max_field_order');
 100          $this->db->sql_freeresult($result);
 101   
 102          $sql_ary = array(
 103              'field_name'            => 'phpbb_wlm',
 104              'field_type'            => 'profilefields.type.string',
 105              'field_ident'            => 'phpbb_wlm',
 106              'field_length'            => '40',
 107              'field_minlen'            => '5',
 108              'field_maxlen'            => '255',
 109              'field_novalue'            => '',
 110              'field_default_value'    => '',
 111              'field_validation'        => '.*',
 112              'field_required'        => 0,
 113              'field_show_novalue'    => 0,
 114              'field_show_on_reg'        => 0,
 115              'field_show_on_pm'        => 1,
 116              'field_show_on_vt'        => 1,
 117              'field_show_on_ml'        => 0,
 118              'field_show_profile'    => 1,
 119              'field_hide'            => 0,
 120              'field_no_view'            => 0,
 121              'field_active'            => 1,
 122              'field_is_contact'        => 1,
 123              'field_contact_desc'    => '',
 124              'field_contact_url'        => '',
 125              'field_order'            => $max_field_order + 1,
 126          );
 127   
 128          $sql = 'INSERT INTO ' . PROFILE_FIELDS_TABLE . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
 129          $this->db->sql_query($sql);
 130          $field_id = (int) $this->db->sql_nextid();
 131   
 132          $insert_buffer = new \phpbb\db\sql_insert_buffer($this->db, PROFILE_LANG_TABLE);
 133   
 134          $sql = 'SELECT lang_id
 135              FROM ' . LANG_TABLE;
 136          $result = $this->db->sql_query($sql);
 137          $lang_name = 'WLM';
 138          while ($lang_id = (int) $this->db->sql_fetchfield('lang_id'))
 139          {
 140              $insert_buffer->insert(array(
 141                  'field_id'                => (int) $field_id,
 142                  'lang_id'                => (int) $lang_id,
 143                  'lang_name'                => $lang_name,
 144                  'lang_explain'            => '',
 145                  'lang_default_value'    => '',
 146              ));
 147          }
 148          $this->db->sql_freeresult($result);
 149   
 150          $insert_buffer->flush();
 151      }
 152  }
 153