Aktuelle Beiträge

Seiten 1 2 3
21
SMF / Tipps zum SMF Menü im Header
Letzter Beitrag von Franky - 01 Juni 2017, 21:27
Grundsätzlich warne ich davor Menüpunkte in der Subs.php zu entfernen. Dies könnte das Forum lahmlegen oder das Fehlerprotokoll unendlich befüllen. Einige Modifikationen nutzen einige Menüpunkte zum einfügen vor oder nach einem Menüpunkt ihre Menü Buttons einzufügen. Um Menüpunkte zu entfernen folgende Tipps am Beispiel Menüpunkt "Hilfe". Funktioniert auch bei den anderen Buttons.

Subs.php

Menü Button ausblenden
Code (php) Alles auswählen

         'help' => array(
            'title' => $txt['help'],
            'href' => $scripturl . '?action=help',
            'show' => true,
            'sub_buttons' => array(
            ),
         ),


Um einen Menüpunkt aus dem Menü zu entfernen gibt es 2 Möglichkeiten:
1. komplett ausblenden
Code (php) Alles auswählen
'show' => true,
zu
Code (php) Alles auswählen
'show' => false,
Das deaktiviert den Menüpunkt für alle

2. nur für bestimmte Benutzergruppen ausblenden
ändern zu
Code (php) Alles auswählen
'show' => allowedTo('admin_forum'),
dieser Button ist dann nur mit Admin Berechtigung zu sehen

Code (php) Alles auswählen
'show' => $context['allow_moderation_center'],
dieser wäre nur für Moderatoren sichtbar

Code (php) Alles auswählen
'show' => $user_info['is_guest'],
dieser ist nur für Gäste sichtbar

Code (php) Alles auswählen
'show' => !$user_info['is_guest'],
dieser ist nur für registrierte Benutzer sichtbar. Wichtig ist das Ausrufezeichen vor $user_info => !$user_info

Da kann man auch für bestimmte benutzerdefinierte Benutzer Gruppen benutzerdefinierte Berechtigungen einsetzen.

Menü Button einfügen
Zum Beispiel vor dem Button "Hilfe"
Findet
Code (php) Alles auswählen
'help' => array(
'title' => $txt['help'],
'href' => $scripturl . '?action=help',
'show' => true,
'sub_buttons' => array(
),
),

davor fügt ihr euren Button ein. Siehe als Beispiel nächsten Block
Code (php) Alles auswählen
'link_1' => array(
'title' => 'Link 1',
'href' => 'http://www.link_1.dev',
'show' => true,
'sub_buttons' => array(
),
),


Mit Untermenü
Beim letzten Untermenü muss immer beim letzten Untermenü 'is_last' => true, eingefügt werden
Code (php) Alles auswählen
'link_1' => array(
'title' => 'Link 1',
'href' => 'http://www.link_1.dev',
'show' => true,
'sub_buttons' => array(
'unterlink_1' => array(
'title' => 'Unterlink 1',
'href' => 'http://www.unterlink_1.dev',
'show' => true,
'is_last' => true,
),
),
),


Code (php) Alles auswählen
'link_1' => array(
'title' => 'Link 1',
'href' => 'http://www.link_1.dev',
'show' => true,
'sub_buttons' => array(
'unterlink_1' => array(
'title' => 'Unterlink 1',
'href' => 'http://www.unterlink_1.dev',
'show' => true,
),
'unterlink_2' => array(
'title' => 'Unterlink 2',
'href' => 'http://www.unterlink_2.dev',
'show' => true,
'is_last' => true,
),
),
),


Um die Buttons je nach Berechtigung anzeigen zu lassen, schaut oben 2. nur für bestimmte Benutzergruppen ausblenden

Wenn ihr die Titel nicht HardCoded  einfügen wollt oder in mehreren Sprachen anzeigen lassen wollt, müsst ihr folgendermaßen vorgehen:

Ändert
Code (php) Alles auswählen
'Link 1',
zu
(self_ ist ein Beispiel, kann auch huber_ sein. Passt aber auf das dieses Präfix nicht schon anders verwendet wird)
Code (php) Alles auswählen
$txt['self_link_eins'],

Öffnet dann Themes/default/languages/Modifications.*dein_Sprachpaket.php
fügt am Anschluss vorhandener Strings mit einer Leerzeile danach ein
Code (php) Alles auswählen
//self links
$txt['self_link_eins'] = 'Link 1';


Anschließend den Cache im Admin Center leeren. Fertig
22
phpBB / Re: phpBB-3.0.14 unter PHP 7 l...
Letzter Beitrag von Franky - 27 April 2017, 02:24
Datei:
phpBB3\includes\message_parser.php


Finde Zeilen (original ab Zeile 50)
Code (php.50) Alles auswählen
      foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
      {
         if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
         {
            foreach ($bbcode_data['regexp'] as $regexp => $replacement)
            {
               if (preg_match($regexp, $this->message))
               {
                  $this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
                  continue;
               }
            }
         }
         else
         {
            foreach ($bbcode_data['regexp'] as $regexp => $replacement)
            {
               // The pattern gets compiled and cached by the PCRE extension,
               // it should not demand recompilation
               if (preg_match($regexp, $this->message))
               {
                  $this->message = preg_replace($regexp, $replacement, $this->message);
                  $bitfield->set($bbcode_data['bbcode_id']);
               }
            }
         }
      }

      $this->bbcode_bitfield = $bitfield->get_base64();
   }

Ersetzen mit
Code (php.50) Alles auswählen
      foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
      {
         if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
         {
            foreach ($bbcode_data['regexp'] as $regexp => $replacement)
            {
               if (preg_match($regexp, $this->message))
               {
                  $this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
                  continue;
               }
            }
         }
         else
         {
            foreach ($bbcode_data['regexp'] as $regexp => $replacement)
            {
               // The pattern gets compiled and cached by the PCRE extension,
               // it should not demand recompilation
               if (preg_match($regexp, $this->message))
               {
                  if (is_callable($replacement))
                  {
                     $this->message = preg_replace_callback($regexp, $replacement, $this->message);
                  }
                  else
                  {
                     $this->message = preg_replace($regexp, $replacement, $this->message);
                  }
                  $bitfield->set($bbcode_data['bbcode_id']);
               }
            }
         }
      }

      $this->bbcode_bitfield = $bitfield->get_base64();
   }

Finde Zeilen (original ab Zeile 103)
Code (php.103) Alles auswählen
   * Init bbcode data for later parsing
   */
   function bbcode_init($allow_custom_bbcode = true)
   {
      static $rowset;

Danach einfügen In einer neuen leeren Zeile danach einfügen (!Leerzeile nicht vergessen  einzufügen!)
Code (php.108) Alles auswählen


      $bbcode_class = $this;

Finde Zeilen (original ab Zeile 114)
Code (php.114) Alles auswählen
      $this->bbcodes = array(
         'code'         => array('bbcode_id' => 8,   'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
         'quote'         => array('bbcode_id' => 0,   'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
         'attachment'   => array('bbcode_id' => 12,   'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")),
         'b'            => array('bbcode_id' => 1,   'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->bbcode_strong('\$1')")),
         'i'            => array('bbcode_id' => 2,   'regexp' => array('#\[i\](.*?)\[/i\]#uise' => "\$this->bbcode_italic('\$1')")),
         'url'         => array('bbcode_id' => 3,   'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")),
         'img'         => array('bbcode_id' => 4,   'regexp' => array('#\[img\](.*)\[/img\]#uiUe' => "\$this->bbcode_img('\$1')")),
         'size'         => array('bbcode_id' => 5,   'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')")),
         'color'         => array('bbcode_id' => 6,   'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uise' => "\$this->bbcode_color('\$1', '\$2')")),
         'u'            => array('bbcode_id' => 7,   'regexp' => array('#\[u\](.*?)\[/u\]#uise' => "\$this->bbcode_underline('\$1')")),
         'list'         => array('bbcode_id' => 9,   'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")),
         'email'         => array('bbcode_id' => 10,   'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uise' => "\$this->validate_email('\$1', '\$2')")),
         'flash'         => array('bbcode_id' => 11,   'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
      );

Ersetzen mit
Code (php.114) Alles auswählen
      $this->bbcodes = array(
         'code'         => array('bbcode_id' => 8,   'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_code($match[1], $match[2]);
            }
         )),
         'quote'         => array('bbcode_id' => 0,   'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_quote($match[0]);
            }
         )),
         'attachment'   => array('bbcode_id' => 12,   'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_attachment($match[1], $match[2]);
            }
         )),
         'b'            => array('bbcode_id' => 1,   'regexp' => array('#\[b\](.*?)\[/b\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_strong($match[1]);
            }
         )),
         'i'            => array('bbcode_id' => 2,   'regexp' => array('#\[i\](.*?)\[/i\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_italic($match[1]);
            }
         )),
         'url'         => array('bbcode_id' => 3,   'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiU' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->validate_url($match[2], ($match[3]) ? $match[3] : $match[4]);
            }
         )),
         'img'         => array('bbcode_id' => 4,   'regexp' => array('#\[img\](.*)\[/img\]#uiU' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_img($match[1]);
            }
         )),
         'size'         => array('bbcode_id' => 5,   'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_size($match[1], $match[2]);
            }
         )),
         'color'         => array('bbcode_id' => 6,   'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_color($match[1], $match[2]);
            }
         )),
         'u'            => array('bbcode_id' => 7,   'regexp' => array('#\[u\](.*?)\[/u\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_underline($match[1]);
            }
         )),
         'list'         => array('bbcode_id' => 9,   'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_parse_list($match[0]);
            }
         )),
         'email'         => array('bbcode_id' => 10,   'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uis' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->validate_email($match[1], $match[2]);
            }
         )),
         'flash'         => array('bbcode_id' => 11,   'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ui' => function ($match) use($bbcode_class)
            {
               return $bbcode_class->bbcode_flash($match[1], $match[2], $match[3]);
            }
         ))
      );

Finde Zeilen (original ab Zeile 725)
Code (php.725) Alles auswählen
      $in = preg_replace('#quote="(.*?)"\]#ie', "'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), '\$1') . '"]'", $in);
Ersetzen mit
Code (php.725) Alles auswählen
      $in = preg_replace_callback('#quote="(.*?)"\]#i', function ($match) {
         return 'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), $match[1]) . '"]';
      }, $in);

Finde Zeile (original Zeile 1431)
Code (php.1431) Alles auswählen
               $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Ersetzen mit
Code (php.1431) Alles auswählen
               $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
                  return '[attachment='.($match[1] + 1).']' . $match[2] . '[/attachment]';
               }, $this->message);

Finde Zeile (original Zeile 1494)
Code (php.1494) Alles auswählen
               $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);
Ersetzen mit
Code (php.1494) Alles auswählen
               $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) use($index) {
                  return ($match[1] == $index) ? '' : (($match[1] > $index) ? '[attachment=' . ($match[1] - 1) . ']' . $match[2] . '[/attachment]' : $match[0]);
               }, $this->message);

Finde Zeile (original Zeile 1533)
Code (php.1533) Alles auswählen
                  $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Ersetzen mit
Code (php.1533) Alles auswählen
                  $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
                     return '[attachment=' . ($match[1] + 1) . ']' . $match[2] . '[/attachment]';
                  }, $this->message);



Vielen Dank an Dennis der mich per E-Mail auf einen Fehler aufmerksam gemacht hat. Dieser wurde behoben und das Snippet nochmals überprüft.

Vielen Dank Dennis für deine Meldung  :)
23
phpBB / Re: phpBB-3.0.14 unter PHP 7 l...
Letzter Beitrag von Franky - 27 April 2017, 02:13
Datei:
phpBB3\includes\functions_content.php


Finde Zeilen (original Zeile ab 659)
Code (php.659) Alles auswählen
function make_clickable($text, $server_url = false, $class = 'postlink')
{
   if ($server_url === false)
   {
      $server_url = generate_board_url();
   }

   static $magic_url_match;
   static $magic_url_replace;
   static $static_class;

   if (!is_array($magic_url_match) || $static_class != $class)
   {
      $static_class = $class;
      $class = ($static_class) ? ' class="' . $static_class . '"' : '';
      $local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';

      $magic_url_match = $magic_url_replace = array();
      // Be sure to not let the matches cross over. ;)

      // relative urls for this board
      $magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
      $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')";

      // matches a xxxx://aaaaa.bbb.cccc. ...
      $magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
      $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')";

      // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
      $magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
      $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')";

      // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
      $magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie';
      $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')";
   }

   return preg_replace($magic_url_match, $magic_url_replace, $text);
}

Ersetzen mit
Code (php.659) Alles auswählen
function make_clickable($text, $server_url = false, $class = 'postlink')
{
   if ($server_url === false)
   {
      $server_url = generate_board_url();
   }
   static $static_class;
   static $magic_url_match_args;
   if (!isset($magic_url_match_args[$server_url]) || $static_class != $class)
   {
      $static_class = $class;
      $class = ($static_class) ? ' class="' . $static_class . '"' : '';
      $local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
      if (!is_array($magic_url_match_args))
      {
         $magic_url_match_args = array();
      }
      // relative urls for this board
      $magic_url_match_args[$server_url][] = array(
         '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
         MAGIC_URL_LOCAL,
         $local_class,
      );
      // matches a xxxx://aaaaa.bbb.cccc. ...
      $magic_url_match_args[$server_url][] = array(
         '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
         MAGIC_URL_FULL,
         $class,
      );
      // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
      $magic_url_match_args[$server_url][] = array(
         '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
         MAGIC_URL_WWW,
         $class,
      );
      // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
      $magic_url_match_args[$server_url][] = array(
         '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
         MAGIC_URL_EMAIL,
         '',
      );
   }

   foreach ($magic_url_match_args[$server_url] as $magic_args)
   {
      if (preg_match($magic_args[0], $text, $matches))
      {
         $text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
         {
            $relative_url = isset($matches[3]) ? $matches[3] : '';
            return make_clickable_callback($magic_args[1], $matches[1], $matches[2], $relative_url, $magic_args[2]);
         }, $text);
      }
   }
   return $text;
}

24
phpBB / Re: phpBB-3.0.14 unter PHP 7 l...
Letzter Beitrag von Franky - 27 April 2017, 02:05
Datei:
phpBB3\includes\bbcode.php


Finde Zeile (original Zeile 112)
Code (php.112) Alles auswählen
$message = preg_replace($preg['search'], $preg['replace'], $message);
Ersetzen mit
Code (php.112) Alles auswählen
foreach ($preg['search'] as $key => $search)
{
if (is_callable($preg['replace'][$key]))
{
$message = preg_replace_callback($search, $preg['replace'][$key], $message);
}
else
{
$message = preg_replace($search, $preg['replace'][$key], $message);
}
}

Finde Zeile (original Zeile 211)
Code (php.211) Alles auswählen
                     '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise'   => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
Ersetzen mit
Code (php.211) Alles auswählen
                     '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#is'   => function ($match) {
                        return $this->bbcode_second_pass_quote($match[1], $match[2]);
                     },

Finde Zeile (original Zeile 290)
Code (php.290) Alles auswählen
                     '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise'   => "\$this->bbcode_second_pass_code('\$1', '\$2')",
Ersetzen mit
Code (php.290) Alles auswählen
                     '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#is'   => function ($match) {
                        return $this->bbcode_second_pass_code($match[1], $match[2]);
                     },

Finde Zeile (original Zeile 300)
Code (php.300) Alles auswählen
                     '#\[list=([^\[]+):$uid\]#e'               => "\$this->bbcode_list('\$1')",
Ersetzen mit
Code (php.300) Alles auswählen
                     '#\[list=([^\[]+):$uid\]#'               => function ($match) {
                        return $this->bbcode_list($match[1]);
                     },

Finde Zeile (original Zeile 384)
Code (php.384) Alles auswählen
                  $bbcode_tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
Ersetzen mit
Code (php.384) Alles auswählen
                  $bbcode_tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
                     return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
                  }, $bbcode_tpl);

Finde Zeile (original Zeile 488)
Code (php.488) Alles auswählen
      $tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
Ersetzen mit
Code (php.488) Alles auswählen
      $tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
         return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
      }, $tpl);
25
phpBB / Re: phpBB-3.0.14 unter PHP 7 l...
Letzter Beitrag von Franky - 27 April 2017, 02:03
Datei:
phpBB3\includes\ucp\ucp_pm_options.php


Finde Zeile (original Zeile 507)
Code (php.507) Alles auswählen
preg_replace('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#e', "\${strtolower('\\2') . '_lang'}[constant('\\1')] = \$user->lang['PM_\\2']['\\3']", array_keys(get_defined_constants()));
Ersetzen mit
Code (php.507) Alles auswählen
preg_replace_callback('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#', function ($match) use(&$rule_lang, &$action_lang, &$check_lang, $user) {
${strtolower($match[2]) . '_lang'}[constant($match[1])] = $user->lang['PM_' . $match[2]][$match[3]];
},
array_keys(get_defined_constants()));
26
phpBB / phpBB-3.0.14 unter PHP 7 lauff...
Letzter Beitrag von Franky - 26 April 2017, 18:31
Die Frage, ob phpBB-3.0.14 mit PHP 7 läuft, stellen sich zur Zeit zahlreiche phpBB-Anwender. Aus meiner Sicht, gibt es eine Möglichkeit phpBB-3.0.14 unter PHP 7 anzuwenden. Lösungen der phpBB-Entwickler habe ich testweise umgesetzt. Bitte macht ein komplettes Backup des Forums und der Datenbank. Die genannten Änderungen beziehen sich auf den Bug im Standard-BBCode-System (andere Bugs in Verwendung mit PHP 7 sind mir nicht bekannt). Es ist nicht auszuschließen, dass eventuell weitere Bugs auftreten können. Daher empfehle ich grundsätzlich, die Codierungen vor Verwendung in einem Liveboard in einem Testforum mit mehreren Testern und verschiedenen Berechtigungen, ausgiebig zu prüfen und zu testen. Ich gebe keine Gewähr und die Code-Anwendung ist aus meiner Sicht verständlicher Weise euer eigenes Risiko.

Unbedingt vorher ein Backup von den Dateien und der Datenbank machen. Der Autor übernimmt keine Gewähr!

Datei:
phpBB3/includes/acp/acp_bbcodes.php


Finde Zeile (original Zeile 404)
Code (php.404) Alles auswählen
$replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\${' . (\$1 + \$pad) . '}'", $replace);
Ersetzen mit
Code (php.404) Alles auswählen
$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
return '${' . ($match[1] + $pad) . '}';
}, $replace);

Finde Zeilen (original ab Zeile 469)
Code (php.469) Alles auswählen
      $fp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_match);
      $fp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_replace);
      $sp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_match);
      $sp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_replace);

Ersetzen mit
Code (php.469) Alles auswählen
      $fp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
         return strtolower($match[0]);
      }, $fp_match);
      $fp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
         return strtolower($match[0]);
      }, $fp_replace);
      $sp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
         return strtolower($match[0]);
      }, $sp_match);
      $sp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
         return strtolower($match[0]);
      }, $sp_replace);
Seiten 1 2 3