Ad Inserter – WordPress Ads Management with AdSense Header Integration - Version 2.2.10

Version Description

  • Fix for rotation editor code import/export
  • Fix for errors when using old |rotate| separator
  • Few minor bug fixes, cosmetic changes and code improvements
Download this release

Release Info

Developer spacetime
Plugin Icon 128x128 Ad Inserter – WordPress Ads Management with AdSense Header Integration
Version 2.2.10
Comparing to
See all releases

Code changes from version 2.2.9 to 2.2.10

Files changed (7) hide show
  1. ad-inserter.php +36 -21
  2. class.php +13 -4
  3. constants.php +1 -1
  4. css/ad-inserter.css +1 -1
  5. js/ad-inserter.js +5 -5
  6. readme.txt +10 -1
  7. settings.php +11 -11
ad-inserter.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Ad Inserter
4
- Version: 2.2.9
5
  Description: Ad management plugin with advanced advertising options to automatically insert ad codes on your website
6
  Author: Igor Funa
7
  Author URI: http://igorfuna.com/
@@ -12,6 +12,11 @@ Plugin URI: http://adinserter.pro/documentation
12
 
13
  Change Log
14
 
 
 
 
 
 
15
  Ad Inserter 2.2.9 - 2017-12-09
16
  - Output buffering is now disabled by default (for position Above header you need to enable it)
17
  - Fix for min. paragraph number not processed
@@ -1310,23 +1315,23 @@ function ai_wp_hook () {
1310
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
1311
  // AMP, Accelerated Mobile Pages
1312
  if ($automatic_insertion_footer_hook)
1313
- add_action ('amp_post_template_footer', 'ai_hook_function_footer');
1314
- add_action ('amp_post_template_footer', 'ai_amp_footer_hook');
1315
 
1316
  // WP AMP Ninja
1317
  if ($automatic_insertion_footer_hook)
1318
- add_action ('wpamp_google_analytics_code', 'ai_hook_function_footer');
1319
- add_action ('wpamp_google_analytics_code', 'ai_amp_footer_hook');
1320
 
1321
  // WP AMP - Accelerated Mobile Pages for WordPress
1322
  if ($automatic_insertion_footer_hook)
1323
- add_action ('amphtml_after_footer', 'ai_hook_function_footer');
1324
- add_action ('amphtml_after_footer', 'ai_amp_footer_hook');
1325
  } else {
1326
  // WP
1327
  if ($automatic_insertion_footer_hook)
1328
- add_action ('wp_footer', 'ai_hook_function_footer');
1329
- add_action ('wp_footer', 'ai_wp_footer_hook');
1330
  }
1331
 
1332
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
@@ -2016,7 +2021,7 @@ function get_page_type_debug_info ($text = '') {
2016
  }
2017
  $class = AI_DEBUG_PAGE_TYPE_CLASS;
2018
 
2019
- $page_type = "<section class='$class'>".$text.$page_type."</section>";;
2020
 
2021
  return $page_type;
2022
  }
@@ -3449,21 +3454,29 @@ function ai_ajax_backend () {
3449
  if (is_numeric ($block) && $block >= 1 && $block <= AD_INSERTER_BLOCKS) {
3450
  generate_code_preview (
3451
  $block,
3452
- wp_unslash (urldecode ($_POST ["name"])),
3453
- urldecode ($_POST ["alignment"]),
3454
- wp_unslash (urldecode ($_POST ["alignment_css"])),
3455
- wp_unslash (urldecode ($_POST ["custom_css"])),
3456
- wp_unslash (urldecode (base64_decode ($_POST ["code"]))), // base64_decode after wp_unslash / urldecode ?
3457
- urldecode ($_POST ["php"]) == 1);
 
 
 
 
 
 
3458
  }
3459
  elseif ($block == 'adb') {
3460
- generate_code_preview_adb (wp_unslash (urldecode (base64_decode ($_POST ["code"]))), urldecode ($_POST ["php"]) == 1);
 
3461
  }
3462
  }
3463
 
3464
  elseif (isset ($_POST ["edit"])) {
3465
  if (is_numeric ($_POST ["edit"]) && $_POST ["edit"] >= 1 && $_POST ["edit"] <= AD_INSERTER_BLOCKS) {
3466
- generate_code_editor ($_POST ["edit"], wp_unslash (urldecode (base64_decode ($_POST ["code"]))), urldecode ($_POST ["php"]) == 1);
 
3467
  }
3468
  }
3469
 
@@ -3476,19 +3489,19 @@ function ai_ajax_backend () {
3476
  elseif (isset ($_POST ["import-code"])) {
3477
  $code_generator = new ai_code_generator ();
3478
 
3479
- echo json_encode ($code_generator->import (wp_unslash (urldecode ($_POST ["import-code"]))));
3480
  }
3481
 
3482
  elseif (isset ($_POST ["import-rotation-code"])) {
3483
  $code_generator = new ai_code_generator ();
3484
 
3485
- echo json_encode ($code_generator->import_rotation (wp_unslash (urldecode ($_POST ["import-rotation-code"]))));
3486
  }
3487
 
3488
  elseif (isset ($_POST ["generate-rotation-code"])) {
3489
  $code_generator = new ai_code_generator ();
3490
 
3491
- echo json_encode ($code_generator->generate_rotation ($_POST ['generate-rotation-code']));
3492
  }
3493
 
3494
  elseif (isset ($_GET ["image"])) {
@@ -4504,6 +4517,8 @@ function ai_content_hook ($content = '') {
4504
 
4505
  $content = $content . "<section class='$class'>AFTER CONTENT ".$counter."</section>";
4506
 
 
 
4507
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
4508
  $content = $content . get_page_type_debug_info ('AMP ');
4509
  }
1
  <?php
2
  /*
3
  Plugin Name: Ad Inserter
4
+ Version: 2.2.10
5
  Description: Ad management plugin with advanced advertising options to automatically insert ad codes on your website
6
  Author: Igor Funa
7
  Author URI: http://igorfuna.com/
12
 
13
  Change Log
14
 
15
+ Ad Inserter 2.2.10 - 2017-12-10
16
+ - Fix for rotation editor code import/export
17
+ - Fix for errors when using old |rotate| separator
18
+ - Few minor bug fixes, cosmetic changes and code improvements
19
+
20
  Ad Inserter 2.2.9 - 2017-12-09
21
  - Output buffering is now disabled by default (for position Above header you need to enable it)
22
  - Fix for min. paragraph number not processed
1315
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
1316
  // AMP, Accelerated Mobile Pages
1317
  if ($automatic_insertion_footer_hook)
1318
+ add_action ('amp_post_template_footer', 'ai_hook_function_footer', 5);
1319
+ add_action ('amp_post_template_footer', 'ai_amp_footer_hook', 5);
1320
 
1321
  // WP AMP Ninja
1322
  if ($automatic_insertion_footer_hook)
1323
+ add_action ('wpamp_google_analytics_code', 'ai_hook_function_footer', 5);
1324
+ add_action ('wpamp_google_analytics_code', 'ai_amp_footer_hook', 5);
1325
 
1326
  // WP AMP - Accelerated Mobile Pages for WordPress
1327
  if ($automatic_insertion_footer_hook)
1328
+ add_action ('amphtml_after_footer', 'ai_hook_function_footer', 5);
1329
+ add_action ('amphtml_after_footer', 'ai_amp_footer_hook', 5);
1330
  } else {
1331
  // WP
1332
  if ($automatic_insertion_footer_hook)
1333
+ add_action ('wp_footer', 'ai_hook_function_footer', 5);
1334
+ add_action ('wp_footer', 'ai_wp_footer_hook', 5);
1335
  }
1336
 
1337
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
2021
  }
2022
  $class = AI_DEBUG_PAGE_TYPE_CLASS;
2023
 
2024
+ $page_type = "<section class='$class'>".$text.$page_type."</section>";
2025
 
2026
  return $page_type;
2027
  }
3454
  if (is_numeric ($block) && $block >= 1 && $block <= AD_INSERTER_BLOCKS) {
3455
  generate_code_preview (
3456
  $block,
3457
+ // wp_unslash (urldecode ($_POST ["name"])),
3458
+ base64_decode ($_POST ["name"]),
3459
+ // urldecode ($_POST ["alignment"]),
3460
+ base64_decode ($_POST ["alignment"]),
3461
+ // wp_unslash (urldecode ($_POST ["alignment_css"])),
3462
+ base64_decode ($_POST ["alignment_css"]),
3463
+ // wp_unslash (urldecode ($_POST ["custom_css"])),
3464
+ base64_decode ($_POST ["custom_css"]),
3465
+ // wp_unslash (urldecode (base64_decode ($_POST ["code"]))), // base64_decode after wp_unslash / urldecode ?
3466
+ base64_decode ($_POST ["code"]),
3467
+ // urldecode ($_POST ["php"]) == 1);
3468
+ $_POST ["php"]) == 1;
3469
  }
3470
  elseif ($block == 'adb') {
3471
+ // generate_code_preview_adb (wp_unslash (urldecode (base64_decode ($_POST ["code"]))), urldecode ($_POST ["php"]) == 1);
3472
+ generate_code_preview_adb (base64_decode ($_POST ["code"]), $_POST ["php"] == 1);
3473
  }
3474
  }
3475
 
3476
  elseif (isset ($_POST ["edit"])) {
3477
  if (is_numeric ($_POST ["edit"]) && $_POST ["edit"] >= 1 && $_POST ["edit"] <= AD_INSERTER_BLOCKS) {
3478
+ // generate_code_editor ($_POST ["edit"], wp_unslash (urldecode (base64_decode ($_POST ["code"]))), urldecode ($_POST ["php"]) == 1);
3479
+ generate_code_editor ($_POST ["edit"], base64_decode ($_POST ["code"]), $_POST ["php"] == 1);
3480
  }
3481
  }
3482
 
3489
  elseif (isset ($_POST ["import-code"])) {
3490
  $code_generator = new ai_code_generator ();
3491
 
3492
+ echo json_encode ($code_generator->import (base64_decode ($_POST ["import-code"])));
3493
  }
3494
 
3495
  elseif (isset ($_POST ["import-rotation-code"])) {
3496
  $code_generator = new ai_code_generator ();
3497
 
3498
+ echo json_encode ($code_generator->import_rotation (base64_decode ($_POST ["import-rotation-code"])));
3499
  }
3500
 
3501
  elseif (isset ($_POST ["generate-rotation-code"])) {
3502
  $code_generator = new ai_code_generator ();
3503
 
3504
+ echo json_encode ($code_generator->generate_rotation (json_decode (base64_decode ($_POST ['generate-rotation-code']), true)));
3505
  }
3506
 
3507
  elseif (isset ($_GET ["image"])) {
4517
 
4518
  $content = $content . "<section class='$class'>AFTER CONTENT ".$counter."</section>";
4519
 
4520
+ $content = $content . get_page_type_debug_info ();
4521
+
4522
  if ($ai_wp_data [AI_WP_AMP_PAGE]) {
4523
  $content = $content . get_page_type_debug_info ('AMP ');
4524
  }
class.php CHANGED
@@ -1146,6 +1146,15 @@ abstract class ai_CodeBlock extends ai_BaseCodeBlock {
1146
  if (strpos ($processed_code, AD_ROTATE_SEPARATOR) !== false) {
1147
 
1148
  $ads = explode (AD_ROTATE_SEPARATOR, $processed_code);
 
 
 
 
 
 
 
 
 
1149
  if (trim ($ads [0]) == '') {
1150
  unset ($ads [0]);
1151
  $ads = array_values ($ads);
@@ -4136,7 +4145,7 @@ class ai_code_generator {
4136
  $options = explode (AD_ROTATE_SEPARATOR, $code);
4137
  $data ['options'] = array ();
4138
  foreach ($options as $index => $option) {
4139
- $option_code = trim ($option);
4140
  $option_name = isset ($ai_wp_data [AI_SHORTCODES]['rotate'][$index - 1]['name']) ? $ai_wp_data [AI_SHORTCODES]['rotate'][$index - 1]['name'] : '';
4141
  if ($index == 0 && $option_code == '') continue;
4142
  $data ['options'] []= array ('code' => $option_code, 'name' => $option_name);
@@ -4149,13 +4158,13 @@ class ai_code_generator {
4149
  public function generate_rotation ($rotation_data){
4150
 
4151
  if (count ($rotation_data) == 1) {
4152
- $rotation_code = wp_unslash (urldecode (trim ($rotation_data [0]['code'])));
4153
  } else {
4154
  $rotation_code = '';
4155
  foreach ($rotation_data as $index => $rotation_data_row) {
4156
 
4157
- $name = wp_unslash (urldecode (trim ($rotation_data_row ['name'])));
4158
- $code = wp_unslash (urldecode (trim ($rotation_data_row ['code'])));
4159
 
4160
  if ($index != 0 || $name != '') {
4161
 
1146
  if (strpos ($processed_code, AD_ROTATE_SEPARATOR) !== false) {
1147
 
1148
  $ads = explode (AD_ROTATE_SEPARATOR, $processed_code);
1149
+
1150
+ if (!isset ($ai_wp_data [AI_SHORTCODES]['rotate'])) {
1151
+ // using old separator |rotate|
1152
+ $ai_wp_data [AI_SHORTCODES]['rotate'] = array ();
1153
+ foreach ($ads as $ad) {
1154
+ $ai_wp_data [AI_SHORTCODES]['rotate'] []= array ();
1155
+ }
1156
+ }
1157
+
1158
  if (trim ($ads [0]) == '') {
1159
  unset ($ads [0]);
1160
  $ads = array_values ($ads);
4145
  $options = explode (AD_ROTATE_SEPARATOR, $code);
4146
  $data ['options'] = array ();
4147
  foreach ($options as $index => $option) {
4148
+ $option_code = trim ($option, "\n");
4149
  $option_name = isset ($ai_wp_data [AI_SHORTCODES]['rotate'][$index - 1]['name']) ? $ai_wp_data [AI_SHORTCODES]['rotate'][$index - 1]['name'] : '';
4150
  if ($index == 0 && $option_code == '') continue;
4151
  $data ['options'] []= array ('code' => $option_code, 'name' => $option_name);
4158
  public function generate_rotation ($rotation_data){
4159
 
4160
  if (count ($rotation_data) == 1) {
4161
+ $rotation_code = trim ($rotation_data [0]['code']);
4162
  } else {
4163
  $rotation_code = '';
4164
  foreach ($rotation_data as $index => $rotation_data_row) {
4165
 
4166
+ $name = trim ($rotation_data_row ['name']);
4167
+ $code = trim ($rotation_data_row ['code'], "\n");
4168
 
4169
  if ($index != 0 || $name != '') {
4170
 
constants.php CHANGED
@@ -19,7 +19,7 @@ if (!defined( 'AD_INSERTER_NAME'))
19
  define ('AD_INSERTER_NAME', 'Ad Inserter');
20
 
21
  if (!defined( 'AD_INSERTER_VERSION'))
22
- define ('AD_INSERTER_VERSION', '2.2.9');
23
 
24
  if (!defined ('AD_INSERTER_PLUGIN_BASENAME'))
25
  define ('AD_INSERTER_PLUGIN_BASENAME', plugin_basename (__FILE__));
19
  define ('AD_INSERTER_NAME', 'Ad Inserter');
20
 
21
  if (!defined( 'AD_INSERTER_VERSION'))
22
+ define ('AD_INSERTER_VERSION', '2.2.10');
23
 
24
  if (!defined ('AD_INSERTER_PLUGIN_BASENAME'))
25
  define ('AD_INSERTER_PLUGIN_BASENAME', plugin_basename (__FILE__));
css/ad-inserter.css CHANGED
@@ -1,5 +1,5 @@
1
  #ai-data {
2
- font-family: "2.2.9"; /* Used for version number of the file */
3
  }
4
 
5
  #blocked-warning {
1
  #ai-data {
2
+ font-family: "2.2.10"; /* Used for version number of the file */
3
  }
4
 
5
  #blocked-warning {
js/ad-inserter.js CHANGED
@@ -1,4 +1,4 @@
1
- var javascript_version = "2.2.9";
2
  var ignore_key = true;
3
  var start = 1;
4
  var end = 16;
@@ -1784,7 +1784,7 @@ jQuery(document).ready(function($) {
1784
  var window_top = (screen.height / 2) - (820 / 2);
1785
  var nonce = $(this).attr ('nonce');
1786
 
1787
- var param = {'action': 'ai_ajax_backend', 'preview': block, 'ai_check': nonce, 'name': name, 'alignment': alignment, 'alignment_css': alignment_css, 'custom_css': custom_css, 'code': code, 'php': php};
1788
  window_open_post (ajaxurl, 'width='+window_width+',height='+window_height+',top='+window_top+',left='+window_left+',resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no', 'preview', param);
1789
  });
1790
 
@@ -1929,7 +1929,7 @@ jQuery(document).ready(function($) {
1929
  var block = $(this).attr('id').replace ("import-code-", "");
1930
  var nonce = $("#ai-form").attr ('nonce');
1931
 
1932
- $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'import-code': get_editor_text (block)}
1933
  ).done (function (data) {
1934
  if (data != '') {
1935
  var code_data = JSON.parse (data);
@@ -2097,7 +2097,7 @@ jQuery(document).ready(function($) {
2097
 
2098
  var nonce = $("#ai-form").attr ('nonce');
2099
 
2100
- $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'import-rotation-code': get_editor_text (block)}
2101
  ).done (function (data) {
2102
  if (data != '') {
2103
  var code_data = JSON.parse (data);
@@ -2172,7 +2172,7 @@ jQuery(document).ready(function($) {
2172
 
2173
  if (debug) console.log ('ROTATION DATA:', rotation_data);
2174
 
2175
- $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'generate-rotation-code': rotation_data}
2176
  ).done (function (data) {
2177
  $('#ai-error-container').hide ();
2178
 
1
+ var javascript_version = "2.2.10";
2
  var ignore_key = true;
3
  var start = 1;
4
  var end = 16;
1784
  var window_top = (screen.height / 2) - (820 / 2);
1785
  var nonce = $(this).attr ('nonce');
1786
 
1787
+ var param = {'action': 'ai_ajax_backend', 'preview': block, 'ai_check': nonce, 'name': btoa (name), 'alignment': btoa (alignment), 'alignment_css': btoa (alignment_css), 'custom_css': btoa (custom_css), 'code': code, 'php': php};
1788
  window_open_post (ajaxurl, 'width='+window_width+',height='+window_height+',top='+window_top+',left='+window_left+',resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no', 'preview', param);
1789
  });
1790
 
1929
  var block = $(this).attr('id').replace ("import-code-", "");
1930
  var nonce = $("#ai-form").attr ('nonce');
1931
 
1932
+ $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'import-code': btoa (get_editor_text (block))}
1933
  ).done (function (data) {
1934
  if (data != '') {
1935
  var code_data = JSON.parse (data);
2097
 
2098
  var nonce = $("#ai-form").attr ('nonce');
2099
 
2100
+ $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'import-rotation-code': btoa (get_editor_text (block))}
2101
  ).done (function (data) {
2102
  if (data != '') {
2103
  var code_data = JSON.parse (data);
2172
 
2173
  if (debug) console.log ('ROTATION DATA:', rotation_data);
2174
 
2175
+ $.post (ajaxurl, {'action': 'ai_ajax_backend', 'ai_check': nonce, 'generate-rotation-code': btoa (JSON.stringify (rotation_data))}
2176
  ).done (function (data) {
2177
  $('#ai-error-container').hide ();
2178
 
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: ads, adsense, ad management, advertising manager, advanced contextual ads,
6
  Requires at least: 4.0
7
  Tested up to: 4.9
8
  Requires PHP: 5.2.4
9
- Stable tag: 2.2.8
10
  License: GPLv3
11
 
12
  Insert and manage ads: AdSense, Amazon, banners, ad rotation, sticky ad widgets, shortcodes, AMP, PHP, HTML, CSS, form, tracking, header, footer code
@@ -754,6 +754,11 @@ AD CODE RIGHT
754
 
755
  == Changelog ==
756
 
 
 
 
 
 
757
  = 2.2.9 =
758
  - Output buffering is now disabled by default (for position Above header you need to enable it)
759
  - Fix for min. paragraph number not processed
@@ -902,6 +907,10 @@ AD CODE RIGHT
902
 
903
  == Upgrade Notice ==
904
 
 
 
 
 
905
  = 2.2.9 =
906
  Output buffering is now disabled by default (for position Above header you need to enable it);
907
  Fix for min. paragraph number not processed
6
  Requires at least: 4.0
7
  Tested up to: 4.9
8
  Requires PHP: 5.2.4
9
+ Stable tag: 2.2.9
10
  License: GPLv3
11
 
12
  Insert and manage ads: AdSense, Amazon, banners, ad rotation, sticky ad widgets, shortcodes, AMP, PHP, HTML, CSS, form, tracking, header, footer code
754
 
755
  == Changelog ==
756
 
757
+ = 2.2.10 =
758
+ - Fix for rotation editor code import/export
759
+ - Fix for errors when using old |rotate| separator
760
+ - Few minor bug fixes, cosmetic changes and code improvements
761
+
762
  = 2.2.9 =
763
  - Output buffering is now disabled by default (for position Above header you need to enable it)
764
  - Fix for min. paragraph number not processed
907
 
908
  == Upgrade Notice ==
909
 
910
+ = 2.2.10 =
911
+ Fix for rotation editor code import/export;
912
+ Fix for errors when using old |rotate| separator
913
+
914
  = 2.2.9 =
915
  Output buffering is now disabled by default (for position Above header you need to enable it);
916
  Fix for min. paragraph number not processed
settings.php CHANGED
@@ -1624,17 +1624,6 @@ function generate_settings_form (){
1624
  </select>
1625
  </td>
1626
  </tr>
1627
- <tr>
1628
- <td>
1629
- Output buffering
1630
- </td>
1631
- <td>
1632
- <select id="output-buffering" name="output-buffering" default="<?php echo DEFAULT_OUTPUT_BUFFERING; ?>" title="Needed for position Above header but may not work with all themes">
1633
- <option value="<?php echo AI_OUTPUT_BUFFERING_DISABLED; ?>" <?php echo get_output_buffering() == AI_OUTPUT_BUFFERING_DISABLED ? AD_SELECT_SELECTED : AD_EMPTY_VALUE; ?>><?php echo AI_TEXT_DISABLED; ?></option>
1634
- <option value="<?php echo AI_OUTPUT_BUFFERING_ENABLED; ?>" <?php echo get_output_buffering() == AI_OUTPUT_BUFFERING_ENABLED ? AD_SELECT_SELECTED : AD_EMPTY_VALUE; ?>><?php echo AI_TEXT_ENABLED; ?></option>
1635
- </select>
1636
- </td>
1637
- </tr>
1638
  <tr>
1639
  <td>
1640
  No paragraph counting inside
@@ -1662,6 +1651,17 @@ function generate_settings_form (){
1662
  <input type="text" name="sticky-widget-margin" value="<?php echo get_sticky_widget_margin (); ?>" default="<?php echo DEFAULT_STICKY_WIDGET_MARGIN; ?>" size="6" maxlength="4" /> px
1663
  </td>
1664
  </tr>
 
 
 
 
 
 
 
 
 
 
 
1665
  <tr>
1666
  <td>
1667
  Plugin priority
1624
  </select>
1625
  </td>
1626
  </tr>
 
 
 
 
 
 
 
 
 
 
 
1627
  <tr>
1628
  <td>
1629
  No paragraph counting inside
1651
  <input type="text" name="sticky-widget-margin" value="<?php echo get_sticky_widget_margin (); ?>" default="<?php echo DEFAULT_STICKY_WIDGET_MARGIN; ?>" size="6" maxlength="4" /> px
1652
  </td>
1653
  </tr>
1654
+ <tr>
1655
+ <td>
1656
+ Output buffering
1657
+ </td>
1658
+ <td>
1659
+ <select id="output-buffering" name="output-buffering" default="<?php echo DEFAULT_OUTPUT_BUFFERING; ?>" title="Needed for position Above header but may not work with all themes">
1660
+ <option value="<?php echo AI_OUTPUT_BUFFERING_DISABLED; ?>" <?php echo get_output_buffering() == AI_OUTPUT_BUFFERING_DISABLED ? AD_SELECT_SELECTED : AD_EMPTY_VALUE; ?>><?php echo AI_TEXT_DISABLED; ?></option>
1661
+ <option value="<?php echo AI_OUTPUT_BUFFERING_ENABLED; ?>" <?php echo get_output_buffering() == AI_OUTPUT_BUFFERING_ENABLED ? AD_SELECT_SELECTED : AD_EMPTY_VALUE; ?>><?php echo AI_TEXT_ENABLED; ?></option>
1662
+ </select>
1663
+ </td>
1664
+ </tr>
1665
  <tr>
1666
  <td>
1667
  Plugin priority