Advanced Ads - Version 1.7.0.1

Version Description

  • hotfix for missing get_current_screen issue
Download this release

Release Info

Developer webzunft
Plugin Icon 128x128 Advanced Ads
Version 1.7.0.1
Comparing to
See all releases

Code changes from version 1.6.17.1 to 1.7.0.1

Files changed (52) hide show
  1. admin/assets/css/admin.css +20 -14
  2. admin/assets/js/admin.js +81 -150
  3. admin/class-advanced-ads-admin.php +46 -5
  4. admin/includes/class-display-condition-callbacks.php +0 -326
  5. admin/includes/class-notices.php +3 -0
  6. admin/includes/class-overview-widgets.php +0 -1
  7. admin/includes/notices.php +5 -0
  8. admin/views/ad-display-metabox.php +115 -77
  9. admin/views/ad-visitor-metabox.php +5 -1
  10. admin/views/notices/jqueryui_error.php +3 -0
  11. admin/views/support.php +15 -12
  12. advanced-ads.php +2 -2
  13. classes/ad.php +7 -3
  14. classes/ad_ajax_callbacks.php +32 -0
  15. classes/ad_type_content.php +13 -0
  16. classes/display-conditions.php +774 -0
  17. classes/plugin.php +12 -0
  18. classes/upgrades.php +213 -0
  19. composer.lock +11 -7
  20. includes/array_ad_conditions.php +1 -0
  21. languages/advanced-ads-de_DE.po +1 -1
  22. languages/advanced-ads-it_IT.po +1 -1
  23. languages/advanced-ads-nl_NL.po +1 -1
  24. languages/advanced-ads-pt_BR.po +1 -1
  25. languages/advanced-ads.mo +0 -0
  26. languages/advanced-ads.po +372 -268
  27. languages/advanced-ads.pot +353 -436
  28. modules/display-by-query/config.php +0 -12
  29. modules/display-by-query/display-by-query.class.php +0 -289
  30. modules/display-by-query/main.php +0 -3
  31. readme.txt +53 -29
  32. vendor/autoload_52.php +1 -1
  33. vendor/composer/LICENSE +0 -0
  34. vendor/composer/autoload_classmap.php +2 -60
  35. vendor/composer/autoload_real_52.php +3 -3
  36. vendor/composer/installed.json +45 -42
  37. vendor/composer/installers/.travis.yml +11 -4
  38. vendor/composer/installers/README.md +4 -2
  39. vendor/composer/installers/composer.json +5 -2
  40. vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +5 -1
  41. vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php +81 -3
  42. vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php +9 -0
  43. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +12 -6
  44. vendor/composer/installers/src/Composer/Installers/CraftInstaller.php +26 -0
  45. vendor/composer/installers/src/Composer/Installers/Installer.php +16 -3
  46. vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php +10 -0
  47. vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php +9 -0
  48. vendor/composer/installers/src/Composer/Installers/OxidInstaller.php +48 -0
  49. vendor/composer/installers/src/Composer/Installers/Plugin.php +17 -0
  50. vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php +1 -1
  51. vendor/composer/installers/tests/Composer/Installers/Test/CraftInstallerTest.php +83 -0
  52. vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php +9 -3
admin/assets/css/admin.css CHANGED
@@ -71,28 +71,35 @@
71
  }
72
  .post-type-advanced_ads h5 { font-size: 1.2em; margin: 1em 0 .5em; }
73
  .post-type-advanced_ads #ad-display-box label { margin-right: 1em; }
74
- .post-type-advanced_ads #ad-display-box td, .post-type-advanced_ads #ad-display-box th { padding-right: 10px; }
75
  .post-type-advanced_ads #ad-display-box .advanced-ads-display-condition-set label { float: left; margin-right: -1px; }
76
  .post-type-advanced_ads #ad-display-box .ui-widget { font-size: inherit; }
77
- .post-type-advanced_ads .advads-conditions-all { display: block; }
78
- .post-type-advanced_ads .advads-conditions-single { margin-bottom: 10px; padding: 10px; }
79
- .post-type-advanced_ads .advads-conditions-single.disabled { display: none; opacity: .5; }
 
 
 
 
 
 
 
80
  .post-type-advanced_ads .advads-conditions-single th { vertical-align: top; }
 
 
 
 
 
 
 
81
  .advads-conditions-postids-list li { background: #F1F1F1; padding: 3px; }
82
  .advads-conditions-postids-list .remove { margin-right: 1em; font-size: .9em; }
83
  .advads-conditions-postids-autocomplete-suggestions li span.left { float: left; }
84
  .advads-conditions-postids-autocomplete-suggestions li span.right { float: right; color: #aaa; font-size: .8em; }
85
 
86
- .post-type-advanced_ads #advads-ad-content-plain { width: 100%; }
87
- .post-type-advanced_ads #ad-display-box .advads-conditions-terms-buttons { display: inline-block; }
88
- .post-type-advanced_ads #ad-display-box .advads-conditions-terms-buttons label,
89
- .post-type-advanced_ads #ad-display-box .advads-conditions-terms-buttons .button { margin: 0 -1px .3em 0; padding: 0 .5em; background: #f7f7f7; height: 22px; line-height: 22px; color: #555; border: 1px solid #ccc; border-radius: 0; font-family: inherit; }
90
- .post-type-advanced_ads #ad-display-box .advads-conditions-terms-buttons label span { margin: 0; padding: 0; line-height: 22px; }
91
-
92
  .advads-buttonset label span { margin: 0; padding: 0; }
93
 
94
  .advads-buttonset .ui-state-active,
95
- .advads-buttonset .button,
96
  .advads-buttonset .ui-button.ui-state-active { border-color: #0074a2 !important; background: #2ea2cc !important; color: #fff !important; box-shadow: none; }
97
 
98
  #ad-display-box .advads-conditions-terms-show-search { height: 22px; line-height: 22px; font-weight: bold; font-size: 1.5em; }
@@ -115,12 +122,11 @@
115
  .advads-debug-output legend { text-decoration: underline; cursor: pointer; }
116
 
117
  #advads-visitor-conditions select,
118
- #advads-visitor-conditions input { margin: 0; padding: 3px; }
119
  #advads-visitor-conditions label { float: left; }
120
  #advads-visitor-conditions tbody tr:first-child { display: none; }
121
- #advads-visitor-conditions td { padding: 0 5px; position: relative; top: 0; left: 0; }
122
  #advads-visitor-conditions td hr { float: right; width: 85%;}
123
- #advads-visitor-conditions td:nth-child(2) { padding-top: 0.5em; vertical-align: top; font-weight: bold; }
124
  .advads-visitor-conditions-connector-and,
125
  .advads-visitor-conditions-connector-or { text-transform: uppercase; }
126
  #advads-visitor-conditions td.advads-visitor-conditions-operator-or > hr { display: none; }
71
  }
72
  .post-type-advanced_ads h5 { font-size: 1.2em; margin: 1em 0 .5em; }
73
  .post-type-advanced_ads #ad-display-box label { margin-right: 1em; }
74
+ .post-type-advanced_ads #ad-display-box td, .post-type-advanced_ads #ad-display-box th { padding: 10px 0 10px 10px; }
75
  .post-type-advanced_ads #ad-display-box .advanced-ads-display-condition-set label { float: left; margin-right: -1px; }
76
  .post-type-advanced_ads #ad-display-box .ui-widget { font-size: inherit; }
77
+ #advads-display-conditions-new select { text-transform: capitalize; }
78
+ .advads-display-conditions-remove + h5 { display: inline-block; margin-top: 0; margin-left: 1em; }
79
+ select + .advads-conditions-single { display: inline-block; }
80
+ #advads-display-condition-table { border-collapse: collapse; }
81
+ #advads-display-condition-table td, #advads-display-condition-table td * { vertical-align: top; }
82
+ #advads-display-condition-table > tbody > tr td { border-bottom: 1px solid #ddd; }
83
+ #advads-display-condition-table select { vertical-align: inherit; margin: 0; }
84
+ .advads-conditions-type { text-transform: capitalize; }
85
+
86
+ .post-type-advanced_ads #advads-ad-content-plain { width: 100%; }
87
  .post-type-advanced_ads .advads-conditions-single th { vertical-align: top; }
88
+ .post-type-advanced_ads .advads-conditions-single { margin: 0; padding: 0 10px 0 0; line-height: 1em; }
89
+ .post-type-advanced_ads select + .advads-conditions-single { padding-left: 10px }
90
+ .post-type-advanced_ads .advads-conditions-single.disabled { display: none; opacity: .5; }
91
+ .post-type-advanced_ads #ad-display-box .advads-conditions-single.advads-buttonset label { margin: 0 -1px .3em 0; padding: 0 .5em; background: #f7f7f7; height: 26px; line-height: 26px; color: #555; border: 1px solid #ccc; border-radius: 0; font-family: inherit; box-shadow: none; }
92
+ .post-type-advanced_ads #ad-display-box .advads-conditions-single.advads-buttonset label span { margin: 0; padding: 0; line-height: inherit; }
93
+ .post-type-advanced_ads .advads-conditions-postid-buttons { padding: 0 10px; }
94
+ .advads-conditions-postids-show-search { margin-left: .5em !important; }
95
  .advads-conditions-postids-list li { background: #F1F1F1; padding: 3px; }
96
  .advads-conditions-postids-list .remove { margin-right: 1em; font-size: .9em; }
97
  .advads-conditions-postids-autocomplete-suggestions li span.left { float: left; }
98
  .advads-conditions-postids-autocomplete-suggestions li span.right { float: right; color: #aaa; font-size: .8em; }
99
 
 
 
 
 
 
 
100
  .advads-buttonset label span { margin: 0; padding: 0; }
101
 
102
  .advads-buttonset .ui-state-active,
 
103
  .advads-buttonset .ui-button.ui-state-active { border-color: #0074a2 !important; background: #2ea2cc !important; color: #fff !important; box-shadow: none; }
104
 
105
  #ad-display-box .advads-conditions-terms-show-search { height: 22px; line-height: 22px; font-weight: bold; font-size: 1.5em; }
122
  .advads-debug-output legend { text-decoration: underline; cursor: pointer; }
123
 
124
  #advads-visitor-conditions select,
125
+ #advads-visitor-conditions input { vertical-align: inherit; margin: 0; padding: 3px; }
126
  #advads-visitor-conditions label { float: left; }
127
  #advads-visitor-conditions tbody tr:first-child { display: none; }
128
+ #advads-visitor-conditions td { padding: 0 5px; position: relative; top: 0; left: 0; vertical-align: top; }
129
  #advads-visitor-conditions td hr { float: right; width: 85%;}
 
130
  .advads-visitor-conditions-connector-and,
131
  .advads-visitor-conditions-connector-or { text-transform: uppercase; }
132
  #advads-visitor-conditions td.advads-visitor-conditions-operator-or > hr { display: none; }
admin/assets/js/admin.js CHANGED
@@ -1,4 +1,8 @@
1
  jQuery( document ).ready(function ($) {
 
 
 
 
2
  function advads_load_ad_type_parameter_metabox(ad_type) {
3
  jQuery( '#advanced-ad-type input' ).prop( 'disabled', true );
4
  $( '#advanced-ads-tinymce-wrapper' ).hide();
@@ -32,122 +36,94 @@ jQuery( document ).ready(function ($) {
32
  advads_load_ad_type_parameter_metabox( ad_type );
33
  });
34
 
35
- // toggle display conditions
36
- $( '#advanced-ad-conditions-enable input' ).click(function () {
37
- advads_toggle_display_conditions( this.value );
38
- });
39
- // display on load
40
- advads_toggle_display_conditions( $( '#advanced-ad-conditions-enable input:checked' ).val() );
41
-
42
- // display / hide options if all-option is checked for display condition
43
- $( '.advanced-ad-display-condition .advads-conditions-all input' ).click(function () {
44
- advads_toggle_single_display_conditions( this );
45
- });
46
- // display / hide options if all-option is checked for display condition – on load
47
- $( '.advanced-ad-display-condition .advads-conditions-all input' ).each(function () {
48
- advads_toggle_single_display_conditions( this );
49
- });
50
-
51
  // activate general buttons
52
- $( '.advads-buttonset' ).buttonset();
 
 
53
  // activate accordions
54
- $( ".advads-accordion" ).accordion({
55
- active: false,
56
- collapsible: true,
57
- });
58
-
59
- // toggle single display condition checkboxes that have a counterpart
60
- $( document ).on('click', '.advads-conditions-single input[type="checkbox"]', function () {
61
- advads_toggle_single_display_condition_checkbox( this );
62
- // update buttons when main conditions get unchecked
63
- //$( '.advads-conditions-terms-buttons' ).button( 'refresh' );
64
- });
65
- // toggle single display condition checkboxes that have a counterpart on load
66
- $( '.advads-conditions-single input[type="checkbox"]' ).each(function () {
67
- advads_toggle_single_display_condition_checkbox( this );
68
- });
69
 
70
  $( document ).on('click', '.advads-conditions-terms-buttons .button', function (e) {
71
  $( this ).remove();
72
  });
73
  // display input field to search for terms
74
- $( '.advads-conditions-terms-show-search' ).click(function (e) {
75
  e.preventDefault();
76
  // display input field
77
  $( this ).siblings( '.advads-conditions-terms-search' ).show().focus();
 
 
78
  $( this ).next( 'br' ).show();
79
  $( this ).hide();
80
  });
81
- // register autocomplete to display condition posts
82
- var response = [];
83
- if($( ".advads-conditions-terms-search" ).length){
84
- $( ".advads-conditions-terms-search" ).each(function(){
85
- var self = this;
86
- $( this ).autocomplete({
87
- source: function(request, callback){
88
- // var searchField = request.term;
89
- advads_term_search( self, callback );
90
- },
91
- minLength: 1,
92
- select: function( event, ui ) {
93
- // append new line with input fields
94
- $( '<label class="button">' + ui.item.label + '<input type="hidden" name="advanced_ad[conditions][' + self.dataset.group + '][' + self.dataset.includeType + '][]" value="' + ui.item.value + '"></label>' ).appendTo( $( self ).siblings( '.advads-conditions-terms-buttons' ) );
95
-
96
- // show / hide other elements
97
- // $( '#advads-display-conditions-individual-post' ).hide();
98
- // $( '.advads-conditions-postids-list .show-search a' ).show();
99
- },
100
- close: function( event, ui ) {
101
- $( self ).val( '' );
102
- }
103
- });
104
- });
105
- };
106
  // display input field to search for post, page, etc.
107
- $( '.advads-conditions-postids-list .show-search a' ).click(function (e) {
108
  e.preventDefault();
109
  // display input field
110
  $( '#advads-display-conditions-individual-post' ).show();
 
111
  $( this ).hide();
112
  });
113
- // register autocomplete to display condition posts
114
- var response = [];
115
- if($( "#advads-display-conditions-individual-post" ).length){
116
- $( "#advads-display-conditions-individual-post" ).autocomplete({
117
- source: function(request, callback){
118
- var searchParam = request.term;
119
- advads_post_search( searchParam, callback );
120
- },
121
- minLength: 2,
122
- select: function( event, ui ) {
123
- // append new line with input fields
124
- var newline = $( '<li></li>' );
125
- $( '<a class="remove" href="#">remove</a>' ).appendTo( newline );
126
- $( '<span>' + ui.item.label + '</span><input type="hidden" name="advanced_ad[conditions][postids][ids][]" value="' + ui.item.value + '">' ).appendTo( newline );
127
- newline.insertBefore( '.advads-conditions-postids-list .show-search' );
128
-
129
- // show / hide other elements
130
- $( '#advads-display-conditions-individual-post' ).hide();
131
- $( '.advads-conditions-postids-list .show-search a' ).show();
132
- },
133
- close: function( event, ui ) {
134
- $( '#advads-display-conditions-individual-post' ).val( '' );
135
- },
136
- })
137
- .autocomplete().data("ui-autocomplete")._renderItem = function( ul, item ) {
138
- ul.addClass( "advads-conditions-postids-autocomplete-suggestions" );
139
- return $( "<li></li>" )
140
- .append( "<span class='left'>" + item.label + "</span><span class='right'>" + item.info + "</span>" )
141
- .appendTo( ul );
142
  };
143
- };
144
 
145
  // remove individual posts from the display conditions post list
146
- $( document ).on('click', '.advads-conditions-postids-list .remove', function(e){
147
- e.preventDefault();
148
- $( this ).parent( 'li' ).remove();
149
  });
150
-
151
  // display ad groups form
152
  $( '#advads-ad-group-list a.edit, #advads-ad-group-list a.row-title' ).click(function(e){
153
  e.preventDefault();
@@ -283,12 +259,14 @@ jQuery( document ).ready(function ($) {
283
  */
284
 
285
  // show image tooltips
286
- var advads_tooltips = $( ".advads-placements-new-form .advads-placement-type" ).tooltip({
287
- items: "span",
288
- content: function() {
289
- return $( this ).parents('.advads-placement-type').find( '.advads-placement-description' ).html();
290
- }
291
- });
 
 
292
 
293
  /**
294
  * Image ad uploader
@@ -412,9 +390,9 @@ function advads_term_search(field, callback) {
412
  var query = {
413
  action: 'advads-terms-search',
414
  };
415
-
416
- query.search = field.value;
417
- query.tax = field.dataset.tagName;
418
 
419
  var querying = true;
420
 
@@ -506,53 +484,6 @@ function advads_toggle_box_enable(e, selector) {
506
  }
507
  }
508
 
509
- /**
510
- * toggle display conditions
511
- * @param {bool} value
512
- */
513
- function advads_toggle_display_conditions(value) {
514
- if (value == 1) {
515
- jQuery( '#advanced-ad-conditions' ).fadeIn();
516
- } else {
517
- jQuery( '#advanced-ad-conditions' ).fadeOut();
518
- }
519
- }
520
-
521
- /**
522
- * disable new display conditions
523
- * @param {string} checkbox element
524
- */
525
- function advads_toggle_single_display_conditions(checkbox) {
526
- // console.log(jQuery(checkbox).parent('div').find('label:not(.advads-conditions-all) input').css('border', 'solid'));
527
- if (jQuery( checkbox ).is( ':checked' )) {
528
- jQuery( checkbox ).parents( '.advanced-ad-display-condition' ).find( '.advads-conditions-single' ).addClass( 'disabled' ).find( 'input' ).attr( 'disabled', 'disabled' );
529
- } else {
530
- // activate buttonsets
531
- jQuery( checkbox ).parents( '.advanced-ad-display-condition' ).find( '.advads-conditions-single.advads-buttonset' ).buttonset();
532
- jQuery( checkbox ).parents( '.advanced-ad-display-condition' ).find( '.advads-conditions-single' ).removeClass( 'disabled' ).find( 'input' ).removeAttr( 'disabled' );
533
- }
534
- }
535
-
536
- /**
537
- * toggle display condition checkboxes
538
- * @param {string} checkbox element
539
- */
540
- function advads_toggle_single_display_condition_checkbox(checkbox) {
541
- // get the counterpart (same value, but not current element)
542
- var counterpart = jQuery( checkbox ).parents( '.advads-conditions-single' ).find( 'input[type="checkbox"][value="' + checkbox.value + '"]' ).not( checkbox );
543
- // toggle counterpart
544
- if (jQuery( checkbox ).is( ':checked' )) {
545
- counterpart.attr( 'checked', false );
546
- counterpart.attr( 'disabled', 'disabled' );
547
- // mark label
548
- jQuery( 'label[for="' + counterpart.attr( 'id' ) + '"]' ).addClass( 'ui-button-disabled' ).addClass( 'ui-state-disabled' );
549
- } else {
550
- counterpart.removeAttr( 'disabled' );
551
- jQuery( 'label[for="' + counterpart.attr( 'id' ) + '"]' ).removeClass( 'ui-button-disabled' );
552
- jQuery( 'label[for="' + counterpart.attr( 'id' ) + '"]' ).removeClass( 'ui-state-disabled' );
553
- }
554
- }
555
-
556
  /**
557
  * validate placement form on submit
558
  */
@@ -691,4 +622,4 @@ function advads_ad_list_build_filters() {
691
  $the_list_tr.not( '.advads-hidden' ).filter( ':odd' ).addClass( 'advads-ad-list-odd' ).removeClass( 'advads-ad-list-even' ).end()
692
  .filter( ':even' ).addClass( 'advads-ad-list-even' ).removeClass( 'advads-ad-list-odd' );
693
  });
694
- }
1
  jQuery( document ).ready(function ($) {
2
+ if ( ! $.fn.buttonset || ! $.fn.accordion || ! $.fn.tooltip ) {
3
+ $( '#advads-jqueryui-error').show();
4
+ }
5
+
6
  function advads_load_ad_type_parameter_metabox(ad_type) {
7
  jQuery( '#advanced-ad-type input' ).prop( 'disabled', true );
8
  $( '#advanced-ads-tinymce-wrapper' ).hide();
36
  advads_load_ad_type_parameter_metabox( ad_type );
37
  });
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  // activate general buttons
40
+ if ( $.fn.buttonset ) {
41
+ $( '.advads-buttonset' ).buttonset();
42
+ }
43
  // activate accordions
44
+ if ( $.fn.accordion ) {
45
+ $( ".advads-accordion" ).accordion({
46
+ active: false,
47
+ collapsible: true,
48
+ });
49
+ }
 
 
 
 
 
 
 
 
 
50
 
51
  $( document ).on('click', '.advads-conditions-terms-buttons .button', function (e) {
52
  $( this ).remove();
53
  });
54
  // display input field to search for terms
55
+ $( document ).on('click', '.advads-conditions-terms-show-search', function (e) {
56
  e.preventDefault();
57
  // display input field
58
  $( this ).siblings( '.advads-conditions-terms-search' ).show().focus();
59
+ // register autocomplete
60
+ advads_register_terms_autocomplete( $( this ).siblings( '.advads-conditions-terms-search' ) );
61
  $( this ).next( 'br' ).show();
62
  $( this ).hide();
63
  });
64
+ // function for autocomplete
65
+ function advads_register_terms_autocomplete( self ){
66
+ self.autocomplete({
67
+ source: function(request, callback){
68
+ // var searchField = request.term;
69
+ advads_term_search( self, callback );
70
+ },
71
+ minLength: 1,
72
+ select: function( event, ui ) {
73
+ // append new line with input fields
74
+ $( '<label class="button ui-state-active">' + ui.item.label + '<input type="hidden" name="' + self.data('inputName') + '" value="' + ui.item.value + '"></label>' ).appendTo( self.siblings( '.advads-conditions-terms-buttons' ) );
75
+
76
+ // show / hide other elements
77
+ // $( '#advads-display-conditions-individual-post' ).hide();
78
+ // $( '.advads-conditions-postids-list .show-search a' ).show();
79
+ },
80
+ close: function( event, ui ) {
81
+ self.val( '' );
82
+ }
83
+ });
84
+ }
 
 
 
 
85
  // display input field to search for post, page, etc.
86
+ $( document ).on( 'click', '.advads-conditions-postids-show-search', function (e) {
87
  e.preventDefault();
88
  // display input field
89
  $( '#advads-display-conditions-individual-post' ).show();
90
+ $( '.advads-conditions-postids-search-line .description' ).hide();
91
  $( this ).hide();
92
  });
93
+ // register autocomplete to display condition individual posts
94
+ $(document).on("focus","#advads-display-conditions-individual-post",function(e) {
95
+ var self = this;
96
+ if ( !$(this).data("autocomplete") ) { // If the autocomplete wasn't called yet:
97
+ $( this ).autocomplete({
98
+ source: function(request, callback){
99
+ var searchParam = request.term;
100
+ advads_post_search( searchParam, callback );
101
+ },
102
+ minLength: 2,
103
+ select: function( event, ui ) {
104
+ // append new line with input fields
105
+ var newline = $( '<label class="button ui-state-active">' + ui.item.label + '</label>' );
106
+ $( '<input type="hidden" name="' + self.dataset.fieldName + '[value][]" value="' + ui.item.value + '"/>' ).appendTo( newline );
107
+ newline.insertBefore( $( '.advads-conditions-postids-search-line' ) );
108
+ },
109
+ close: function( event, ui ) {
110
+ $( '#advads-display-conditions-individual-post' ).val( '' );
111
+ },
112
+ })
113
+ .autocomplete().data("ui-autocomplete")._renderItem = function( ul, item ) {
114
+ ul.addClass( "advads-conditions-postids-autocomplete-suggestions" );
115
+ return $( "<li></li>" )
116
+ .append( "<span class='left'>" + item.label + "</span><span class='right'>" + item.info + "</span>" )
117
+ .appendTo( ul );
118
+ };
 
 
 
119
  };
120
+ });
121
 
122
  // remove individual posts from the display conditions post list
123
+ $( document ).on('click', '.advads-conditions-postid-buttons .button', function(e){
124
+ $( this ).remove();
 
125
  });
126
+
127
  // display ad groups form
128
  $( '#advads-ad-group-list a.edit, #advads-ad-group-list a.row-title' ).click(function(e){
129
  e.preventDefault();
259
  */
260
 
261
  // show image tooltips
262
+ if ( $.fn.tooltip ) {
263
+ $( ".advads-placements-new-form .advads-placement-type" ).tooltip({
264
+ items: "span",
265
+ content: function() {
266
+ return $( this ).parents('.advads-placement-type').find( '.advads-placement-description' ).html();
267
+ }
268
+ });
269
+ }
270
 
271
  /**
272
  * Image ad uploader
390
  var query = {
391
  action: 'advads-terms-search',
392
  };
393
+
394
+ query.search = field.val();
395
+ query.tax = field.data('tagName');
396
 
397
  var querying = true;
398
 
484
  }
485
  }
486
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  /**
488
  * validate placement form on submit
489
  */
622
  $the_list_tr.not( '.advads-hidden' ).filter( ':odd' ).addClass( 'advads-ad-list-odd' ).removeClass( 'advads-ad-list-even' ).end()
623
  .filter( ':even' ).addClass( 'advads-ad-list-even' ).removeClass( 'advads-ad-list-odd' );
624
  });
625
+ }
admin/class-advanced-ads-admin.php CHANGED
@@ -99,10 +99,11 @@ class Advanced_Ads_Admin {
99
 
100
  // Load admin style sheet and JavaScript.
101
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
102
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
103
 
104
  // Add menu items
105
  add_action( 'admin_menu', array($this, 'add_plugin_admin_menu') );
 
106
 
107
  // on post/ad edit screen
108
  add_action( 'edit_form_top', array($this, 'edit_form_above_title') );
@@ -210,7 +211,11 @@ class Advanced_Ads_Admin {
210
  //call media manager for image upload only on ad edit pages
211
  $screen = get_current_screen();
212
  if( isset( $screen->id ) && Advanced_Ads::POST_TYPE_SLUG === $screen->id ) {
213
- wp_enqueue_media();
 
 
 
 
214
  }
215
 
216
  }
@@ -223,6 +228,10 @@ class Advanced_Ads_Admin {
223
  */
224
  static function screen_belongs_to_advanced_ads(){
225
 
 
 
 
 
226
  $screen = get_current_screen();
227
  //echo $screen->id;
228
  if( !isset( $screen->id ) ) {
@@ -292,6 +301,19 @@ class Advanced_Ads_Admin {
292
  do_action( 'advanced-ads-submenu-pages', $this->plugin_slug );
293
  }
294
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  /**
296
  * Render the overview page
297
  *
@@ -371,6 +393,7 @@ class Advanced_Ads_Admin {
371
  // process email
372
 
373
  $mail_sent = false;
 
374
  global $current_user;
375
  $user = wp_get_current_user();
376
 
@@ -383,13 +406,21 @@ class Advanced_Ads_Admin {
383
  $email = trim( $_POST['advads_support']['email'] );
384
  $name = trim( $_POST['advads_support']['name'] );
385
  $message = trim( $_POST['advads_support']['message'] );
386
- if( '' !== $email ){
 
 
 
387
  $headers = 'From: '. $name .' <' . $email . '>' . "\r\n";
388
  $content = $message;
389
  $content .= "\r\n\r\n Name: " . $name;
390
  $content .= "\r\n URL: " . home_url();
391
 
392
  $mail_sent = wp_mail( 'support@wpadvancedads.com', 'Support for ' . home_url(), $content, $headers );
 
 
 
 
 
393
  }
394
  }
395
 
@@ -1152,7 +1183,13 @@ class Advanced_Ads_Admin {
1152
  }
1153
 
1154
  echo '<input id="advanced-ads-remove-widget-id" type="checkbox" ' . checked( $remove, true, false ) . ' name="'.ADVADS_SLUG.'[remove-widget-id]" />';
1155
- echo '<p class="description">'. __( 'Remove the ID attribute from widgets in order to not make them an easy target of ad blockers.', 'advanced-ads' ) .'</p>';
 
 
 
 
 
 
1156
  }
1157
 
1158
  /**
@@ -1195,6 +1232,9 @@ class Advanced_Ads_Admin {
1195
  // check if editors can edit ads now and set the rights
1196
  // else, remove that right
1197
  $editor_role = get_role( 'editor' );
 
 
 
1198
  if( isset($options['editors-manage-ads']) && $options['editors-manage-ads'] ){
1199
  $editor_role->add_cap( 'advanced_ads_see_interface' );
1200
  $editor_role->add_cap( 'advanced_ads_edit_ads' );
@@ -1590,7 +1630,7 @@ class Advanced_Ads_Admin {
1590
  */
1591
  public static function get_wp_timezone() {
1592
  $_time_zone = get_option( 'timezone_string' );
1593
- $time_zone = 'UTC+0';
1594
  if ( $_time_zone ) {
1595
  $time_zone = new DateTimeZone( $_time_zone );
1596
  } else {
@@ -1638,6 +1678,7 @@ class Advanced_Ads_Admin {
1638
  if( current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads') ) ) {
1639
  if ( $this->screen_belongs_to_advanced_ads() ){
1640
  include ADVADS_BASE_PATH . 'admin/views/notices/adblock.php';
 
1641
  }
1642
  }
1643
 
99
 
100
  // Load admin style sheet and JavaScript.
101
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
102
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ), 9 );
103
 
104
  // Add menu items
105
  add_action( 'admin_menu', array($this, 'add_plugin_admin_menu') );
106
+ add_action( 'admin_head', array( $this, 'highlight_menu_item' ) );
107
 
108
  // on post/ad edit screen
109
  add_action( 'edit_form_top', array($this, 'edit_form_above_title') );
211
  //call media manager for image upload only on ad edit pages
212
  $screen = get_current_screen();
213
  if( isset( $screen->id ) && Advanced_Ads::POST_TYPE_SLUG === $screen->id ) {
214
+ // the 'wp_enqueue_media' function can be executed only once and should be called with the 'post' parameter
215
+ // in this case, the '_wpMediaViewsL10n' js object inside html will contain id of the post, that is necessary to view oEmbed priview inside tinyMCE editor.
216
+ // since other plugins can call the 'wp_enqueue_media' function without the 'post' parameter, Advanced Ads should call it earlier.
217
+ global $post;
218
+ wp_enqueue_media( array( 'post' => $post ) );
219
  }
220
 
221
  }
228
  */
229
  static function screen_belongs_to_advanced_ads(){
230
 
231
+ if( ! function_exists( 'get_current_screen' ) ){
232
+ return false;
233
+ }
234
+
235
  $screen = get_current_screen();
236
  //echo $screen->id;
237
  if( !isset( $screen->id ) ) {
301
  do_action( 'advanced-ads-submenu-pages', $this->plugin_slug );
302
  }
303
 
304
+ /**
305
+ * Highlights the 'Advanced Ads->Ads' item in the menu when an ad edit page is open
306
+ * @see the 'parent_file' and the 'submenu_file' filters for reference
307
+ */
308
+ public function highlight_menu_item() {
309
+ global $parent_file, $submenu_file, $post_type;
310
+
311
+ if ( $post_type === $this->post_type ) {
312
+ $parent_file = $this->plugin_slug;
313
+ $submenu_file = 'edit.php?post_type=' . $this->post_type;
314
+ }
315
+ }
316
+
317
  /**
318
  * Render the overview page
319
  *
393
  // process email
394
 
395
  $mail_sent = false;
396
+ $sent_errors = array();
397
  global $current_user;
398
  $user = wp_get_current_user();
399
 
406
  $email = trim( $_POST['advads_support']['email'] );
407
  $name = trim( $_POST['advads_support']['name'] );
408
  $message = trim( $_POST['advads_support']['message'] );
409
+ if( '' === $message ){
410
+ $sent_errors[] = __('Please enter a message', 'advanced-ads');
411
+ }
412
+ if( is_email( $email ) ){
413
  $headers = 'From: '. $name .' <' . $email . '>' . "\r\n";
414
  $content = $message;
415
  $content .= "\r\n\r\n Name: " . $name;
416
  $content .= "\r\n URL: " . home_url();
417
 
418
  $mail_sent = wp_mail( 'support@wpadvancedads.com', 'Support for ' . home_url(), $content, $headers );
419
+ if( ! $mail_sent ){
420
+ $sent_errors[] = sprintf(__('Email could NOT be sent. Please contact us directly at %s.', 'advanced-ads'), '<a href="mailto:support@wpadvancedads.com">support@wpadvancedads.com</a>');
421
+ }
422
+ } else {
423
+ $sent_errors[] = __('Please enter a valid email address', 'advanced-ads');
424
  }
425
  }
426
 
1183
  }
1184
 
1185
  echo '<input id="advanced-ads-remove-widget-id" type="checkbox" ' . checked( $remove, true, false ) . ' name="'.ADVADS_SLUG.'[remove-widget-id]" />';
1186
+ echo '<p class="description">' . __( 'Remove the ID attribute from widgets in order to not make them an easy target of ad blockers.', 'advanced-ads' );
1187
+
1188
+ if ( class_exists( 'q2w3_fixed_widget', false ) ) {
1189
+ echo '<br />' . __( 'If checked, the Advanced Ads Widget will not work with the fixed option of the <strong>Q2W3 Fixed Widget</strong> plugin.', 'advanced-ads' );
1190
+ }
1191
+
1192
+ echo '</p>';
1193
  }
1194
 
1195
  /**
1232
  // check if editors can edit ads now and set the rights
1233
  // else, remove that right
1234
  $editor_role = get_role( 'editor' );
1235
+ if( null == $editor_role ){
1236
+ return $options;
1237
+ }
1238
  if( isset($options['editors-manage-ads']) && $options['editors-manage-ads'] ){
1239
  $editor_role->add_cap( 'advanced_ads_see_interface' );
1240
  $editor_role->add_cap( 'advanced_ads_edit_ads' );
1630
  */
1631
  public static function get_wp_timezone() {
1632
  $_time_zone = get_option( 'timezone_string' );
1633
+ $time_zone = new DateTimeZone( 'UTC' );
1634
  if ( $_time_zone ) {
1635
  $time_zone = new DateTimeZone( $_time_zone );
1636
  } else {
1678
  if( current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads') ) ) {
1679
  if ( $this->screen_belongs_to_advanced_ads() ){
1680
  include ADVADS_BASE_PATH . 'admin/views/notices/adblock.php';
1681
+ include ADVADS_BASE_PATH . 'admin/views/notices/jqueryui_error.php';
1682
  }
1683
  }
1684
 
admin/includes/class-display-condition-callbacks.php DELETED
@@ -1,326 +0,0 @@
1
- <?php
2
- /**
3
- * container class for callbacks for display conditions
4
- *
5
- * @package WordPress
6
- * @subpackage Advanced Ads Plugin
7
- * @since 1.2.2
8
- */
9
- class Advanced_Ads_Display_Condition_Callbacks {
10
-
11
- /**
12
- * render display condition for post types
13
- *
14
- * @param obj $ad ad object
15
- * @since 1.2.2
16
- */
17
- public static function post_types($ad = false){
18
-
19
- // set defaults
20
- if ( is_object( $ad ) ){
21
- $_all = (isset($ad->conditions['posttypes']['all'])) ? 1 : 0;
22
- if ( ! $_all && ! isset($ad->conditions['posttypes']['all']) && empty($ad->conditions['posttypes']['include']) && empty($ad->conditions['posttypes']['exclude']) ){
23
- $_all = 1;
24
- }
25
- }
26
-
27
- ?><h4><label class="advads-conditions-all"><input type="checkbox" name="advanced_ad[conditions][posttypes][all]" value="1" <?php checked( $_all, 1 ); ?>><?php
28
- _e( 'Display on all public <strong>post types</strong>.', 'advanced-ads' ); ?></label></h4><?php
29
- $post_types = get_post_types( array('public' => true, 'publicly_queryable' => true), 'object', 'or' );
30
- ?><div class="advads-conditions-single">
31
- <p class="description"><?php _e( 'Choose the public post types on which to display the ad.', 'advanced-ads' ); ?></p><?php
32
- // backward compatibility
33
- // TODO: remove in a later version
34
- $_includes = ( ! empty($ad->conditions['posttypes']['include']) && is_string( $ad->conditions['posttypes']['include'] )) ? explode( ',', $ad->conditions['posttypes']['include'] ) : array();
35
- $_excludes = ( ! empty($ad->conditions['posttypes']['exclude']) && is_string( $ad->conditions['posttypes']['exclude'] )) ? explode( ',', $ad->conditions['posttypes']['exclude'] ) : array();
36
-
37
- foreach ( $post_types as $_type_id => $_type ){
38
- // backward compatibility
39
- // TODO: remove this in a later version
40
- if ( $_includes == array() && count( $_excludes ) > 0 && ! in_array( $_type_id, $_excludes ) ){
41
- $_val = 1;
42
- } elseif ( in_array( $_type_id, $_includes ) ){
43
- $_val = 1;
44
- } else {
45
- $_val = 0;
46
- }
47
-
48
- if ( ! $_val && isset($ad->conditions['posttypes']['include']) && is_array( $ad->conditions['posttypes']['include'] ) && in_array( $_type_id, $ad->conditions['posttypes']['include'] ) ){
49
- $_val = 1;
50
- }
51
-
52
- ?><label><input type="checkbox" name="advanced_ad[conditions][posttypes][include][]" <?php checked( $_val, 1 ); ?> value="<?php echo $_type_id; ?>"><?php echo $_type->label; ?></label><?php
53
- }
54
- ?></div><?php
55
- }
56
-
57
- /**
58
- * render display condition for post types
59
- *
60
- * @param obj $ad ad object
61
- * @since 1.2.3
62
- */
63
- public static function terms($ad = false){
64
-
65
- // set defaults
66
- if ( is_object( $ad ) ){
67
- $_all = (isset($ad->conditions['categoryids']['all'])) ? 1 : 0;
68
- if ( ! $_all && ! isset($ad->conditions['categoryids']['all']) && empty($ad->conditions['categoryids']['include']) && empty($ad->conditions['categoryids']['exclude']) ){
69
- $_all = 1;
70
- }
71
- }
72
-
73
- if ( ! empty($ad->conditions['categoryids']['include']) ){
74
- // backward compatibility
75
- // TODO: remove in a later version; this should already be an array
76
- if ( is_string( $ad->conditions['categoryids']['include'] ) ){
77
- $_includes = explode( ',', $ad->conditions['categoryids']['include'] );
78
- } else {
79
- $_includes = $ad->conditions['categoryids']['include'];
80
- }
81
- } else {
82
- $_includes = array();
83
- }
84
-
85
- ?><h4><label class="advads-conditions-all"><input type="checkbox" name="advanced_ad[conditions][categoryids][all]" value="1" <?php checked( $_all, 1 ); ?>><?php
86
- _e( 'Display for all <strong>categories, tags and taxonomies</strong>.', 'advanced-ads' ); ?></label></h4><?php
87
- ?><div class="advads-conditions-single advads-buttonset"><h5 class="header"><?php _e( 'Display here', 'advanced-ads' ); ?></h5><p class="description"><?php _e( 'Choose terms from public categories, tags and other taxonomies a post must belong to in order to have ads.', 'advanced-ads' ); ?></p>
88
- <table><?php
89
- self::_display_taxonomy_term_list( $_includes, 'include', 'advanced_ad[conditions][categoryids][include][]', 'categoryids' );
90
- ?></table><?php
91
-
92
- if ( ! empty($ad->conditions['categoryids']['exclude']) ){
93
- // backward compatibility
94
- // TODO: remove in a later version; this should already be an array
95
- if ( is_string( $ad->conditions['categoryids']['exclude'] ) ){
96
- $_excludes = explode( ',', $ad->conditions['categoryids']['exclude'] );
97
- } else {
98
- $_excludes = $ad->conditions['categoryids']['exclude'];
99
- }
100
- } else {
101
- $_excludes = array();
102
- }
103
-
104
- ?><h5 class="header"><?php _e( 'Hide from here', 'advanced-ads' ); ?></h5><p class="description"><?php _e( 'Choose the terms from public categories, tags and other taxonomies a post must belong to hide the ad from it.', 'advanced-ads' ); ?></p>
105
- <table><?php
106
- self::_display_taxonomy_term_list( $_excludes, 'exclude', 'advanced_ad[conditions][categoryids][exclude][]', 'categoryids' );
107
- ?></table></div><?php
108
- }
109
-
110
- /**
111
- * render taxonomy term list with options
112
- *
113
- * @since 1.4.7
114
- * @param arr $checked array with ids of checked terms
115
- * @param str $includetype is this an include or exclude type of setting
116
- * @param str $inputname value of the name attribute of the input tag
117
- * @param str $group group of the values
118
- */
119
- private static function _display_taxonomy_term_list($checked = array(), $includetype = 'include', $inputname = '', $group = ''){
120
- $taxonomies = get_taxonomies( array('public' => true, 'publicly_queryable' => true), 'objects', 'or' );
121
- foreach ( $taxonomies as $_tax ):
122
- if ( $_tax->name === 'advanced_ads_groups' ) { continue; // exclude adv ads groups
123
- }
124
- // limit the number of terms so many terms don’t break the admin page
125
- $max_terms = absint( apply_filters( 'advanced-ads-admin-max-terms', 50 ) );
126
- $terms = get_terms( $_tax->name, array('hide_empty' => false, 'number' => $max_terms) );
127
-
128
- if ( ! empty( $terms ) && ! is_wp_error( $terms ) ):
129
- ?><tr><th><?php echo $_tax->label; ?></th><?php
130
- ?><td><?php
131
- // display search field if the term limit is reached
132
- if ( count( $terms ) == $max_terms ) :
133
- ?><div class="advads-conditions-terms-buttons advads-buttonset" title="click to remove"><?php
134
-
135
- // query active terms
136
- if ( is_array( $checked ) && count( $checked ) ){
137
- $args = array('hide_empty' => false);
138
- $args['include'] = $checked;
139
- $checked_terms = get_terms( $_tax->name, $args );
140
-
141
- foreach ( $checked_terms as $_checked_term ) :
142
- ?><label class="button"><?php echo $_checked_term->name;
143
- ?><input type="hidden" name="<?php echo $inputname; ?>" value="<?php
144
- echo $_checked_term->term_id; ?>"></label><?php
145
- endforeach;
146
- }
147
-
148
- ?></div><span class="advads-conditions-terms-show-search button" title="<?php
149
- _ex( 'add more terms', 'display the terms search field on ad edit page', 'advanced-ads' );
150
- ?>">+</span><span class="description"><?php _e( 'add more terms', 'advanced-ads' );
151
- ?></span><br/><input type="text" class="advads-conditions-terms-search" data-tag-name="<?php echo $_tax->name;
152
- ?>" data-include-type="<?php echo $includetype; ?>" data-group="<?php echo $group; ?>" placeholder="<?php
153
- _e( 'term name or id', 'advanced-ads' ); ?>"/><?php
154
- else :
155
- ?><div class="advads-conditions-terms-buttons advads-buttonset"><?php
156
- foreach ( $terms as $_term ) :
157
- $field_id = "advads-conditions-terms-$includetype-$group-$_term->term_id";
158
- ?><input type="checkbox" id="<?php echo $field_id; ?>" name="<?php echo $inputname; ?>" value="<?php echo $_term->term_id; ?>" <?php
159
- checked( in_array( $_term->term_id, $checked ), true ); ?>><label for="<?php echo $field_id; ?>"><?php echo $_term->name; ?></label><?php
160
- endforeach;
161
- ?></div><?php
162
- endif;
163
- ?></td></tr><?php
164
- endif;
165
- endforeach;
166
- }
167
-
168
- /**
169
- * render display condition for taxonomy/term archive pages
170
- *
171
- * @param obj $ad ad object
172
- * @since 1.2.5
173
- */
174
- public static function category_archives($ad = false){
175
-
176
- // set defaults
177
- if ( is_object( $ad ) ){
178
- $_all = (isset($ad->conditions['categoryarchiveids']['all'])) ? 1 : 0;
179
- if ( ! $_all && empty($ad->conditions['categoryarchiveids']['include']) && empty($ad->conditions['categoryarchiveids']['exclude']) ){
180
- $_all = 1;
181
- }
182
- }
183
-
184
- if ( ! empty($ad->conditions['categoryarchiveids']['include']) ){
185
- // backward compatibility
186
- // TODO: remove in a later version; this should already be an array
187
- if ( is_string( $ad->conditions['categoryarchiveids']['include'] ) ){
188
- $_includes = explode( ',', $ad->conditions['categoryarchiveids']['include'] );
189
- } else {
190
- $_includes = $ad->conditions['categoryarchiveids']['include'];
191
- }
192
- } else {
193
- $_includes = array();
194
- }
195
-
196
- ?><h4><label class="advads-conditions-all"><input type="checkbox" name="advanced_ad[conditions][categoryarchiveids][all]" value="1" <?php checked( $_all, 1 ); ?>><?php
197
- _e( 'Display on all <strong>category archive pages</strong>.', 'advanced-ads' ); ?></label></h4><?php
198
- $taxonomies = get_taxonomies( array('public' => true, 'publicly_queryable' => true), 'objects', 'or' );
199
- ?><div class="advads-conditions-single advads-buttonset"><table>
200
- <p class="description"><?php _e( 'Choose the terms from public categories, tags and other taxonomies on which\'s archive page ads can appear', 'advanced-ads' ); ?></p>
201
- <table><?php
202
- self::_display_taxonomy_term_list( $_includes, 'include', 'advanced_ad[conditions][categoryarchiveids][include][]', 'categoryarchiveids' );
203
- ?></table><?php
204
-
205
- if ( ! empty($ad->conditions['categoryarchiveids']['exclude']) ){
206
- // backward compatibility
207
- // TODO: remove in a later version; this should already be an array
208
- if ( is_string( $ad->conditions['categoryarchiveids']['exclude'] ) ){
209
- $_excludes = explode( ',', $ad->conditions['categoryarchiveids']['exclude'] );
210
- } else {
211
- $_excludes = $ad->conditions['categoryarchiveids']['exclude'];
212
- }
213
- } else {
214
- $_excludes = array();
215
- }
216
-
217
- ?><h5 class="header"><?php _e( 'Hide from here', 'advanced-ads' ); ?></h5><p class="description"><?php _e( 'Choose the terms from public categories, tags and other taxonomies on which\'s archive pages ads are hidden.', 'advanced-ads' ); ?></p>
218
- <table><?php
219
- self::_display_taxonomy_term_list( $_excludes, 'exclude', 'advanced_ad[conditions][categoryarchiveids][exclude][]', 'categoryarchiveids' );
220
- ?></table></div><?php
221
- }
222
-
223
- /**
224
- * render display condition for single post types
225
- *
226
- * @param obj $ad ad object
227
- * @since 1.2.6
228
- */
229
- public static function single_posts($ad = false){
230
-
231
- if ( is_object( $ad ) ){
232
- $_all = (isset($ad->conditions['postids']['all'])) ? 1 : 0;
233
- if ( ! $_all && empty($ad->conditions['postids']['method']) ){
234
- $_all = 1;
235
- }
236
- }
237
-
238
- ?><h4><label class="advads-conditions-all"><input type="checkbox" name="advanced_ad[conditions][postids][all]" value="1" <?php
239
- checked( $_all, 1 ); ?>><?php _e( 'Display on all <strong>individual posts, pages</strong> and public post type pages', 'advanced-ads' ); ?></label></h4><?php
240
-
241
- ?><div class="advads-conditions-single">
242
- <p class="description"><?php _e( 'Choose on which individual posts, pages and public post type pages you want to display or hide ads.', 'advanced-ads' ); ?></p><?php
243
-
244
- // derrive method from previous setup
245
- // set defaults
246
- if ( is_object( $ad ) ){
247
- $_method = (isset($ad->conditions['postids']['method'])) ? $ad->conditions['postids']['method'] : 0;
248
- if ( $_method === 0 ){
249
- if ( empty($ad->conditions['postids']['include']) && ! empty($ad->conditions['postids']['exclude']) ){
250
- $_method = 'exclude';
251
- } elseif ( ! empty($ad->conditions['postids']['include']) && empty($ad->conditions['postids']['exclude']) ) {
252
- $_method = 'include';
253
- } else {
254
- $_method = '';
255
- }
256
- }
257
- }
258
-
259
- ?><p><?php _e( 'What should happen with ads on the list of individual posts below?', 'advanced-ads' ); ?></p>
260
- <label><input type="radio" name='advanced_ad[conditions][postids][method]' value='' <?php checked( '', $_method ); ?>><?php _e( 'ignore the list', 'advanced-ads' ); ?></label></li>
261
- <label><input type="radio" name='advanced_ad[conditions][postids][method]' value='include' <?php checked( 'include', $_method ); ?>><?php _e( 'display the ad only there', 'advanced-ads' ); ?></label></li>
262
- <label><input type="radio" name='advanced_ad[conditions][postids][method]' value='exclude' <?php checked( 'exclude', $_method ); ?>><?php _e( 'hide the ad here', 'advanced-ads' ); ?></label></li>
263
- <?php
264
-
265
- /**
266
- * Update warning
267
- * @todo remove on a later version, if no longer needed
268
- */
269
- if ( ! empty($ad->conditions['postids']['include']) && ! empty($ad->conditions['postids']['exclude']) ){
270
- ?><div style="color: red;"><p><strong><?php _e( 'Update warning', 'advanced-ads' ); ?></strong></p>
271
- <p><?php _e( 'Due to some conflicts before version 1.2.6, it is from now on only possible to choose either individual pages to include or exclude an ad, but not both with mixed settings. It seems you are still using mixed settings on this page. Please consider changing your setup for this ad.', 'advanced-ads' ); ?></p>
272
- <p><?php _e( 'Your old values are:', 'advanced-ads' ); ?></p>
273
- <p><?php _e( 'Post IDs the ad is displayed on:', 'advanced-ads' ); echo $ad->conditions['postids']['include']; ?></p>
274
- <p><?php _e( 'Post IDs the ad is hidden from:', 'advanced-ads' ); echo $ad->conditions['postids']['exclude']; ?></p>
275
- <p><?php _e( 'Below you find the pages the ad is displayed on. If this is ok, just save the ad. If not, please update your settings.', 'advanced-ads' ); ?></p>
276
-
277
- </div><?php
278
- }
279
-
280
- if ( ! empty($ad->conditions['postids']['include']) ){
281
- // backward compatibility
282
- // TODO: remove in a later version; this should already be an array
283
- if ( is_string( $ad->conditions['postids']['include'] ) ){
284
- $_postids = explode( ',', $ad->conditions['postids']['include'] );
285
- } else {
286
- $_postids = $ad->conditions['postids']['include'];
287
- }
288
- } elseif ( ! empty($ad->conditions['postids']['exclude']) ){
289
- // backward compatibility
290
- // TODO: remove in a later version; this should already be an array
291
- if ( is_string( $ad->conditions['postids']['exclude'] ) ){
292
- $_postids = explode( ',', $ad->conditions['postids']['exclude'] );
293
- } else {
294
- $_postids = $ad->conditions['postids']['exclude'];
295
- }
296
- } elseif ( isset($ad->conditions['postids']['ids']) && is_array( $ad->conditions['postids']['ids'] ) ) {
297
- $_postids = $ad->conditions['postids']['ids'];
298
- } else {
299
- $_postids = array();
300
- }
301
-
302
- ?><ul class='advads-conditions-postids-list'><?php
303
- if ( $_postids != array() ){
304
- $args = array(
305
- 'post_type' => 'any',
306
- // 'post_status' => 'publish',
307
- 'post__in' => $_postids,
308
- 'posts_per_page' => -1,
309
- // 'ignore_sticky_posts' => 1,
310
- );
311
-
312
- $the_query = new WP_Query( $args );
313
- while ( $the_query->have_posts() ) {
314
- $the_query->next_post();
315
- echo '<li><a class="remove" href="#">remove</a><a href="'.get_permalink( $the_query->post->ID ).'">' . get_the_title( $the_query->post->ID ) . '</a><input type="hidden" name="advanced_ad[conditions][postids][ids][]" value="'.$the_query->post->ID.'"></li>';
316
- }
317
- }
318
- ?><li class="show-search"><a href="#"><?php _e( 'new', 'advanced-ads' ); ?></a>
319
- <input type="text" style="display:none;" id="advads-display-conditions-individual-post" value="" placeholder="<?php
320
- _e( 'type the title', 'advanced-ads' ); ?>"/>
321
- <?php wp_nonce_field( 'internal-linking', '_ajax_linking_nonce', false ); ?>
322
- </li>
323
- </ul>
324
- </div><?php
325
- }
326
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/class-notices.php CHANGED
@@ -133,6 +133,9 @@ class Advanced_Ads_Admin_Notices {
133
  if ( version_compare( $old_version, '1.6.6' ) == -1 ) {
134
  $this->notices[] = '1.6.6';
135
  }
 
 
 
136
  }
137
  $new_options['version'] = ADVADS_VERSION;
138
 
133
  if ( version_compare( $old_version, '1.6.6' ) == -1 ) {
134
  $this->notices[] = '1.6.6';
135
  }
136
+ if ( version_compare( $old_version, '1.7' ) == -1 ) {
137
+ $this->notices[] = '1.7';
138
+ }
139
  }
140
  $new_options['version'] = ADVADS_VERSION;
141
 
admin/includes/class-overview-widgets.php CHANGED
@@ -185,7 +185,6 @@ foreach ( $next_steps as $_step ){
185
  ?><p><?php _e( 'Track the impressions of and clicks on your ads.', 'advanced-ads' ); ?></p><ul class='list'>
186
  <li><?php _e( '2 methods to count impressions', 'advanced-ads' ); ?></li>
187
  <li><?php _e( 'beautiful stats for all or single ads', 'advanced-ads' ); ?></li>
188
- <li><?php _e( 'get stats for predefined and custom periods', 'advanced-ads' ); ?></li>
189
  <li><?php _e( 'group stats by day, week or month', 'advanced-ads' ); ?></li>
190
  </ul><p><a class="button button-primary" href="<?php echo ADVADS_URL; ?>add-ons/tracking/#utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons" target="_blank"><?php
191
  _e( 'Get the Tracking add-on', 'advanced-ads' ); ?></a></p><?php
185
  ?><p><?php _e( 'Track the impressions of and clicks on your ads.', 'advanced-ads' ); ?></p><ul class='list'>
186
  <li><?php _e( '2 methods to count impressions', 'advanced-ads' ); ?></li>
187
  <li><?php _e( 'beautiful stats for all or single ads', 'advanced-ads' ); ?></li>
 
188
  <li><?php _e( 'group stats by day, week or month', 'advanced-ads' ); ?></li>
189
  </ul><p><a class="button button-primary" href="<?php echo ADVADS_URL; ?>add-ons/tracking/#utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons" target="_blank"><?php
190
  _e( 'Get the Tracking add-on', 'advanced-ads' ); ?></a></p><?php
admin/includes/notices.php CHANGED
@@ -50,6 +50,11 @@ $advanced_ads_admin_notices = array(
50
  'type' => 'update',
51
  'text' => 'Advanced Ads 1.6.6 changed <a href="/wp-admin/admin.php?page=advanced-ads-placements">placements</a> completely. Take a look at the <a href="https://wpadvancedads.com/advanced-ads-1-6-6/" target="_blank">update post</a> to find out why I am so excited about it.',
52
  ),
 
 
 
 
 
53
  // missing license codes
54
  'license_invalid' => array(
55
  'type' => 'plugin_error',
50
  'type' => 'update',
51
  'text' => 'Advanced Ads 1.6.6 changed <a href="/wp-admin/admin.php?page=advanced-ads-placements">placements</a> completely. Take a look at the <a href="https://wpadvancedads.com/advanced-ads-1-6-6/" target="_blank">update post</a> to find out why I am so excited about it.',
52
  ),
53
+ // if users updated from a previous version to 1.7
54
+ '1.7' => array(
55
+ 'type' => 'update',
56
+ 'text' => 'Advanced Ads 1.7 made changes to the Display Conditions interface. Please check your settings and the <a href="https://wpadvancedads.com/manual/display-conditions/" target="_blank">manual</a>, if you are using them.',
57
+ ),
58
  // missing license codes
59
  'license_invalid' => array(
60
  'type' => 'plugin_error',
admin/views/ad-display-metabox.php CHANGED
@@ -1,80 +1,118 @@
1
  <?php
2
- // include callback file
3
- require_once(ADVADS_BASE_PATH . 'admin/includes/class-display-condition-callbacks.php');
4
- $types = Advanced_Ads::get_instance()->ad_types;
5
- $jquery_ui_buttons = array();
6
- $conditions_enabled = isset( $ad->conditions['enabled'] ) && $ad->conditions['enabled'];
7
- ?>
8
- <p class="description"><?php _e( 'Choose where to display the ad and where to hide it.', 'advanced-ads' ); ?></p>
9
- <div id="advanced-ad-conditions-enable">
10
- <input id="advads-condition-display-disabled" type="radio" name="advanced_ad[conditions][enabled]" value="0" <?php checked( ! $conditions_enabled ); ?>/><label for="advads-condition-display-disabled"><?php _e( 'Display ad everywhere', 'advanced-ads' ); ?></label>
11
- <input id="advads-condition-display-enabled" type="radio" name="advanced_ad[conditions][enabled]" value="1" <?php checked( $conditions_enabled ); ?>/><label for="advads-condition-display-enabled"><?php _e( 'Set display conditions', 'advanced-ads' ); ?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  </div>
13
- <div id="advanced-ad-conditions">
14
- <ul id="advads-how-it-works">
15
- <li><?php _e( 'If you want to display the ad everywhere, don\'t do anything here. ', 'advanced-ads' ); ?></li>
16
- <li><?php _e( 'The fewer conditions you enter, the better the performance will be.', 'advanced-ads' ); ?></li>
17
- <li><?php printf( __( 'Learn more about display conditions from the <a href="%s" target="_blank">manual</a>.', 'advanced-ads' ), ADVADS_URL . 'manual/display-conditions/#utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-display' ); ?></li>
18
- </ul>
19
- <?php
20
- // -TODO use model
21
- $advanced_ads_ad_conditions = Advanced_Ads::get_ad_conditions();
22
- if ( is_array( $advanced_ads_ad_conditions ) ) :
23
- foreach ( $advanced_ads_ad_conditions as $_key => $_condition ) :
24
- if ( ! isset($_condition['callback']) ) {
25
- continue; }
26
- ?><div class="advanced-ad-display-condition">
27
- <?php
28
- if ( is_array( $_condition['callback'] ) && method_exists( $_condition['callback'][0], $_condition['callback'][1] ) ) {
29
- call_user_func( array($_condition['callback'][0], $_condition['callback'][1]), $ad ); // works also in php below 5.3
30
- // $_condition['callback'][0]::$_condition['callback'][1]($ad); // works only in php 5.3 and above
31
- }
32
- ?></div><?php
33
- endforeach;
34
- ?><h4><?php _e( 'Other conditions', 'advanced-ads' ); ?></h4><br/>
35
- <table>
36
- <tbody><?php
37
- foreach ( $advanced_ads_ad_conditions as $_key => $_condition ) :
38
- if ( isset($_condition['callback']) || empty($_condition['label']) ) {
39
- continue; }
40
- ?><tr>
41
- <th><?php echo $_condition['label']; ?>
42
- </th>
43
- <?php if ( empty($_condition['type']) ) : continue; ?>
44
- <?php elseif ( $_condition['type'] == 'idfield' || $_condition['type'] == 'textvalues' ) : ?>
45
- <td><input type="text" name="advanced_ad[conditions][<?php echo $_key; ?>][include]" value="<?php if ( isset($ad->conditions[$_key]['include']) ) { echo $ad->conditions[$_key]['include']; } ?>"/></td>
46
- <td><input type="text" name="advanced_ad[conditions][<?php echo $_key; ?>][exclude]" value="<?php if ( isset($ad->conditions[$_key]['exclude']) ) { echo $ad->conditions[$_key]['exclude']; } ?>"/></td>
47
- <?php elseif ( $_condition['type'] == 'radio' ) : ?>
48
- <td class="advanced-ads-display-condition-set advads-buttonset">
49
- <input type="radio" name="advanced_ad[conditions][<?php
50
- echo $_key; ?>]" id="advanced-ads-display-condition-<?php
51
- echo $_key; ?>-1" value="1" <?php if ( ! isset($ad->conditions[$_key]) || $ad->conditions[$_key] ) { checked( 1 ); } ?>/>
52
- <label for="advanced-ads-display-condition-<?php echo $_key; ?>-1"><?php _ex( 'on', 'button label', 'advanced-ads' ); ?></label>
53
- <input type="radio" name="advanced_ad[conditions][<?php
54
- echo $_key; ?>]" id="advanced-ads-display-condition-<?php
55
- echo $_key; ?>-0" value="0" <?php if ( isset($ad->conditions[$_key]) ) { checked( $ad->conditions[$_key], 0 ); } ?>/>
56
- <label for="advanced-ads-display-condition-<?php echo $_key; ?>-0"><?php _ex( 'off', 'button label', 'advanced-ads' ); ?></label>
57
- </td>
58
- <td>
59
- <?php if ( ! empty($_condition['description']) ) : ?>
60
- <p class="description on-hover"><?php echo $_condition['description']; ?></p>
61
- <?php endif; ?>
62
- </td>
63
- <?php endif; ?>
64
- </tr>
65
- <?php endforeach; ?>
66
- </tbody>
67
- </table>
68
- <?php
69
- if ( WP_DEBUG ) : ?>
70
- <fieldset class="advads-debug-output advads-debug-output-conditions"><legend onclick="advads_toggle('.advads-debug-output-conditions .inner')"><?php
71
- _e( 'show debug output', 'advanced-ads' ); ?></legend><div class="inner" style="display:none;">
72
- <p class="description"><?php _e( 'Values saved for this ad in the database (post metas)', 'advanced-ads' ); ?></p><?php
73
- echo '<pre>';
74
- print_r( $ad->conditions );
75
- echo '</pre>';
76
- ?></div></fieldset>
77
- <?php endif; ?>
78
  </div>
79
- <?php
80
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ $display_conditions = Advanced_Ads_Display_Conditions::get_instance()->conditions;
3
+ $options = $ad->options('conditions');
4
+ // error_log(print_r($display_conditions, true));
5
+ // error_log(print_r($options, true));
6
+ ?><p class="description"><?php _e('Set Display Conditions to allow or hide the ad on specific pages.', 'advanced-ads'); ?> <a href="<?php echo ADVADS_URL . 'manual/display-conditions#utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-display'; ?>" target="_blank"><?php _e('Manual', 'advanced-ads'); ?></a></p>
7
+ <div id="advads-display-conditions">
8
+ <table id="advads-display-condition-table"><tbody><?php
9
+ // add general conditions by default
10
+ if( !is_array( $options ) || !count( $options )){
11
+ $options = array(
12
+ 'general' => null
13
+ );
14
+ }
15
+
16
+ $i = 0;
17
+ if (is_array($options)) :
18
+ foreach ($options as $_index => $_options) :
19
+ // get type attribute from previous option format
20
+ $type = $_options['type'] = isset($_options['type']) ? $_options['type'] : $_index;
21
+ if (isset($display_conditions[$type]['metabox'])) {
22
+ $metabox = $display_conditions[$type]['metabox'];
23
+ } else {
24
+ continue;
25
+ }
26
+ if (method_exists($metabox[0], $metabox[1])) {
27
+ ?><tr><td></td><td class="advads-conditions-type" data-condition-type="<?php echo $type; ?>"><?php echo $display_conditions[$type]['label']; ?></td><td><?php
28
+ call_user_func(array($metabox[0], $metabox[1]), $_options, $i++);
29
+ ?></td><td><button type="button" class="advads-display-conditions-remove button">x</button></td></tr><?php
30
+ }
31
+ endforeach;
32
+ endif;
33
+ ?></tbody></table>
34
+ <input type="hidden" id="advads-display-conditions-index" value="<?php echo is_array($options) ? count($options) : 0; ?>"/>
35
  </div>
36
+ <?php if (!isset($options) || count($options) == 0) :
37
+ ?><p><?php _e('If you want to display the ad everywhere, don\'t do anything here. ', 'advanced-ads'); ?></p><?php
38
+ endif;
39
+ ?><fieldset>
40
+ <legend><?php _e('New condition', 'advanced-ads'); ?></legend>
41
+ <div id="advads-display-conditions-new">
42
+ <select>
43
+ <option value=""><?php _e('-- choose a condition --', 'advanced-ads'); ?></option>
44
+ <?php foreach ($display_conditions as $_condition_id => $_condition) : ?>
45
+ <option value="<?php echo $_condition_id; ?>"><?php echo $_condition['label']; ?></option>
46
+ <?php endforeach; ?>
47
+ </select>
48
+ <button type="button" class="button"><?php _e('add', 'advanced-ads'); ?></button>
49
+ <span class="advads-loader" style="display: none;"></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  </div>
51
+ </fieldset>
52
+ <script>
53
+ jQuery(document).ready(function ($) {
54
+ $('#advads-display-conditions-new button').click(function () {
55
+ var display_condition_type = $('#advads-display-conditions-new select').val();
56
+ var display_condition_title = $('#advads-display-conditions-new select option:selected').text();
57
+ var display_condition_index = parseInt($('#advads-display-conditions-index').val());
58
+ if (!display_condition_type || '' == display_condition_type ){
59
+ return;
60
+ }
61
+ $('#advads-display-conditions-new .advads-loader').show(); // show loader
62
+ $('#advads-display-conditions-new button').hide(); // hide add button
63
+ $.ajax({
64
+ type: 'POST',
65
+ url: ajaxurl,
66
+ data: {
67
+ action: 'load_display_conditions_metabox',
68
+ type: display_condition_type,
69
+ index: display_condition_index
70
+ },
71
+ success: function (r, textStatus, XMLHttpRequest) {
72
+ // add
73
+ if (r) {
74
+ var newline = '<tr><td></td><td class="advads-conditions-type" data-condition-type="'+ display_condition_type +'">' + display_condition_title + '</td><td>' + r + '</td><td><button type="button" class="advads-display-conditions-remove button">x</button></td></tr>';
75
+ $('#advads-display-conditions table tbody').append(newline);
76
+ $('#advads-display-conditions table tbody .advads-conditions-single.advads-buttonset').buttonset();
77
+ // increase count
78
+ display_condition_index++;
79
+ $('#advads-display-conditions-index').val(display_condition_index);
80
+ advads_prevent_duplicate_conditions(); // update condition selector
81
+ // reset select
82
+ $('#advads-display-conditions-new select')[0].selectedIndex = 0;
83
+ }
84
+ },
85
+ error: function (MLHttpRequest, textStatus, errorThrown) {
86
+ $('#advads-display-conditions-new').append(errorThrown);
87
+ },
88
+ complete: function( MLHttpRequest, textStatus ) {
89
+ $('#advads-display-conditions-new .advads-loader').hide(); // hide loader
90
+ $('#advads-display-conditions-new button').show(); // display add button
91
+ }
92
+ });
93
+ });
94
+ $(document).on('click', '.advads-display-conditions-remove', function () {
95
+ var row = $(this).parents('#advads-display-conditions table tr');
96
+ row.remove();
97
+ advads_prevent_duplicate_conditions(); // update condition selector
98
+ });
99
+ // prevent listing of display conditions that are already in use
100
+ function advads_prevent_duplicate_conditions(){
101
+ // show all options
102
+ $('#advads-display-conditions-new select option').show();
103
+ // get all selected options
104
+ $('.advads-conditions-type').each( function(){
105
+ // show each type
106
+ // console.log( this.dataset.conditionType );
107
+ this.dataset.conditionType;
108
+ // search the option with this type and hide it
109
+ $('#advads-display-conditions-new select option[value="'+ this.dataset.conditionType +'"]').hide();
110
+ })
111
+ } // activate on load
112
+ if( $('#advads-display-conditions-new').length ){
113
+ advads_prevent_duplicate_conditions();
114
+ }
115
+ });
116
+ </script>
117
+ <?php
118
+ do_action('advanced-ads-display-conditions-after', $ad);
admin/views/ad-visitor-metabox.php CHANGED
@@ -15,7 +15,7 @@ foreach ( $options as $_options ) :
15
  if ( method_exists( $metabox[0], $metabox[1] ) ) {
16
  $_connector = isset( $_options['connector'] ) ? esc_attr( $_options['connector'] ) : 'and';
17
  ?><tr><td colspan="4" class="advads-visitor-conditions-connector-<?php echo $_connector; ?>"><?php echo $_connector ?><hr/></td></tr><?php
18
- ?><tr><td></td><td><?php echo $visitor_conditions[ $_options['type'] ]['label']; ?></td><td><?php
19
  call_user_func( array( $metabox[0], $metabox[1] ), $_options, $i++ );
20
  ?></td><td><button type="button" class="advads-visitor-conditions-remove button">x</button></td></tr><?php
21
  }
@@ -44,6 +44,7 @@ endif;
44
  <?php endforeach; ?>
45
  </select>
46
  <button type="button" class="button"><?php _e( 'add', 'advanced-ads' ); ?></button>
 
47
  </div>
48
  </fieldset>
49
  <?php if ( ! defined( 'AAR_SLUG' ) ) : ?>
@@ -61,6 +62,7 @@ jQuery( document ).ready(function ($) {
61
  }
62
  var visitor_condition_index = parseInt( $('#advads-visitor-conditions-index').val() );
63
  if( ! visitor_condition_type ) return;
 
64
  $.ajax({
65
  type: 'POST',
66
  url: ajaxurl,
@@ -80,10 +82,12 @@ jQuery( document ).ready(function ($) {
80
  visitor_condition_index++;
81
  $('#advads-visitor-conditions-index').val( visitor_condition_index );
82
  advads_toogle_visitor_conditions_connector();
 
83
  }
84
  },
85
  error: function (MLHttpRequest, textStatus, errorThrown) {
86
  $( '#advads-visitor-conditions-new' ).append( errorThrown );
 
87
  }
88
  });
89
  });
15
  if ( method_exists( $metabox[0], $metabox[1] ) ) {
16
  $_connector = isset( $_options['connector'] ) ? esc_attr( $_options['connector'] ) : 'and';
17
  ?><tr><td colspan="4" class="advads-visitor-conditions-connector-<?php echo $_connector; ?>"><?php echo $_connector ?><hr/></td></tr><?php
18
+ ?><tr><td></td><td class="advads-conditions-type"><?php echo $visitor_conditions[ $_options['type'] ]['label']; ?></td><td><?php
19
  call_user_func( array( $metabox[0], $metabox[1] ), $_options, $i++ );
20
  ?></td><td><button type="button" class="advads-visitor-conditions-remove button">x</button></td></tr><?php
21
  }
44
  <?php endforeach; ?>
45
  </select>
46
  <button type="button" class="button"><?php _e( 'add', 'advanced-ads' ); ?></button>
47
+ <span class="advads-loader" style="display: none;"></span>
48
  </div>
49
  </fieldset>
50
  <?php if ( ! defined( 'AAR_SLUG' ) ) : ?>
62
  }
63
  var visitor_condition_index = parseInt( $('#advads-visitor-conditions-index').val() );
64
  if( ! visitor_condition_type ) return;
65
+ $('#advads-visitor-conditions-new .advads-loader').show();
66
  $.ajax({
67
  type: 'POST',
68
  url: ajaxurl,
82
  visitor_condition_index++;
83
  $('#advads-visitor-conditions-index').val( visitor_condition_index );
84
  advads_toogle_visitor_conditions_connector();
85
+ $('#advads-visitor-conditions-new .advads-loader').hide();
86
  }
87
  },
88
  error: function (MLHttpRequest, textStatus, errorThrown) {
89
  $( '#advads-visitor-conditions-new' ).append( errorThrown );
90
+ $('#advads-visitor-conditions-new .advads-loader').hide();
91
  }
92
  });
93
  });
admin/views/notices/jqueryui_error.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <div id="advads-jqueryui-error" class="message error" style="display: none;">
2
+ <p><?php printf(__( 'There might be a problem with layouts and scripts in your dashboard. Please check <a href="%s" target="_blank">this article to learn more</a>.', 'advanced-ads' ), ADVADS_URL . 'manual/jquery-problem-in-dashboard/#utm_source=advanced-ads&utm_medium=link&utm_campaign=notice-jquery-error' ); ?></p>
3
+ </div>
admin/views/support.php CHANGED
@@ -5,17 +5,7 @@
5
  ?><div class="wrap">
6
  <?php screen_icon(); ?>
7
  <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
8
- <?php if( $mail_sent ) { ?>
9
- <div class="notice updated"><p><?php _e( 'Email was successfully sent.', 'advanced-ads' ); ?></p></div>
10
- <?php } ?>
11
- <h2><?php _e( 'Search', 'advanced-ads' ); ?></h2>
12
- <p><?php _e( 'Use the following form to search for solutions in the manual on wpadvancedads.com', 'advanced-ads' ); ?></p>
13
- <form action="https://wpadvancedads.com/" method="get">
14
- <input type="search" name="s"/>
15
- <input type="submit" value="<?php _e( 'search', 'advanced-ads' ); ?>">
16
- </form>
17
-
18
- <h2><?php _e( 'Possible Issues', 'advanced-ads' ); ?></h2>
19
  <p><?php _e( 'Please fix the red highlighted issues on this page or try to understand their consequences before contacting support.', 'advanced-ads' ); ?></p>
20
 
21
  <?php $messages = array();
@@ -56,8 +46,20 @@
56
  ?><div class="message error"><p><?php echo $_message; ?></p></div><?php
57
  endforeach;
58
  endif; ?>
59
- <h2><?php _e( 'Contact', 'advanced-ads' ); ?></h2>
 
 
 
 
 
 
60
  <p><?php printf(__( 'Please search the manual for a solution and take a look at <a href="%s" target="_blank">Ads not showing up?</a> before contacting me for help.', 'advanced-ads' ), ADVADS_URL . 'manual/ads-not-showing-up/#utm_source=advanced-ads&utm_medium=link&utm_campaign=support' ); ?></p>
 
 
 
 
 
 
61
  <form action="" method="post">
62
  <table class="form-table advads-support-form">
63
  <tbody>
@@ -80,4 +82,5 @@
80
  </tbody>
81
  </table>
82
  </form>
 
83
  </div>
5
  ?><div class="wrap">
6
  <?php screen_icon(); ?>
7
  <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
8
+ <h2>1. <?php _e( 'Possible Issues', 'advanced-ads' ); ?></h2>
 
 
 
 
 
 
 
 
 
 
9
  <p><?php _e( 'Please fix the red highlighted issues on this page or try to understand their consequences before contacting support.', 'advanced-ads' ); ?></p>
10
 
11
  <?php $messages = array();
46
  ?><div class="message error"><p><?php echo $_message; ?></p></div><?php
47
  endforeach;
48
  endif; ?>
49
+ <h2>2. <?php _e( 'Search', 'advanced-ads' ); ?></h2>
50
+ <p><?php _e( 'Use the following form to search for solutions in the manual on wpadvancedads.com', 'advanced-ads' ); ?></p>
51
+ <form action="https://wpadvancedads.com/" method="get">
52
+ <input type="search" name="s"/>
53
+ <input type="submit" value="<?php _e( 'search', 'advanced-ads' ); ?>">
54
+ </form>
55
+ <h2>3. <?php _e( 'Contact', 'advanced-ads' ); ?></h2>
56
  <p><?php printf(__( 'Please search the manual for a solution and take a look at <a href="%s" target="_blank">Ads not showing up?</a> before contacting me for help.', 'advanced-ads' ), ADVADS_URL . 'manual/ads-not-showing-up/#utm_source=advanced-ads&utm_medium=link&utm_campaign=support' ); ?></p>
57
+ <?php if( isset( $_POST['advads_support']['email'] ) && array() === $sent_errors ) : ?>
58
+ <p class="advads-success-message"><?php _e( 'Email was successfully sent.', 'advanced-ads' ); ?></p>
59
+ <?php else : ?>
60
+ <?php if( isset( $_POST['advads_support']['email'] ) && count( $sent_errors ) ) : ?>
61
+ <p class="advads-error-message"><?php echo implode( $sent_errors, '</p><p class="advads-error-message">' ); ?></p>
62
+ <?php endif; ?>
63
  <form action="" method="post">
64
  <table class="form-table advads-support-form">
65
  <tbody>
82
  </tbody>
83
  </table>
84
  </form>
85
+ <?php endif; ?>
86
  </div>
advanced-ads.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
- * Version: 1.6.17.1
16
  * Author: Thomas Maier
17
  * Author URI: http://webgilde.com
18
  * Text Domain: advanced-ads
@@ -39,7 +39,7 @@ define( 'ADVADS_BASE_DIR', dirname( ADVADS_BASE ) ); // directory of the plugin
39
  // general and global slug, e.g. to store options in WP, textdomain
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
- define( 'ADVADS_VERSION', '1.6.17.1' );
43
 
44
  /*----------------------------------------------------------------------------*
45
  * Autoloading, modules and functions
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
+ * Version: 1.7.0.1
16
  * Author: Thomas Maier
17
  * Author URI: http://webgilde.com
18
  * Text Domain: advanced-ads
39
  // general and global slug, e.g. to store options in WP, textdomain
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
+ define( 'ADVADS_VERSION', '1.7.0.1' );
43
 
44
  /*----------------------------------------------------------------------------*
45
  * Autoloading, modules and functions
classes/ad.php CHANGED
@@ -282,7 +282,12 @@ class Advanced_Ads_Ad {
282
  */
283
  public function can_display( $check_options = array() ) {
284
  $check_options = wp_parse_args( $check_options, array( 'passive_cache_busting' => false ) );
285
-
 
 
 
 
 
286
  if ( ! $check_options['passive_cache_busting'] ) {
287
  // don’t display ads that are not published or private for users not logged in
288
  if ( $this->status !== 'publish' && ! ($this->status === 'private' && ! is_user_logged_in() ) ) {
@@ -510,7 +515,7 @@ class Advanced_Ads_Ad {
510
  if ( empty($_condition['ids']) ){ // remove, if empty
511
  $_condition['include'] = array();
512
  $_condition['exclude'] = array();
513
- } else {
514
  switch ( $_condition['method'] ){
515
  case 'include' :
516
  $_condition['include'] = $_condition['ids'];
@@ -536,7 +541,6 @@ class Advanced_Ads_Ad {
536
  // dynamically apply filters for each condition used
537
  $conditions[$_key] = apply_filters( 'advanced-ads-sanitize-condition-' . $type, $_condition );
538
  }
539
-
540
  return $conditions;
541
  }
542
 
282
  */
283
  public function can_display( $check_options = array() ) {
284
  $check_options = wp_parse_args( $check_options, array( 'passive_cache_busting' => false ) );
285
+
286
+ // prevent ad to show up through wp_head, if this is not a header placement
287
+ if( doing_action( 'wp_head' ) && isset( $this->options['placement_type'] ) && 'header' !== $this->options['placement_type'] ){
288
+ return false;
289
+ }
290
+
291
  if ( ! $check_options['passive_cache_busting'] ) {
292
  // don’t display ads that are not published or private for users not logged in
293
  if ( $this->status !== 'publish' && ! ($this->status === 'private' && ! is_user_logged_in() ) ) {
515
  if ( empty($_condition['ids']) ){ // remove, if empty
516
  $_condition['include'] = array();
517
  $_condition['exclude'] = array();
518
+ } elseif( isset( $_condition['method'] ) ) {
519
  switch ( $_condition['method'] ){
520
  case 'include' :
521
  $_condition['include'] = $_condition['ids'];
541
  // dynamically apply filters for each condition used
542
  $conditions[$_key] = apply_filters( 'advanced-ads-sanitize-condition-' . $type, $_condition );
543
  }
 
544
  return $conditions;
545
  }
546
 
classes/ad_ajax_callbacks.php CHANGED
@@ -24,6 +24,7 @@ class Advanced_Ads_Ad_Ajax_Callbacks {
24
  add_action( 'wp_ajax_load_content_editor', array( $this, 'load_content_editor' ) );
25
  add_action( 'wp_ajax_load_ad_parameters_metabox', array( $this, 'load_ad_parameters_metabox' ) );
26
  add_action( 'wp_ajax_load_visitor_conditions_metabox', array( $this, 'load_visitor_condition' ) );
 
27
  add_action( 'wp_ajax_advads-terms-search', array( $this, 'search_terms' ) );
28
  add_action( 'wp_ajax_advads-close-notice', array( $this, 'close_notice' ) );
29
  add_action( 'wp_ajax_advads-subscribe-notice', array( $this, 'subscribe' ) );
@@ -94,6 +95,37 @@ class Advanced_Ads_Ad_Ajax_Callbacks {
94
 
95
  die();
96
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
 
98
  /**
99
  * search terms belonging to a specific taxonomy
24
  add_action( 'wp_ajax_load_content_editor', array( $this, 'load_content_editor' ) );
25
  add_action( 'wp_ajax_load_ad_parameters_metabox', array( $this, 'load_ad_parameters_metabox' ) );
26
  add_action( 'wp_ajax_load_visitor_conditions_metabox', array( $this, 'load_visitor_condition' ) );
27
+ add_action( 'wp_ajax_load_display_conditions_metabox', array( $this, 'load_display_condition' ) );
28
  add_action( 'wp_ajax_advads-terms-search', array( $this, 'search_terms' ) );
29
  add_action( 'wp_ajax_advads-close-notice', array( $this, 'close_notice' ) );
30
  add_action( 'wp_ajax_advads-subscribe-notice', array( $this, 'subscribe' ) );
95
 
96
  die();
97
  }
98
+ /**
99
+ * load interface for single display condition
100
+ *
101
+ * @since 1.7
102
+ */
103
+ public function load_display_condition() {
104
+
105
+ if( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads') ) ) {
106
+ return;
107
+ }
108
+
109
+ // get display condition types
110
+ $conditions = Advanced_Ads_Display_Conditions::get_instance()->conditions;
111
+ $condition = array();
112
+
113
+ $condition['type'] = isset( $_POST['type'] ) ? $_POST['type'] : '';
114
+
115
+ $index = isset( $_POST['index'] ) ? $_POST['index'] : 0;
116
+
117
+ if( isset( $conditions[$condition['type']] ) ) {
118
+ $metabox = $conditions[$condition['type']]['metabox'];
119
+ } else {
120
+ die();
121
+ }
122
+
123
+ if ( method_exists( $metabox[0], $metabox[1] ) ) {
124
+ call_user_func( array($metabox[0], $metabox[1]), $condition, $index );
125
+ }
126
+
127
+ die();
128
+ }
129
 
130
  /**
131
  * search terms belonging to a specific taxonomy
classes/ad_type_content.php CHANGED
@@ -103,6 +103,19 @@ class Advanced_Ads_Ad_Type_Content extends Advanced_Ads_Ad_Type_Abstract{
103
 
104
  $output = $ad->content;
105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  $output = wptexturize( $output );
107
  $output = convert_smilies( $output );
108
  $output = convert_chars( $output );
103
 
104
  $output = $ad->content;
105
 
106
+ if ( isset( $GLOBALS['wp_embed'] ) ) {
107
+ // temporarily replace the global $post variable with the current ad (post)
108
+ $old_post = $GLOBALS['post'];
109
+ $GLOBALS['post'] = $ad->id;
110
+
111
+ // get the [embed] shortcode to run before wpautop()
112
+ $output = $GLOBALS['wp_embed']->run_shortcode( $output );
113
+ // attempts to embed all URLs in a post
114
+ $output = $GLOBALS['wp_embed']->autoembed( $output );
115
+
116
+ $GLOBALS['post'] = $old_post;
117
+ }
118
+
119
  $output = wptexturize( $output );
120
  $output = convert_smilies( $output );
121
  $output = convert_chars( $output );
classes/display-conditions.php ADDED
@@ -0,0 +1,774 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Display Conditions under which to (not) show an ad
5
+ *
6
+ * @since 1.7
7
+ *
8
+ */
9
+ class Advanced_Ads_Display_Conditions {
10
+
11
+ /**
12
+ *
13
+ * @var Advanced_Ads_Display_Conditions
14
+ */
15
+ protected static $instance;
16
+
17
+ /**
18
+ * registered display conditions
19
+ */
20
+ public $conditions;
21
+
22
+ /**
23
+ * start of name in form elements
24
+ */
25
+ const FORM_NAME = 'advanced_ad[conditions]';
26
+
27
+ protected static $query_var_keys = array(
28
+ // 'is_single',
29
+ 'is_archive',
30
+ 'is_search',
31
+ 'is_home',
32
+ 'is_404',
33
+ 'is_attachment',
34
+ 'is_singular',
35
+ 'is_front_page',
36
+ );
37
+
38
+ public function __construct() {
39
+
40
+ // register filter
41
+ add_filter('advanced-ads-ad-select-args', array($this, 'ad_select_args_callback'));
42
+ add_filter('advanced-ads-can-display', array($this, 'can_display'), 10, 2);
43
+
44
+ // register conditions
45
+ $conditions = array(
46
+ 'posttypes' => array(// post types condition
47
+ 'label' => __('post type', 'advanced-ads'),
48
+ 'description' => __('Choose the public post types on which to display the ad.', 'advanced-ads'),
49
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_post_type'), // callback to generate the metabox
50
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_post_type'), // callback for frontend check
51
+ // 'helplink' => ADVADS_URL . 'manual/display-ads-either-on-mobile-or-desktop/#utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-visitor-mobile' // link to help section
52
+ ),
53
+ 'postids' => array(// post id condition
54
+ 'label' => __('specific pages', 'advanced-ads'),
55
+ 'description' => __('Choose on which individual posts, pages and public post type pages you want to display or hide ads.', 'advanced-ads'),
56
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_post_ids'), // callback to generate the metabox
57
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_post_ids'), // callback for frontend check
58
+ ),
59
+ 'general' => array(// general conditions
60
+ 'label' => __('general conditions', 'advanced-ads'),
61
+ // 'description' => __( 'Choose on which individual posts, pages and public post type pages you want to display or hide ads.', 'advanced-ads' ),
62
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_general'), // callback to generate the metabox
63
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_general'), // callback for frontend check
64
+ ),
65
+ 'author' => array(// author conditions
66
+ 'label' => __('author', 'advanced-ads'),
67
+ // 'description' => __( 'Choose on which individual posts, pages and public post type pages you want to display or hide ads.', 'advanced-ads' ),
68
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_author'), // callback to generate the metabox
69
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_author'), // callback for frontend check
70
+ ),
71
+ );
72
+
73
+ // register a condition for each taxonomy for posts
74
+ $taxonomies = get_taxonomies(array('public' => true, 'publicly_queryable' => true), 'objects', 'or');
75
+ foreach ($taxonomies as $_tax) :
76
+ // check if there are any terms available
77
+ $terms = get_terms($_tax->name, array('hide_empty' => false, 'number' => 1));
78
+ if (is_wp_error($terms) || !count($terms) || $_tax->name === 'advanced_ads_groups') {
79
+ continue;
80
+ }
81
+
82
+ $conditions['taxonomy_' . $_tax->name] = array(
83
+ 'label' => $_tax->label,
84
+ // 'description' => sprintf(__( 'Choose terms from the %s taxonomy a post must belong to for showing or hiding ads.', 'advanced-ads' ), $_tax->label ),
85
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_taxonomy_terms'), // callback to generate the metabox
86
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_taxonomies'), // callback for frontend check
87
+ 'taxonomy' => $_tax->name, // unique for this type: the taxonomy name
88
+ );
89
+
90
+ $conditions['archive_' . $_tax->name] = array(
91
+ 'label' => sprintf(__('archive: %s', 'advanced-ads'), $_tax->labels->singular_name),
92
+ // 'description' => sprintf(__( 'Choose on which %s archive page ads are hidden or displayeds.', 'advanced-ads' ), $_tax->label ),
93
+ 'metabox' => array('Advanced_Ads_Display_Conditions', 'metabox_taxonomy_terms'), // callback to generate the metabox
94
+ 'check' => array('Advanced_Ads_Display_Conditions', 'check_taxonomy_archive'), // callback for frontend check
95
+ 'taxonomy' => $_tax->name, // unique for this type: the taxonomy name
96
+ );
97
+ endforeach;
98
+
99
+ $this->conditions = apply_filters('advanced-ads-display-conditions', $conditions);
100
+
101
+ ksort($this->conditions);
102
+ }
103
+
104
+ /**
105
+ *
106
+ * @return Advanced_Ads_Plugin
107
+ */
108
+ public static function get_instance() {
109
+ // If the single instance hasn't been set, set it now.
110
+ if (null === self::$instance) {
111
+ self::$instance = new self;
112
+ }
113
+
114
+ return self::$instance;
115
+ }
116
+
117
+ /**
118
+ * controls frontend checks for conditions
119
+ *
120
+ * @param arr $options options of the condition
121
+ * @param ob $ad Advanced_Ads_Ad
122
+ * @return bool false, if ad can’t be delivered
123
+ */
124
+ static function frontend_check($options = array(), $ad = false) {
125
+ $display_conditions = Advanced_Ads_Display_Conditions::get_instance()->conditions;
126
+
127
+ if (is_array($options) && isset($display_conditions[$options['type']]['check'])) {
128
+ $check = $display_conditions[$options['type']]['check'];
129
+ } else {
130
+ return true;
131
+ }
132
+
133
+ // call frontend check callback
134
+ if (method_exists($check[0], $check[1])) {
135
+ return call_user_func(array($check[0], $check[1]), $options, $ad);
136
+ }
137
+
138
+ return true;
139
+ }
140
+
141
+ /**
142
+ * callback to display the metabox for the post type condition
143
+ *
144
+ * @param arr $options options of the condition
145
+ * @param int $index index of the condition
146
+ */
147
+ static function metabox_post_type($options, $index = 0) {
148
+
149
+ if (!isset($options['type']) || '' === $options['type']) {
150
+ return;
151
+ }
152
+
153
+ $type_options = self::get_instance()->conditions;
154
+
155
+ if (!isset($type_options[$options['type']])) {
156
+ return;
157
+ }
158
+
159
+ // form name basis
160
+ $name = self::FORM_NAME . '[' . $index . ']';
161
+
162
+ // options
163
+ ?><input type="hidden" name="<?php echo $name; ?>[type]" value="<?php echo $options['type']; ?>"/><?php
164
+ // set defaults
165
+ $post_types = get_post_types(array('public' => true, 'publicly_queryable' => true), 'object', 'or');
166
+ ?><div class="advads-conditions-single advads-buttonset"><?php
167
+ foreach ($post_types as $_type_id => $_type) {
168
+ if (isset($options['value']) && is_array($options['value']) && in_array($_type_id, $options['value'])) {
169
+ $_val = 1;
170
+ } else {
171
+ $_val = 0;
172
+ }
173
+ ?><label class="button" for="advads-conditions-<?php echo $index; ?>-<?php echo $_type_id;
174
+ ?>"><?php echo $_type->label; ?></label><input type="checkbox" id="advads-conditions-<?php echo $index; ?>-<?php echo $_type_id; ?>" name="<?php echo $name; ?>[value][]" <?php checked($_val, 1); ?> value="<?php echo $_type_id; ?>"><?php
175
+ }
176
+ ?></div><?php
177
+ }
178
+
179
+ /**
180
+ * callback to display the metabox for the author condition
181
+ *
182
+ * @param arr $options options of the condition
183
+ * @param int $index index of the condition
184
+ */
185
+ static function metabox_author($options, $index = 0) {
186
+
187
+ if (!isset($options['type']) || '' === $options['type']) {
188
+ return;
189
+ }
190
+
191
+ $type_options = self::get_instance()->conditions;
192
+
193
+ if (!isset($type_options[$options['type']])) {
194
+ return;
195
+ }
196
+
197
+ // get values and select operator based on previous settings
198
+ $operator = ( isset($options['operator']) && $options['operator'] === 'is_not' ) ? 'is_not' : 'is';
199
+ $values = ( isset($options['value']) && is_array($options['value']) ) ? $options['value'] : array();
200
+
201
+ // form name basis
202
+ $name = self::FORM_NAME . '[' . $index . ']';
203
+ ?><input type="hidden" name="<?php echo $name; ?>[type]" value="<?php echo $options['type']; ?>"/>
204
+ <select name="<?php echo $name; ?>[operator]">
205
+ <option value="is" <?php selected('is', $operator); ?>><?php _e('show'); ?></option>
206
+ <option value="is_not" <?php selected('is_not', $operator); ?>><?php _e('hide'); ?></option>
207
+ </select><?php
208
+ // set defaults
209
+ $authors = get_users(array('who' => 'authors', 'orderby' => 'nicename', 'number' => 50));
210
+ ?><div class="advads-conditions-single advads-buttonset"><?php
211
+ foreach ($authors as $_author) {
212
+ if (isset($options['value']) && is_array($options['value']) && in_array($_author->ID, $options['value'])) {
213
+ $_val = 1;
214
+ } else {
215
+ $_val = 0;
216
+ }
217
+ ?><label class="button" for="advads-conditions-<?php echo $index; ?>-<?php echo $_author->ID;
218
+ ?>"><?php echo $_author->display_name; ?></label><input type="checkbox" id="advads-conditions-<?php echo $index; ?>-<?php echo $_author->ID; ?>" name="<?php echo $name; ?>[value][]" <?php checked($_val, 1); ?> value="<?php echo $_author->ID; ?>"><?php
219
+ }
220
+ ?></div><?php
221
+ }
222
+
223
+ /**
224
+ * callback to display the metabox for the taxonomy archive pages
225
+ *
226
+ * @param arr $options options of the condition
227
+ * @param int $index index of the condition
228
+ */
229
+ static function metabox_taxonomy_terms($options, $index = 0) {
230
+
231
+ if (!isset($options['type']) || '' === $options['type']) {
232
+ return;
233
+ }
234
+
235
+ $type_options = self::get_instance()->conditions;
236
+
237
+ // don’t use if this is not a taxonomy
238
+ if (!isset($type_options[$options['type']]) || !isset($type_options[$options['type']]['taxonomy'])) {
239
+ return;
240
+ }
241
+
242
+ $taxonomy = get_taxonomy($type_options[$options['type']]['taxonomy']);
243
+ if (false == $taxonomy) {
244
+ return;
245
+ }
246
+
247
+ // get values and select operator based on previous settings
248
+ $operator = ( isset($options['operator']) && $options['operator'] === 'is_not' ) ? 'is_not' : 'is';
249
+ $values = ( isset($options['value']) && is_array($options['value']) ) ? $options['value'] : array();
250
+
251
+ // limit the number of terms so many terms don’t break the admin page
252
+ $max_terms = absint(apply_filters('advanced-ads-admin-max-terms', 50));
253
+
254
+ // form name basis
255
+ $name = self::FORM_NAME . '[' . $index . ']';
256
+ ?><input type="hidden" name="<?php echo $name; ?>[type]" value="<?php echo $options['type']; ?>"/>
257
+ <select name="<?php echo $name; ?>[operator]">
258
+ <option value="is" <?php selected('is', $operator); ?>><?php _e('show'); ?></option>
259
+ <option value="is_not" <?php selected('is_not', $operator); ?>><?php _e('hide'); ?></option>
260
+ </select><?php
261
+ ?><div class="advads-conditions-single advads-buttonset"><?php
262
+ self::display_term_list($taxonomy, $values, $name . '[value][]', $max_terms, $index);
263
+ ?></div><?php
264
+ }
265
+
266
+ /**
267
+ * display terms of a taxonomy for choice
268
+ *
269
+ * @param obj $taxonomy taxonomy object
270
+ * @param arr $checked ids of checked terms
271
+ * @param str $inputname name of the input field
272
+ * @param int $max_terms maximum number of terms to show
273
+ * @param int $index index of the conditions group
274
+ */
275
+ public static function display_term_list($taxonomy, $checked = array(), $inputname = '', $max_terms = 50, $index = 0) {
276
+
277
+ $terms = get_terms($taxonomy->name, array('hide_empty' => false, 'number' => $max_terms));
278
+
279
+ if (!empty($terms) && !is_wp_error($terms)):
280
+ // display search field if the term limit is reached
281
+ if (count($terms) == $max_terms) :
282
+
283
+ // query active terms
284
+ if (is_array($checked) && count($checked)) {
285
+ $args = array('hide_empty' => false);
286
+ $args['include'] = $checked;
287
+ $checked_terms = get_terms($taxonomy->name, $args);
288
+ ?><div class="advads-conditions-terms-buttons dynamic-search"><?php
289
+ foreach ($checked_terms as $_checked_term) :
290
+ ?><label class="button ui-state-active"><?php echo $_checked_term->name;
291
+ ?><input type="hidden" name="<?php echo $inputname; ?>" value="<?php echo $_checked_term->term_id; ?>"></label><?php
292
+ endforeach;
293
+ ?></div><?php
294
+ } else {
295
+ ?><div class="advads-conditions-terms-buttons dynamic-search"></div><?php
296
+ }
297
+ ?><span class="advads-conditions-terms-show-search button" title="<?php
298
+ _ex('add more terms', 'display the terms search field on ad edit page', 'advanced-ads');
299
+ ?>">+</span><span class="description"><?php _e('add more terms', 'advanced-ads');
300
+ ?></span><br/><input type="text" class="advads-conditions-terms-search" data-tag-name="<?php echo $taxonomy->name;
301
+ ?>" data-input-name="<?php echo $inputname; ?>" placeholder="<?php _e('term name or id', 'advanced-ads'); ?>"/><?php
302
+ else :
303
+ ?><div class="advads-conditions-terms-buttons advads-buttonset"><?php
304
+ foreach ($terms as $_term) :
305
+ $field_id = "advads-conditions-$index-$_term->term_id";
306
+ ?><input type="checkbox" id="<?php echo $field_id; ?>" name="<?php echo $inputname; ?>" value="<?php echo $_term->term_id; ?>" <?php checked(in_array($_term->term_id, $checked), true); ?>><label for="<?php echo $field_id; ?>"><?php echo $_term->name; ?></label><?php
307
+ endforeach;
308
+ ?></div><?php
309
+ endif;
310
+ endif;
311
+ }
312
+
313
+ /**
314
+ * callback to display the metabox for the taxonomy archive pages
315
+ *
316
+ * @param arr $options options of the condition
317
+ * @param int $index index of the condition
318
+ */
319
+ static function metabox_post_ids($options, $index = 0) {
320
+
321
+ if (!isset($options['type']) || '' === $options['type']) {
322
+ return;
323
+ }
324
+
325
+ // get values and select operator based on previous settings
326
+ $operator = ( isset($options['operator']) && $options['operator'] === 'is_not' ) ? 'is_not' : 'is';
327
+ $values = ( isset($options['value']) && is_array($options['value']) ) ? $options['value'] : array();
328
+
329
+ // form name basis
330
+ $name = self::FORM_NAME . '[' . $index . ']';
331
+ ?><input type="hidden" name="<?php echo $name; ?>[type]" value="<?php echo $options['type']; ?>"/>
332
+ <select name="<?php echo $name; ?>[operator]">
333
+ <option value="is" <?php selected('is', $operator); ?>><?php _e('show'); ?></option>
334
+ <option value="is_not" <?php selected('is_not', $operator); ?>><?php _e('hide'); ?></option>
335
+ </select><?php ?><div class="advads-conditions-single advads-buttonset advads-conditions-postid-buttons"><?php
336
+ // query active post ids
337
+ if ($values != array()) {
338
+ $args = array(
339
+ 'post_type' => 'any',
340
+ // 'post_status' => 'publish',
341
+ 'post__in' => $values,
342
+ 'posts_per_page' => -1,
343
+ // 'ignore_sticky_posts' => 1,
344
+ );
345
+
346
+ $the_query = new WP_Query($args);
347
+ while ($the_query->have_posts()) {
348
+ $the_query->next_post();
349
+ ?><label class="button ui-state-active"><?php echo get_the_title($the_query->post->ID) . ' (' . $the_query->post->post_type . ')';
350
+ ?><input type="hidden" name="<?php echo $name; ?>[value][]" value="<?php echo $the_query->post->ID; ?>"></label><?php
351
+ }
352
+ }
353
+ ?><span class="advads-conditions-postids-show-search button" <?php
354
+ if (!count($values)) {
355
+ echo 'style="display:none;"';
356
+ }
357
+ ?>>+</span>
358
+ <p class="advads-conditions-postids-search-line">
359
+ <input type="text" id="advads-display-conditions-individual-post" <?php if (count($values)) {
360
+ echo 'style="display:none;"';
361
+ } ?>
362
+ placeholder="<?php _e('post or page title', 'advanced-ads'); ?>"
363
+ data-field-name="<?php echo $name; ?>"/><?php
364
+ wp_nonce_field('internal-linking', '_ajax_linking_nonce', false);
365
+ ?></p></div><?php
366
+ }
367
+
368
+ /**
369
+ * callback to display the metabox for the general display conditions
370
+ *
371
+ * @param arr $options options of the condition
372
+ * @param int $index index of the condition
373
+ */
374
+ static function metabox_general($options, $index = 0) {
375
+
376
+ // general conditions array
377
+ $conditions = self::get_instance()->general_conditions();
378
+ if (!isset($options['type']) || '' === $options['type']) {
379
+ return;
380
+ }
381
+
382
+ $name = self::FORM_NAME . '[' . $index . ']';
383
+ $values = isset($options['value']) ? $options['value'] : array();
384
+ ?><div class="advads-conditions-single advads-buttonset">
385
+ <input type="hidden" name="<?php echo $name; ?>[type]" value="<?php echo $options['type']; ?>"/><?php
386
+ foreach ($conditions as $_key => $_condition) :
387
+
388
+ // activate by default
389
+ $value = ( $values === array() || in_array($_key, $values) ) ? 1 : 0;
390
+
391
+ $field_id = "advads-conditions-$_key";
392
+ ?><input type="checkbox" id="<?php echo $field_id; ?>" name="<?php echo $name; ?>[value][]" value="<?php echo $_key; ?>" <?php checked(1, $value); ?>><label for="<?php echo $field_id; ?>"><?php echo $_condition['label']; ?></label><?php
393
+ endforeach;
394
+ ?></div><?php
395
+ return;
396
+ }
397
+
398
+ /**
399
+ * retrieve the array with general conditions
400
+ *
401
+ * @return arr $conditions
402
+ *
403
+ */
404
+ static function general_conditions() {
405
+ return $conditions = array(
406
+ 'is_front_page' => array(
407
+ 'label' => __('Home Page', 'advanced-ads'),
408
+ 'description' => __('show on Home page', 'advanced-ads'),
409
+ 'type' => 'radio',
410
+ ),
411
+ 'is_singular' => array(
412
+ 'label' => __('Singular Pages', 'advanced-ads'),
413
+ 'description' => __('show on singular pages/posts', 'advanced-ads'),
414
+ 'type' => 'radio',
415
+ ),
416
+ 'is_archive' => array(
417
+ 'label' => __('Archive Pages', 'advanced-ads'),
418
+ 'description' => __('show on any type of archive page (category, tag, author and date)', 'advanced-ads'),
419
+ 'type' => 'radio',
420
+ ),
421
+ 'is_search' => array(
422
+ 'label' => __('Search Results', 'advanced-ads'),
423
+ 'description' => __('show on search result pages', 'advanced-ads'),
424
+ 'type' => 'radio',
425
+ ),
426
+ 'is_404' => array(
427
+ 'label' => __('404 Page', 'advanced-ads'),
428
+ 'description' => __('show on 404 error page', 'advanced-ads'),
429
+ 'type' => 'radio',
430
+ ),
431
+ 'is_attachment' => array(
432
+ 'label' => __('Attachment Pages', 'advanced-ads'),
433
+ 'description' => __('show on attachment pages', 'advanced-ads'),
434
+ 'type' => 'radio',
435
+ ),
436
+ 'is_main_query' => array(
437
+ 'label' => __('Secondary Queries', 'advanced-ads'),
438
+ 'description' => __('allow ads in secondary queries', 'advanced-ads'),
439
+ 'type' => 'radio',
440
+ )
441
+ );
442
+ }
443
+
444
+ /**
445
+ * check post type display condition in frontend
446
+ *
447
+ * @param arr $options options of the condition
448
+ * @param obj $ad Advanced_Ads_Ad
449
+ * @return bool true if can be displayed
450
+ */
451
+ static function check_post_type($options = array(), Advanced_Ads_Ad $ad) {
452
+
453
+ if (!isset($options['value']) || !is_array($options['value'])) {
454
+ return false;
455
+ }
456
+
457
+ $ad_options = $ad->options();
458
+ $query = $ad_options['wp_the_query'];
459
+ $post = isset($ad_options['post']) ? $ad_options['post'] : null;
460
+ $post_type = isset($post['post_type']) ? $post['post_type'] : false;
461
+
462
+ if (self::in_array($post_type, $options['value']) === false) {
463
+ return false;
464
+ }
465
+
466
+ return true;
467
+ }
468
+
469
+ /**
470
+ * check author display condition in frontend
471
+ *
472
+ * @param arr $options options of the condition
473
+ * @param obj $ad Advanced_Ads_Ad
474
+ * @return bool true if can be displayed
475
+ */
476
+ static function check_author($options = array(), Advanced_Ads_Ad $ad) {
477
+
478
+ if (!isset($options['value']) || !is_array($options['value'])) {
479
+ return false;
480
+ }
481
+
482
+ if (isset($options['operator']) && $options['operator'] === 'is_not') {
483
+ $operator = 'is_not';
484
+ } else {
485
+ $operator = 'is';
486
+ }
487
+
488
+ $ad_options = $ad->options();
489
+ $post = isset($ad_options['post']) ? $ad_options['post'] : null;
490
+ $post_author = isset($post['author']) ? $post['author'] : false;
491
+
492
+ if (!self::can_display_ids($post_author, $options['value'], $operator)) {
493
+ return false;
494
+ }
495
+
496
+ return true;
497
+ }
498
+
499
+ /**
500
+ * check taxonomies display condition in frontend
501
+ *
502
+ * @param arr $options options of the condition
503
+ * @return bool true if can be displayed
504
+ */
505
+ static function check_taxonomies($options = array(), Advanced_Ads_Ad $ad) {
506
+
507
+ if (isset($options['operator']) && $options['operator'] === 'is_not') {
508
+ $operator = 'is_not';
509
+ } else {
510
+ $operator = 'is';
511
+ }
512
+
513
+ $ad_options = $ad->options();
514
+ $query = $ad_options['wp_the_query'];
515
+ $post_id = isset($ad_options['post']['id']) ? $ad_options['post']['id'] : null;
516
+
517
+ // get terms of the current taxonomy
518
+ $type_options = self::get_instance()->conditions;
519
+ if (!isset($options['type']) || !isset($type_options[$options['type']]['taxonomy'])) {
520
+ return true;
521
+ }
522
+ $taxonomy = $type_options[$options['type']]['taxonomy'];
523
+
524
+ $terms = get_the_terms($post_id, $taxonomy);
525
+
526
+ if (!empty($terms)) {
527
+ foreach ($terms as $term) {
528
+ $term_ids[] = $term->term_id;
529
+ }
530
+ } else {
531
+ return true;
532
+ }
533
+
534
+ if (isset($query['is_singular']) && $query['is_singular'] && !self::can_display_ids($options['value'], $term_ids, $operator)
535
+ ) {
536
+ return false;
537
+ }
538
+
539
+ return true;
540
+ }
541
+
542
+ /**
543
+ * check taxonomy archive display condition in frontend
544
+ *
545
+ * @param arr $options options of the condition
546
+ * @return bool true if can be displayed
547
+ */
548
+ static function check_taxonomy_archive($options = array(), Advanced_Ads_Ad $ad) {
549
+
550
+ if (isset($options['operator']) && $options['operator'] === 'is_not') {
551
+ $operator = 'is_not';
552
+ } else {
553
+ $operator = 'is';
554
+ }
555
+
556
+ $ad_options = $ad->options();
557
+ $query = $ad_options['wp_the_query'];
558
+
559
+ if (isset($query['term_id']) && isset($query['is_archive']) && $query['is_archive'] && !self::can_display_ids($query['term_id'], $options['value'], $operator)
560
+ ) {
561
+ return false;
562
+ }
563
+
564
+ return true;
565
+ }
566
+
567
+ /**
568
+ * check post ids display condition in frontend
569
+ *
570
+ * @param arr $options options of the condition
571
+ * @return bool true if can be displayed
572
+ */
573
+ static function check_post_ids($options = array(), Advanced_Ads_Ad $ad) {
574
+
575
+ if (isset($options['operator']) && $options['operator'] === 'is_not') {
576
+ $operator = 'is_not';
577
+ } else {
578
+ $operator = 'is';
579
+ }
580
+
581
+ $ad_options = $ad->options();
582
+ $query = $ad_options['wp_the_query'];
583
+ $post_id = isset($ad_options['post']['id']) ? $ad_options['post']['id'] : null;
584
+
585
+ if (!isset($options['value']) || !is_array($options['value']) || !$post_id) {
586
+ return true;
587
+ }
588
+
589
+ return self::can_display_ids($post_id, $options['value'], $operator);
590
+ }
591
+
592
+ /**
593
+ * check general display conditions in frontend
594
+ *
595
+ * @param arr $options options of the condition
596
+ * @param obj $ad Advanced_Ads_Ad
597
+ * @return bool true if can be displayed
598
+ */
599
+ static function check_general($options = array(), Advanced_Ads_Ad $ad) {
600
+
601
+ // display by default
602
+ if (!isset($options['value']) || !is_array($options['value']) || !count($options['value'])) {
603
+ return true;
604
+ }
605
+
606
+ // get plugin options
607
+ $plugin_options = Advanced_Ads_Plugin::get_instance()->options();
608
+
609
+ // error_log(print_r($options, true));
610
+ // error_log(print_r(debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ), true));
611
+
612
+ $ad_options = $ad->options();
613
+ $query = $ad_options['wp_the_query'];
614
+
615
+ // check main query
616
+ if (isset($query['is_main_query']) && !$query['is_main_query'] && (
617
+ !in_array('is_main_query', $options['value']) || isset($plugin_options['disabled-ads']['secondary'])
618
+ )) {
619
+ return false;
620
+ }
621
+
622
+ // check for home page
623
+ if (isset($query['is_front_page']) && $query['is_front_page'] && (
624
+ !in_array('is_front_page', $options['value'])
625
+ )) {
626
+ return false;
627
+ }
628
+
629
+ // check common tests
630
+ foreach (self::$query_var_keys as $_type) {
631
+ if ('is_main_query' !== $_type && isset($query[$_type]) && $query[$_type] &&
632
+ in_array($_type, $options['value'])) {
633
+ return true;
634
+ }
635
+ }
636
+
637
+ return false;
638
+ }
639
+
640
+ /**
641
+ * helper function to check for in array values
642
+ *
643
+ * @param mixed $id scalar (key) or array of keys as needle
644
+ * @param array $ids haystack
645
+ *
646
+ * @return boolean void if either argument is empty
647
+ */
648
+ static function in_array($id, $ids) {
649
+ // empty?
650
+ if (!isset($id) || $id === array()) {
651
+ return;
652
+ }
653
+
654
+ // invalid?
655
+ if (!is_array($ids)) {
656
+ return;
657
+ }
658
+
659
+ return is_array($id) ? array_intersect($id, $ids) !== array() : in_array($id, $ids);
660
+ }
661
+
662
+ /**
663
+ * helper to compare ids
664
+ *
665
+ * @param arr $needle ids that should be searched for in haystack
666
+ * @param arr $haystack reference ids
667
+ * @param str $operator whether it should be included or not
668
+ * @return boolean
669
+ */
670
+ static function can_display_ids($needle, $haystack, $operator = 'is') {
671
+
672
+ if ('is' === $operator && self::in_array($needle, $haystack) === false) {
673
+ return false;
674
+ }
675
+
676
+ if ('is_not' === $operator && self::in_array($needle, $haystack) === true) {
677
+ return false;
678
+ }
679
+
680
+ return true;
681
+ }
682
+
683
+ /**
684
+ * check display conditions
685
+ *
686
+ * @since 1.1.0 moved here from can_display()
687
+ * @since 1.7.0 moved here from display-by-query module
688
+ * @return bool $can_display true if can be displayed in frontend
689
+ */
690
+ public function can_display($can_display, $ad) {
691
+ if (!$can_display) {
692
+ return false;
693
+ }
694
+
695
+ $options = $ad->options();
696
+ if (
697
+ // test if anything is to be limited at all
698
+ !isset($options['conditions']) || !is_array($options['conditions'])
699
+ // query arguments required
700
+ || !isset($options['wp_the_query'])
701
+ ) {
702
+ return true;
703
+ }
704
+ $conditions = $options['conditions'];
705
+ $query = $options['wp_the_query'];
706
+ $post = isset($options['post']) ? $options['post'] : null;
707
+
708
+ foreach ($conditions as $_condition) {
709
+ $result = self::frontend_check($_condition, $ad);
710
+ if (!$result) {
711
+ return false;
712
+ }
713
+ }
714
+
715
+ return true;
716
+ }
717
+
718
+ /**
719
+ * On demand provide current query arguments to ads.
720
+ *
721
+ * Existing arguments must not be overridden.
722
+ * Some arguments might be cachable.
723
+ *
724
+ * @param array $args
725
+ *
726
+ * @return array
727
+ */
728
+ public function ad_select_args_callback($args) {
729
+ global $post, $wp_the_query, $wp_query;
730
+
731
+ if (isset($post)) {
732
+ if (!isset($args['post'])) {
733
+ $args['post'] = array();
734
+ }
735
+ if (!isset($args['post']['id'])) {
736
+ $args['post']['id'] = $post->ID;
737
+ }
738
+ if (!isset($args['post']['author'])) {
739
+ $args['post']['author'] = $post->post_author;
740
+ }
741
+ if (!isset($args['post']['post_type'])) {
742
+ $args['post']['post_type'] = $post->post_type;
743
+ }
744
+ }
745
+
746
+ // pass query arguments
747
+ if (isset($wp_the_query)) {
748
+ if (!isset($args['wp_the_query'])) {
749
+ $args['wp_the_query'] = array();
750
+ }
751
+ $query = $wp_the_query->get_queried_object();
752
+ // term_id exists only for taxonomy archive pages
753
+ if (!isset($args['wp_the_query']['term_id']) && $query) {
754
+ $args['wp_the_query']['term_id'] = isset($query->term_id) ? $query->term_id : '';
755
+ }
756
+
757
+ // query type/ context
758
+ if (!isset($args['wp_the_query']['is_main_query'])) {
759
+ $args['wp_the_query']['is_main_query'] = $wp_query->is_main_query();
760
+ }
761
+
762
+ // query vars
763
+ foreach (self::$query_var_keys as $key) {
764
+ if (!isset($args['wp_the_query'][$key])) {
765
+ $args['wp_the_query'][$key] = $wp_the_query->$key();
766
+ }
767
+ }
768
+ }
769
+
770
+ return $args;
771
+ }
772
+
773
+ }
774
+
classes/plugin.php CHANGED
@@ -79,6 +79,15 @@ class Advanced_Ads_Plugin {
79
  public function wp_plugins_loaded() {
80
  // Load plugin text domain
81
  $this->load_plugin_textdomain();
 
 
 
 
 
 
 
 
 
82
 
83
  // activate plugin when new blog is added on multisites // -TODO this is admin-only
84
  add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
@@ -96,6 +105,9 @@ class Advanced_Ads_Plugin {
96
  add_action( 'admin_menu', array( $this, 'remove_taxonomy_menu_item' ) );
97
  // load widgets
98
  add_action( 'widgets_init', array( $this, 'widget_init' ) );
 
 
 
99
  }
100
 
101
  /**
79
  public function wp_plugins_loaded() {
80
  // Load plugin text domain
81
  $this->load_plugin_textdomain();
82
+
83
+ $internal_options = $this->internal_options();
84
+
85
+ /**
86
+ * run upgrades, if this is a new version
87
+ */
88
+ if ( !defined( 'DOING_AJAX' ) && isset( $internal_options['version'] ) && version_compare( $internal_options['version'], ADVADS_VERSION, '<' ) ) {
89
+ new Advanced_Ads_Upgrades();
90
+ }
91
 
92
  // activate plugin when new blog is added on multisites // -TODO this is admin-only
93
  add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
105
  add_action( 'admin_menu', array( $this, 'remove_taxonomy_menu_item' ) );
106
  // load widgets
107
  add_action( 'widgets_init', array( $this, 'widget_init' ) );
108
+
109
+ // load display conditions
110
+ new Advanced_Ads_Display_Conditions();
111
  }
112
 
113
  /**
classes/upgrades.php ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Upgrade logic from older data to new one
5
+ *
6
+ * the version number itself is changed in /admin/includes/class-notices.php::register_version_notices()
7
+ *
8
+ * @since 1.7
9
+ */
10
+ class Advanced_Ads_Upgrades {
11
+
12
+ public function __construct(){
13
+
14
+ $internal_options = Advanced_Ads_Plugin::get_instance()->internal_options();
15
+
16
+ // don’t upgrade if no previous version existed
17
+ if( empty( $internal_options['version'] ) ) {
18
+ return;
19
+ }
20
+
21
+ if ( version_compare( $internal_options['version'], '1.7' ) == -1 ) {
22
+ $this->upgrade_1_7();
23
+ }
24
+
25
+ // update version notices – if this doesn’t happen here, the upgrade might run multiple times and destroy updated data
26
+ Advanced_Ads_Admin_Notices::get_instance()->register_version_notices();
27
+ }
28
+
29
+ /**
30
+ * upgrade data to version 1.7
31
+ * rewrite existing display conditions
32
+ */
33
+ public function upgrade_1_7(){
34
+
35
+ // get all ads, regardless of the publish status
36
+ $args['post_status'] = 'any';
37
+ $args['suppress_filters'] = true; // needed to remove issue with a broken plugin from the repository
38
+ $ads = Advanced_Ads::get_instance()->get_model()->get_ads( $args );
39
+
40
+ // iterate through ads
41
+ // error_log(print_r($ads, true));
42
+ error_log(print_r('–– STARTING ADVANCED ADS data upgrade to version 1.7 ––', true));
43
+ foreach( $ads as $_ad ){
44
+ // ad options
45
+ $option_key = Advanced_Ads_Ad::$options_meta_field;
46
+ if( !isset( $_ad->ID ) || ! $option_key ){
47
+ continue;
48
+ }
49
+ $options = get_post_meta( $_ad->ID, $option_key, true );
50
+ // rewrite display conditions
51
+ if( ! isset( $options['conditions'] ) ){
52
+ continue;
53
+ }
54
+
55
+ error_log(print_r('AD ID: ' . $_ad->ID, true));
56
+ error_log(print_r('OLD CONDITIONS', true));
57
+ error_log(print_r($options['conditions'], true));
58
+
59
+ $old_conditions = $options['conditions'];
60
+
61
+ // check if conditions are disabled
62
+ if( ! isset( $old_conditions['enabled'] ) || ! $old_conditions['enabled'] ){
63
+ $new_conditions = '';
64
+ } else {
65
+ $new_conditions = array();
66
+
67
+ // rewrite general conditions
68
+ $old_general_conditions = array(
69
+ 'is_front_page',
70
+ 'is_singular',
71
+ 'is_archive',
72
+ 'is_search',
73
+ 'is_404',
74
+ 'is_attachment',
75
+ 'is_main_query'
76
+ );
77
+ $general = array();
78
+ foreach( $old_general_conditions as $_general_condition ){
79
+ if( isset( $old_conditions[ $_general_condition ] ) && $old_conditions[ $_general_condition ] ) {
80
+ $general[] = $_general_condition;
81
+ }
82
+ }
83
+ // move general conditions into display conditions
84
+ // only, if the number of conditions in the previous setting is lower, because only that means there is an active limitation
85
+ // not sure if allowing an empty array is logical, but some users might have set this up to hide an ad
86
+ if( count( $general ) < count( $old_general_conditions ) ){
87
+ $new_conditions[] = array(
88
+ 'type' => 'general',
89
+ 'value' => $general
90
+ );
91
+ }
92
+
93
+ // rewrite post types condition
94
+ if( isset( $old_conditions[ 'posttypes' ]['include'] )
95
+ && ( !isset ( $old_conditions[ 'posttypes' ]['all'] )
96
+ || ! $old_conditions[ 'posttypes' ]['all'] ) ) {
97
+ if ( is_string( $old_conditions[ 'posttypes' ]['include']) ) {
98
+ $old_conditions[ 'posttypes' ]['include'] = explode( ',', $old_conditions[ 'posttypes' ]['include'] );
99
+ }
100
+ $new_conditions[] = array(
101
+ 'type' => 'posttypes',
102
+ 'value' => $old_conditions[ 'posttypes' ]['include']
103
+ );
104
+ }
105
+
106
+ /**
107
+ * rewrite category ids and category archive ids
108
+ *
109
+ * the problem is that before there was no connection between term ids and taxonomy, now, each taxonomy has its own condition
110
+ */
111
+ // check, if there are even such options set
112
+ if( ( isset( $old_conditions[ 'categoryids' ] )
113
+ && ( !isset ( $old_conditions[ 'categoryids' ]['all'] )
114
+ || ! $old_conditions[ 'categoryids' ]['all'] ) )
115
+ || ( isset( $old_conditions[ 'categoryarchiveids' ] )
116
+ && ( !isset ( $old_conditions[ 'categoryarchiveids' ]['all'] )
117
+ || ! $old_conditions[ 'categoryarchiveids' ]['all'] ) ))
118
+ {
119
+
120
+ // get all taxonomies
121
+ $taxonomies = get_taxonomies( array('public' => true, 'publicly_queryable' => true), 'objects', 'or' );
122
+ $taxonomy_terms = array();
123
+ foreach ( $taxonomies as $_tax ) {
124
+ if( $_tax->name === 'advanced_ads_groups' ){
125
+ continue;
126
+ }
127
+ // get all terms
128
+ $terms = get_terms( $_tax->name, array('hide_empty' => false, 'number' => 0, 'fields' => 'ids' ) );
129
+ if ( is_wp_error( $terms ) || ! count( $terms ) ){
130
+ continue;
131
+ } else {
132
+ $taxonomy_terms[ $_tax->name ] = $terms;
133
+ }
134
+
135
+ // get terms that are in all terms and in active terms
136
+ if( isset( $old_conditions[ 'categoryids' ] )
137
+ && ( !isset ( $old_conditions[ 'categoryids' ]['all'] )
138
+ || ! $old_conditions[ 'categoryids' ]['all'] ) )
139
+ {
140
+ // honor "include" option first
141
+ if( isset ( $old_conditions[ 'categoryids' ]['include'] ) && count( $old_conditions[ 'categoryids' ]['include'] )
142
+ && $same_values = array_intersect($terms, $old_conditions[ 'categoryids' ]['include']) ){
143
+ $new_conditions[] = array(
144
+ 'type' => 'taxonomy_' . $_tax->name ,
145
+ 'operator' => 'is',
146
+ 'value' => $same_values
147
+ );
148
+ } elseif ( isset ( $old_conditions[ 'categoryids' ]['exclude'] ) && count( $old_conditions[ 'categoryids' ]['exclude'] )
149
+ && $same_values = array_intersect($terms, $old_conditions[ 'categoryids' ]['exclude']) ){
150
+ $new_conditions[] = array(
151
+ 'type' => 'taxonomy_' . $_tax->name ,
152
+ 'operator' => 'is_not',
153
+ 'value' => $same_values
154
+ );
155
+ }
156
+ }
157
+
158
+ // get terms that are in all terms and in active terms
159
+ if( isset( $old_conditions[ 'categoryarchiveids' ] )
160
+ && ( !isset ( $old_conditions[ 'categoryarchiveids' ]['all'] )
161
+ || ! $old_conditions[ 'categoryarchiveids' ]['all'] ) )
162
+ {
163
+ // honor "include" option first
164
+ if( isset ( $old_conditions[ 'categoryarchiveids' ]['include'] ) && count( $old_conditions[ 'categoryarchiveids' ]['include'] )
165
+ && $same_values = array_intersect($terms, $old_conditions[ 'categoryarchiveids' ]['include']) ){
166
+ $new_conditions[] = array(
167
+ 'type' => 'archive_' . $_tax->name ,
168
+ 'operator' => 'is',
169
+ 'value' => $same_values
170
+ );
171
+ } elseif ( isset ( $old_conditions[ 'categoryarchiveids' ]['exclude'] ) && count( $old_conditions[ 'categoryarchiveids' ]['exclude'] )
172
+ && $same_values = array_intersect($terms, $old_conditions[ 'categoryarchiveids' ]['exclude']) ){
173
+ $new_conditions[] = array(
174
+ 'type' => 'archive_' . $_tax->name ,
175
+ 'operator' => 'is_not',
176
+ 'value' => $same_values
177
+ );
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ // rewrite single post ids
184
+ if( isset ( $old_conditions[ 'postids' ]['ids'] )
185
+ && isset ( $old_conditions[ 'postids' ]['method'] )
186
+ && $old_conditions[ 'postids' ]['method']
187
+ && ( !isset ( $old_conditions[ 'postids' ]['all'] )
188
+ || ! $old_conditions[ 'postids' ]['all'] ) ) {
189
+ $operator = ( $old_conditions[ 'postids' ]['method'] === 'exclude' ) ? 'is_not' : 'is';
190
+ if ( is_string( $old_conditions[ 'postids' ]['ids']) ) {
191
+ $old_conditions[ 'postids' ]['ids'] = explode( ',', $old_conditions[ 'postids' ]['ids'] );
192
+ }
193
+ $new_conditions[] = array(
194
+ 'type' => 'postids',
195
+ 'operator' => $operator,
196
+ 'value' => $old_conditions[ 'postids' ]['ids']
197
+ );
198
+ }
199
+ }
200
+
201
+ error_log(print_r('NEW CONDITIONS', true));
202
+ error_log(print_r($new_conditions, true));
203
+
204
+ $options['conditions'] = $new_conditions;
205
+
206
+ // save conditions
207
+ update_post_meta( $_ad->ID, $option_key, $options );
208
+ }
209
+
210
+ error_log(print_r('up to 1.7', true));
211
+ }
212
+
213
+ }
composer.lock CHANGED
@@ -5,21 +5,25 @@
5
  "This file is @generated automatically"
6
  ],
7
  "hash": "a5682b6980988f749640ce92382a6247",
 
8
  "packages": [
9
  {
10
  "name": "composer/installers",
11
- "version": "v1.0.21",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/composer/installers.git",
15
- "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45"
16
  },
17
  "dist": {
18
  "type": "zip",
19
- "url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
20
- "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
21
  "shasum": ""
22
  },
 
 
 
23
  "replace": {
24
  "roundcube/plugin-installer": "*",
25
  "shama/baton": "*"
@@ -28,9 +32,9 @@
28
  "composer/composer": "1.0.*@dev",
29
  "phpunit/phpunit": "4.1.*"
30
  },
31
- "type": "composer-installer",
32
  "extra": {
33
- "class": "Composer\\Installers\\Installer",
34
  "branch-alias": {
35
  "dev-master": "1.0-dev"
36
  }
@@ -99,7 +103,7 @@
99
  "zend",
100
  "zikula"
101
  ],
102
- "time": "2015-02-18 17:17:01"
103
  },
104
  {
105
  "name": "xrstf/composer-php52",
5
  "This file is @generated automatically"
6
  ],
7
  "hash": "a5682b6980988f749640ce92382a6247",
8
+ "content-hash": "ad3eee4861f3aff012912967c0a17906",
9
  "packages": [
10
  {
11
  "name": "composer/installers",
12
+ "version": "v1.0.23",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/composer/installers.git",
16
+ "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e"
17
  },
18
  "dist": {
19
  "type": "zip",
20
+ "url": "https://api.github.com/repos/composer/installers/zipball/6213d900e92647831f7a406d5c530ea1f3d4360e",
21
+ "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e",
22
  "shasum": ""
23
  },
24
+ "require": {
25
+ "composer-plugin-api": "^1.0"
26
+ },
27
  "replace": {
28
  "roundcube/plugin-installer": "*",
29
  "shama/baton": "*"
32
  "composer/composer": "1.0.*@dev",
33
  "phpunit/phpunit": "4.1.*"
34
  },
35
+ "type": "composer-plugin",
36
  "extra": {
37
+ "class": "Composer\\Installers\\Plugin",
38
  "branch-alias": {
39
  "dev-master": "1.0-dev"
40
  }
103
  "zend",
104
  "zikula"
105
  ],
106
+ "time": "2016-01-27 12:54:22"
107
  },
108
  {
109
  "name": "xrstf/composer-php52",
includes/array_ad_conditions.php CHANGED
@@ -18,6 +18,7 @@
18
  *
19
  * note: ’idfield’ always has a {field}_not version that is created automatically and being its own condition
20
  *
 
21
  */
22
 
23
  // avoid direct execution
18
  *
19
  * note: ’idfield’ always has a {field}_not version that is created automatically and being its own condition
20
  *
21
+ * @deprecated since 1.7
22
  */
23
 
24
  // avoid direct execution
languages/advanced-ads-de_DE.po CHANGED
@@ -1119,7 +1119,7 @@ msgstr ""
1119
  "target=\"_blank\">Anleitung</a> (engl.)."
1120
 
1121
  #: ../admin/views/ad-display-metabox.php:34
1122
- msgid "Other conditions"
1123
  msgstr "Andere Bedingungen"
1124
 
1125
  #: ../admin/views/ad-display-metabox.php:52
1119
  "target=\"_blank\">Anleitung</a> (engl.)."
1120
 
1121
  #: ../admin/views/ad-display-metabox.php:34
1122
+ msgid "general conditions"
1123
  msgstr "Andere Bedingungen"
1124
 
1125
  #: ../admin/views/ad-display-metabox.php:52
languages/advanced-ads-it_IT.po CHANGED
@@ -1967,7 +1967,7 @@ msgid ""
1967
  msgstr "Leggi <a href=\"%s\" target=\"_blank\">qui</a>."
1968
 
1969
  #: ../admin/views/ad-display-metabox.php:34
1970
- msgid "Other conditions"
1971
  msgstr "Altre condizioni"
1972
 
1973
  #: ../admin/views/ad-display-metabox.php:71
1967
  msgstr "Leggi <a href=\"%s\" target=\"_blank\">qui</a>."
1968
 
1969
  #: ../admin/views/ad-display-metabox.php:34
1970
+ msgid "general conditions"
1971
  msgstr "Altre condizioni"
1972
 
1973
  #: ../admin/views/ad-display-metabox.php:71
languages/advanced-ads-nl_NL.po CHANGED
@@ -1171,7 +1171,7 @@ msgstr ""
1171
  "komen over vertoningsvoorwaarden."
1172
 
1173
  #: ../admin/views/ad-display-metabox.php:34
1174
- msgid "Other conditions"
1175
  msgstr "Andere voorwaarden"
1176
 
1177
  #: ../admin/views/ad-display-metabox.php:52
1171
  "komen over vertoningsvoorwaarden."
1172
 
1173
  #: ../admin/views/ad-display-metabox.php:34
1174
+ msgid "general conditions"
1175
  msgstr "Andere voorwaarden"
1176
 
1177
  #: ../admin/views/ad-display-metabox.php:52
languages/advanced-ads-pt_BR.po CHANGED
@@ -1591,7 +1591,7 @@ msgstr "Defina as condições de exibição"
1591
 
1592
  #: ../admin/views/ad-display-metabox.php:34
1593
  #, fuzzy
1594
- msgid "Other conditions"
1595
  msgstr "Outras condições"
1596
 
1597
  #: ../admin/views/ad-display-metabox.php:71
1591
 
1592
  #: ../admin/views/ad-display-metabox.php:34
1593
  #, fuzzy
1594
+ msgid "general conditions"
1595
  msgstr "Outras condições"
1596
 
1597
  #: ../admin/views/ad-display-metabox.php:71
languages/advanced-ads.mo CHANGED
Binary file
languages/advanced-ads.po CHANGED
@@ -3,7 +3,7 @@ msgstr ""
3
  "Project-Id-Version: Advanved Ads\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
5
  "POT-Creation-Date: 2015-01-28 20:07+0100\n"
6
- "PO-Revision-Date: Wed Dec 16 2015 17:36:31 GMT+0100 (CET)\n"
7
  "Last-Translator: admin <post@webzunft.de>\n"
8
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
9
  "Language: Unknown locale\n"
@@ -42,243 +42,243 @@ msgstr ""
42
  msgid "http://webgilde.com"
43
  msgstr ""
44
 
45
- #: ../admin/class-advanced-ads-admin.php:255
46
  msgid "Overview"
47
  msgstr ""
48
 
49
- #: ../admin/class-advanced-ads-admin.php:259 ../admin/class-advanced-ads-admin.
50
- #: php:259 ../admin/includes/class-shortcode-creator.php:77 ../admin/views/ad-
51
  #: group-list-form-row.php:28 ../admin/views/ad-group-list-header.php:5 ..
52
  #: /admin/views/placements.php:80 ../admin/views/placements.php:184 ..
53
  #: /classes/widget.php:89 ../public/class-advanced-ads.php:563
54
  msgid "Ads"
55
  msgstr ""
56
 
57
- #: ../admin/class-advanced-ads-admin.php:263 ../admin/includes/class-shortcode-
58
  #: creator.php:84 ../admin/views/placements.php:73 ../admin/views/placements.php:
59
  #: 177 ../classes/widget.php:82
60
  msgid "Ad Groups"
61
  msgstr ""
62
 
63
- #: ../admin/class-advanced-ads-admin.php:263 ../public/class-advanced-ads.php:536
64
  msgid "Groups"
65
  msgstr ""
66
 
67
- #: ../admin/class-advanced-ads-admin.php:268 ../admin/views/debug.php:14
68
  msgid "Ad Placements"
69
  msgstr ""
70
 
71
- #: ../admin/class-advanced-ads-admin.php:268 ../admin/includes/class-shortcode-
72
  #: creator.php:91 ../admin/views/placements.php:18 ../classes/widget.php:75
73
  msgid "Placements"
74
  msgstr ""
75
 
76
- #: ../admin/class-advanced-ads-admin.php:272
77
  msgid "Advanced Ads Settings"
78
  msgstr ""
79
 
80
- #: ../admin/class-advanced-ads-admin.php:272 ../admin/class-advanced-ads-admin.
81
- #: php:499 ../admin/views/debug.php:11
82
  msgid "Settings"
83
  msgstr ""
84
 
85
- #: ../admin/class-advanced-ads-admin.php:275
86
  msgid "Advanced Ads Debugging"
87
  msgstr ""
88
 
89
- #: ../admin/class-advanced-ads-admin.php:275
90
  msgid "Debug"
91
  msgstr ""
92
 
93
- #: ../admin/class-advanced-ads-admin.php:279 ../admin/class-advanced-ads-admin.
94
- #: php:279
95
  msgid "Advanced Ads Intro"
96
  msgstr ""
97
 
98
- #: ../admin/class-advanced-ads-admin.php:283 ../admin/class-advanced-ads-admin.
99
- #: php:283
100
  msgid "Support"
101
  msgstr ""
102
 
103
- #: ../admin/class-advanced-ads-admin.php:413 ../admin/class-advanced-ads-admin.
104
- #: php:440
105
  msgid "Sorry, you are not allowed to access this feature."
106
  msgstr ""
107
 
108
- #: ../admin/class-advanced-ads-admin.php:426
109
  msgid ""
110
  "You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was "
111
  "deleted?"
112
  msgstr ""
113
 
114
- #: ../admin/class-advanced-ads-admin.php:541
115
  msgid "Ad Type"
116
  msgstr ""
117
 
118
- #: ../admin/class-advanced-ads-admin.php:544
119
  msgid "Ad Parameters"
120
  msgstr ""
121
 
122
- #: ../admin/class-advanced-ads-admin.php:547
123
  msgid "Layout / Output"
124
  msgstr ""
125
 
126
- #: ../admin/class-advanced-ads-admin.php:553
127
  msgid "Visitor Conditions"
128
  msgstr ""
129
 
130
- #: ../admin/class-advanced-ads-admin.php:764 ../admin/class-advanced-ads-admin.
131
- #: php:765
132
  msgid "Ad updated."
133
  msgstr ""
134
 
135
  #. translators: %s: date and time of the revision
136
- #: ../admin/class-advanced-ads-admin.php:767
137
  #, php-format
138
  msgid "Ad restored to revision from %s"
139
  msgstr ""
140
 
141
- #: ../admin/class-advanced-ads-admin.php:768
142
  msgid "Ad published."
143
  msgstr ""
144
 
145
- #: ../admin/class-advanced-ads-admin.php:769
146
  msgid "Ad saved."
147
  msgstr ""
148
 
149
- #: ../admin/class-advanced-ads-admin.php:770
150
  msgid "Ad submitted."
151
  msgstr ""
152
 
153
- #: ../admin/class-advanced-ads-admin.php:772
154
  #, php-format
155
  msgid "Ad scheduled for: <strong>%1$s</strong>."
156
  msgstr ""
157
 
158
  #. translators: Publish box date format, see http://php.net/date
159
- #: ../admin/class-advanced-ads-admin.php:774
160
  msgid "M j, Y @ G:i"
161
  msgstr ""
162
 
163
- #: ../admin/class-advanced-ads-admin.php:776
164
  msgid "Ad draft updated."
165
  msgstr ""
166
 
167
- #: ../admin/class-advanced-ads-admin.php:795
168
  #, php-format
169
  msgid "%s ad updated."
170
  msgid_plural "%s ads updated."
171
  msgstr[0] ""
172
  msgstr[1] ""
173
 
174
- #: ../admin/class-advanced-ads-admin.php:796
175
  #, php-format
176
  msgid "%s ad not updated, somebody is editing it."
177
  msgid_plural "%s ads not updated, somebody is editing them."
178
  msgstr[0] ""
179
  msgstr[1] ""
180
 
181
- #: ../admin/class-advanced-ads-admin.php:797
182
  #, php-format
183
  msgid "%s ad permanently deleted."
184
  msgid_plural "%s ads permanently deleted."
185
  msgstr[0] ""
186
  msgstr[1] ""
187
 
188
- #: ../admin/class-advanced-ads-admin.php:798
189
  #, php-format
190
  msgid "%s ad moved to the Trash."
191
  msgid_plural "%s ads moved to the Trash."
192
  msgstr[0] ""
193
  msgstr[1] ""
194
 
195
- #: ../admin/class-advanced-ads-admin.php:799
196
  #, php-format
197
  msgid "%s ad restored from the Trash."
198
  msgid_plural "%s ads restored from the Trash."
199
  msgstr[0] ""
200
  msgstr[1] ""
201
 
202
- #: ../admin/class-advanced-ads-admin.php:834 ../admin/views/settings.php:12
203
  msgid "General"
204
  msgstr ""
205
 
206
- #: ../admin/class-advanced-ads-admin.php:846 ../admin/class-advanced-ads-admin.
207
- #: php:950
208
  msgid "Licenses"
209
  msgstr ""
210
 
211
- #: ../admin/class-advanced-ads-admin.php:857
212
  msgid "Disable ads"
213
  msgstr ""
214
 
215
- #: ../admin/class-advanced-ads-admin.php:865
216
  msgid "Hide ads for logged in users"
217
  msgstr ""
218
 
219
- #: ../admin/class-advanced-ads-admin.php:873
220
  msgid "Use advanced JavaScript"
221
  msgstr ""
222
 
223
- #: ../admin/class-advanced-ads-admin.php:881
224
  msgid "Unlimited ad injection"
225
  msgstr ""
226
 
227
- #: ../admin/class-advanced-ads-admin.php:889
228
  msgid "Priority of content injection filter"
229
  msgstr ""
230
 
231
- #: ../admin/class-advanced-ads-admin.php:897
232
  msgid "Hide ads from bots"
233
  msgstr ""
234
 
235
- #: ../admin/class-advanced-ads-admin.php:905
236
  msgid "Disable notices"
237
  msgstr ""
238
 
239
- #: ../admin/class-advanced-ads-admin.php:913
240
  msgid "ID prefix"
241
  msgstr ""
242
 
243
- #: ../admin/class-advanced-ads-admin.php:921
244
  msgid "Remove Widget ID"
245
  msgstr ""
246
 
247
- #: ../admin/class-advanced-ads-admin.php:929
248
  msgid "Allow editors to manage ads"
249
  msgstr ""
250
 
251
- #: ../admin/class-advanced-ads-admin.php:1005
252
  msgid "Subscriber"
253
  msgstr ""
254
 
255
- #: ../admin/class-advanced-ads-admin.php:1006
256
  msgid "Contributor"
257
  msgstr ""
258
 
259
- #: ../admin/class-advanced-ads-admin.php:1007
260
  msgid "Author"
261
  msgstr ""
262
 
263
- #: ../admin/class-advanced-ads-admin.php:1008
264
  msgid "Editor"
265
  msgstr ""
266
 
267
- #: ../admin/class-advanced-ads-admin.php:1009
268
  msgid "Admin"
269
  msgstr ""
270
 
271
- #: ../admin/class-advanced-ads-admin.php:1017
272
  msgid "Choose the lowest role a user must have in order to not see any ads."
273
  msgstr ""
274
 
275
- #: ../admin/class-advanced-ads-admin.php:1031
276
  msgid ""
277
  "<strong>notice: </strong>the file is currently enabled by an add-on that "
278
  "needs it."
279
  msgstr ""
280
 
281
- #: ../admin/class-advanced-ads-admin.php:1034
282
  #, php-format
283
  msgid ""
284
  "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">here</a>)."
@@ -286,7 +286,7 @@ msgid ""
286
  "from this file."
287
  msgstr ""
288
 
289
- #: ../admin/class-advanced-ads-admin.php:1047
290
  msgid ""
291
  "Some plugins and themes trigger ad injection where it shouldn’t happen. "
292
  "Therefore, Advanced Ads ignores injected placements on non-singular pages "
@@ -295,19 +295,19 @@ msgid ""
295
  "on archive pages AT YOUR OWN RISK."
296
  msgstr ""
297
 
298
- #: ../admin/class-advanced-ads-admin.php:1063
299
  msgid ""
300
  "Please check your post content. A priority of 10 and below might cause "
301
  "issues (wpautop function might run twice)."
302
  msgstr ""
303
 
304
- #: ../admin/class-advanced-ads-admin.php:1065
305
  msgid ""
306
  "Play with this value in order to change the priority of the injected ads "
307
  "compared to other auto injected elements in the post content."
308
  msgstr ""
309
 
310
- #: ../admin/class-advanced-ads-admin.php:1079
311
  #, php-format
312
  msgid ""
313
  "Hide ads from crawlers, bots and empty user agents. Also prevents counting "
@@ -315,99 +315,110 @@ msgid ""
315
  "Add-On</a>."
316
  msgstr ""
317
 
318
- #: ../admin/class-advanced-ads-admin.php:1080
319
  msgid ""
320
  "Disabling this option only makes sense if your ads contain content you want "
321
  "to display to bots (like search engines) or your site is cached and bots "
322
  "could create a cached version without the ads."
323
  msgstr ""
324
 
325
- #: ../admin/class-advanced-ads-admin.php:1093
326
  msgid ""
327
  "Disable internal notices like tips, tutorials, email newsletters and update "
328
  "notices. Disabling notices is recommended if you run multiple blogs with "
329
  "Advanced Ads already."
330
  msgstr ""
331
 
332
- #: ../admin/class-advanced-ads-admin.php:1115
333
  msgid ""
334
  "Prefix of class or id attributes in the frontend. Change it if you don’t "
335
  "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
336
  "need to <strong>rewrite css rules afterwards</strong>."
337
  msgstr ""
338
 
339
- #: ../admin/class-advanced-ads-admin.php:1136
340
  msgid ""
341
  "Remove the ID attribute from widgets in order to not make them an easy "
342
  "target of ad blockers."
343
  msgstr ""
344
 
345
- #: ../admin/class-advanced-ads-admin.php:1155
346
  msgid "Allow editors to also manage and publish ads."
347
  msgstr ""
348
 
349
- #: ../admin/class-advanced-ads-admin.php:1224
 
 
 
 
 
 
 
350
  msgid "Ad Details"
351
  msgstr ""
352
 
353
- #: ../admin/class-advanced-ads-admin.php:1225
354
  msgid "Ad Planning"
355
  msgstr ""
356
 
357
- #: ../admin/class-advanced-ads-admin.php:1360
358
  msgid "Ad Settings"
359
  msgstr ""
360
 
361
- #: ../admin/class-advanced-ads-admin.php:1439 ../admin/views/overview.php:23
362
  msgid "Ads Dashboard"
363
  msgstr ""
364
 
365
- #: ../admin/class-advanced-ads-admin.php:1451
366
  msgid "From the ad optimization universe"
367
  msgstr ""
368
 
369
- #: ../admin/class-advanced-ads-admin.php:1460
370
  msgid "Advanced Ads Tutorials"
371
  msgstr ""
372
 
373
- #: ../admin/class-advanced-ads-admin.php:1471
374
  #, php-format
375
  msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
376
  msgstr ""
377
 
378
- #: ../admin/class-advanced-ads-admin.php:1482
379
  msgid "plugin manual and homepage"
380
  msgstr ""
381
 
382
- #: ../admin/class-advanced-ads-admin.php:1489
383
  msgid "Get the tutorial via email"
384
  msgstr ""
385
 
386
- #: ../admin/class-advanced-ads-admin.php:1496
387
  msgid "Get AdSense tips via email"
388
  msgstr ""
389
 
390
- #: ../admin/class-advanced-ads-admin.php:1577
391
  msgid "Error while trying to register the license. Please contact support."
392
  msgstr ""
393
 
394
- #: ../admin/class-advanced-ads-admin.php:1583
395
  msgid "Please enter and save a valid license key first."
396
  msgstr ""
397
 
398
- #: ../admin/class-advanced-ads-admin.php:1609
399
  #, php-format
400
  msgid "License is invalid. Reason: %s"
401
  msgstr ""
402
 
403
- #: ../admin/class-advanced-ads-admin.php:1627
404
  msgid "Error while trying to disable the license. Please contact support."
405
  msgstr ""
406
 
407
- #: ../admin/class-advanced-ads-admin.php:1658
408
  msgid "License couldn’t be deactivated. Please try again later or contact support."
409
  msgstr ""
410
 
 
 
 
 
411
  #: ../admin/includes/class-ad-groups-list.php:156
412
  msgid "Ad weight"
413
  msgstr ""
@@ -481,99 +492,103 @@ msgstr ""
481
  msgid "You don’t have permission to change the ad groups"
482
  msgstr ""
483
 
484
- #: ../admin/includes/class-display-condition-callbacks.php:28
485
  msgid "Display on all public <strong>post types</strong>."
486
  msgstr ""
487
 
488
- #: ../admin/includes/class-display-condition-callbacks.php:31 ..
489
- #: /includes/array_ad_conditions.php:39
490
  msgid "Choose the public post types on which to display the ad."
491
  msgstr ""
492
 
493
- #: ../admin/includes/class-display-condition-callbacks.php:86
 
494
  msgid "Display for all <strong>categories, tags and taxonomies</strong>."
495
  msgstr ""
496
 
497
- #: ../admin/includes/class-display-condition-callbacks.php:87
 
498
  msgid ""
499
  "Choose terms from public categories, tags and other taxonomies a post must "
500
  "belong to in order to have ads."
501
  msgstr ""
502
 
503
- #: ../admin/includes/class-display-condition-callbacks.php:104 ..
504
- #: /admin/includes/class-display-condition-callbacks.php:217
 
505
  msgid "Hide from here"
506
  msgstr ""
507
 
508
- #: ../admin/includes/class-display-condition-callbacks.php:104
 
509
  msgid ""
510
  "Choose the terms from public categories, tags and other taxonomies a post "
511
  "must belong to hide the ad from it."
512
  msgstr ""
513
 
514
- #: ../admin/includes/class-display-condition-callbacks.php:149
515
  msgctxt "display the terms search field on ad edit page"
516
  msgid "add more terms"
517
  msgstr ""
518
 
519
- #: ../admin/includes/class-display-condition-callbacks.php:150
520
  msgid "add more terms"
521
  msgstr ""
522
 
523
- #: ../admin/includes/class-display-condition-callbacks.php:153
524
  msgid "term name or id"
525
  msgstr ""
526
 
527
- #: ../admin/includes/class-display-condition-callbacks.php:197
528
  msgid "Display on all <strong>category archive pages</strong>."
529
  msgstr ""
530
 
531
- #: ../admin/includes/class-display-condition-callbacks.php:200
532
  msgid ""
533
  "Choose the terms from public categories, tags and other taxonomies on "
534
  "which's archive page ads can appear"
535
  msgstr ""
536
 
537
- #: ../admin/includes/class-display-condition-callbacks.php:217
538
  msgid ""
539
  "Choose the terms from public categories, tags and other taxonomies on "
540
  "which's archive pages ads are hidden."
541
  msgstr ""
542
 
543
- #: ../admin/includes/class-display-condition-callbacks.php:239
544
  msgid ""
545
  "Display on all <strong>individual posts, pages</strong> and public post type "
546
  "pages"
547
  msgstr ""
548
 
549
- #: ../admin/includes/class-display-condition-callbacks.php:242 ..
550
- #: /includes/array_ad_conditions.php:57
551
  msgid ""
552
  "Choose on which individual posts, pages and public post type pages you want "
553
  "to display or hide ads."
554
  msgstr ""
555
 
556
- #: ../admin/includes/class-display-condition-callbacks.php:259
557
  msgid "What should happen with ads on the list of individual posts below?"
558
  msgstr ""
559
 
560
- #: ../admin/includes/class-display-condition-callbacks.php:260
561
  msgid "ignore the list"
562
  msgstr ""
563
 
564
- #: ../admin/includes/class-display-condition-callbacks.php:261
565
  msgid "display the ad only there"
566
  msgstr ""
567
 
568
- #: ../admin/includes/class-display-condition-callbacks.php:262
569
  msgid "hide the ad here"
570
  msgstr ""
571
 
572
- #: ../admin/includes/class-display-condition-callbacks.php:270
573
  msgid "Update warning"
574
  msgstr ""
575
 
576
- #: ../admin/includes/class-display-condition-callbacks.php:271
577
  msgid ""
578
  "Due to some conflicts before version 1.2.6, it is from now on only possible "
579
  "to choose either individual pages to include or exclude an ad, but not both "
@@ -581,44 +596,44 @@ msgid ""
581
  "page. Please consider changing your setup for this ad."
582
  msgstr ""
583
 
584
- #: ../admin/includes/class-display-condition-callbacks.php:272
585
  msgid "Your old values are:"
586
  msgstr ""
587
 
588
- #: ../admin/includes/class-display-condition-callbacks.php:273
589
  msgid "Post IDs the ad is displayed on:"
590
  msgstr ""
591
 
592
- #: ../admin/includes/class-display-condition-callbacks.php:274
593
  msgid "Post IDs the ad is hidden from:"
594
  msgstr ""
595
 
596
- #: ../admin/includes/class-display-condition-callbacks.php:275
597
  msgid ""
598
  "Below you find the pages the ad is displayed on. If this is ok, just save "
599
  "the ad. If not, please update your settings."
600
  msgstr ""
601
 
602
- #: ../admin/includes/class-display-condition-callbacks.php:318
603
  msgid "new"
604
  msgstr ""
605
 
606
- #: ../admin/includes/class-display-condition-callbacks.php:320
607
  msgid "type the title"
608
  msgstr ""
609
 
610
- #: ../admin/includes/class-notices.php:359
611
  #, php-format
612
  msgid ""
613
  "You don’t seem to have an email address. Please use <a href=\"%s\" "
614
  "target=\"_blank\">this form</a> to sign up."
615
  msgstr ""
616
 
617
- #: ../admin/includes/class-notices.php:377
618
  msgid "How embarrassing. The email server seems to be down. Please try again later."
619
  msgstr ""
620
 
621
- #: ../admin/includes/class-notices.php:382
622
  #, php-format
623
  msgid ""
624
  "Please check your email (%s) for the confirmation message. If you didn’t "
@@ -651,224 +666,231 @@ msgid "Responsive and Mobile ads"
651
  msgstr ""
652
 
653
  #: ../admin/includes/class-overview-widgets.php:59
654
- msgid "Sticky ads"
655
  msgstr ""
656
 
657
  #: ../admin/includes/class-overview-widgets.php:61
658
- msgid "PopUps and Layers"
659
  msgstr ""
660
 
661
  #: ../admin/includes/class-overview-widgets.php:63
 
 
 
 
662
  msgid "Ad Slider"
663
  msgstr ""
664
 
665
- #: ../admin/includes/class-overview-widgets.php:81
666
  msgid "Get 2 <strong>free add-ons</strong> for joining the newsletter."
667
  msgstr ""
668
 
669
- #: ../admin/includes/class-overview-widgets.php:82
670
  msgid "Join now"
671
  msgstr ""
672
 
673
- #: ../admin/includes/class-overview-widgets.php:89
674
  msgid ""
675
  "Learn more about how and <strong>how much you can earn with AdSense</strong> "
676
  "and Advanced Ads from the dedicated newsletter group."
677
  msgstr ""
678
 
679
- #: ../admin/includes/class-overview-widgets.php:90 ../admin/includes/notices.php:
680
- #: 32 ../admin/views/intro.php:73 ../admin/views/notices/inline.php:3 ..
681
  #: /admin/views/notices/subscribe.php:3
682
  msgid "Subscribe me now"
683
  msgstr ""
684
 
685
- #: ../admin/includes/class-overview-widgets.php:97
686
  msgid "Get the first steps and more tutorials to your inbox."
687
  msgstr ""
688
 
689
- #: ../admin/includes/class-overview-widgets.php:98
690
  msgid "Send it now"
691
  msgstr ""
692
 
693
- #: ../admin/includes/class-overview-widgets.php:121 ../admin/views/intro.php:78
694
  msgid "Create your first ad"
695
  msgstr ""
696
 
697
- #: ../admin/includes/class-overview-widgets.php:124
698
  msgid ""
699
  "Ad Groups contain ads and are currently used to rotate multiple ads on a "
700
  "single spot."
701
  msgstr ""
702
 
703
- #: ../admin/includes/class-overview-widgets.php:126
704
  msgid "Create your first group"
705
  msgstr ""
706
 
707
- #: ../admin/includes/class-overview-widgets.php:129
708
  msgid "Ad Placements are the best way to manage where to display ads and groups."
709
  msgstr ""
710
 
711
- #: ../admin/includes/class-overview-widgets.php:131
712
  msgid "Create your first placement"
713
  msgstr ""
714
 
715
- #: ../admin/includes/class-overview-widgets.php:136
716
  msgid "Next steps"
717
  msgstr ""
718
 
719
- #: ../admin/includes/class-overview-widgets.php:148
720
- #, php-format
721
- msgid "<a href=\"%s\" target=\"_blank\">Plugin Homepage</a>"
722
- msgstr ""
723
-
724
- #: ../admin/includes/class-overview-widgets.php:149
725
  #, php-format
726
  msgid "<a href=\"%s\" target=\"_blank\">Manual</a>"
727
  msgstr ""
728
 
729
- #: ../admin/includes/class-overview-widgets.php:150
730
  #, php-format
731
- msgid "Ask other users in the <a href=\"%s\" target=\"_blank\">wordpress.org forum</a>"
732
  msgstr ""
733
 
734
- #: ../admin/includes/class-overview-widgets.php:151
735
  #, php-format
736
  msgid "Vote for a <a href=\"%s\" target=\"_blank\">feature</a>"
737
  msgstr ""
738
 
739
- #: ../admin/includes/class-overview-widgets.php:152
740
  #, php-format
741
  msgid ""
742
  "Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a "
743
  "href=\"%s\" target=\"_blank\">wordpress.org</a>"
744
  msgstr ""
745
 
746
- #: ../admin/includes/class-overview-widgets.php:161
747
  msgid ""
748
  "Need help to set up and optimize your ads? Need custom coding on your site? "
749
  "Ask me for a quote."
750
  msgstr ""
751
 
752
- #: ../admin/includes/class-overview-widgets.php:162
753
  #, php-format
754
  msgid "Help with ads on %s"
755
  msgstr ""
756
 
757
- #: ../admin/includes/class-overview-widgets.php:163
758
  msgid "Get an offer"
759
  msgstr ""
760
 
761
- #: ../admin/includes/class-overview-widgets.php:171
762
  msgid "Ad management for advanced websites."
763
  msgstr ""
764
 
765
- #: ../admin/includes/class-overview-widgets.php:172
766
  msgid "Cache-busting"
767
  msgstr ""
768
 
769
- #: ../admin/includes/class-overview-widgets.php:173
770
  msgid "Advanced visitor conditions"
771
  msgstr ""
772
 
773
- #: ../admin/includes/class-overview-widgets.php:174
774
  msgid "Flash ads with fallback"
775
  msgstr ""
776
 
777
- #: ../admin/includes/class-overview-widgets.php:176
778
  msgid "Get Pro"
779
  msgstr ""
780
 
781
- #: ../admin/includes/class-overview-widgets.php:184
782
  msgid "Track the impressions of and clicks on your ads."
783
  msgstr ""
784
 
785
- #: ../admin/includes/class-overview-widgets.php:185
786
  msgid "2 methods to count impressions"
787
  msgstr ""
788
 
789
- #: ../admin/includes/class-overview-widgets.php:186
790
  msgid "beautiful stats for all or single ads"
791
  msgstr ""
792
 
793
- #: ../admin/includes/class-overview-widgets.php:187
794
  msgid "get stats for predefined and custom persiods"
795
  msgstr ""
796
 
797
- #: ../admin/includes/class-overview-widgets.php:188
798
  msgid "group stats by day, week or month"
799
  msgstr ""
800
 
801
- #: ../admin/includes/class-overview-widgets.php:190
802
  msgid "Get the Tracking add-on"
803
  msgstr ""
804
 
805
- #: ../admin/includes/class-overview-widgets.php:198
806
  msgid "Display ads based on the size of your visitor’s browser or device."
807
  msgstr ""
808
 
809
- #: ../admin/includes/class-overview-widgets.php:199
810
  msgid "set a range (from … to …) pixels for the browser size"
811
  msgstr ""
812
 
813
- #: ../admin/includes/class-overview-widgets.php:200
814
  msgid "set custom sizes for AdSense responsive ads"
815
  msgstr ""
816
 
817
- #: ../admin/includes/class-overview-widgets.php:201
818
  msgid "list all ads by their responsive settings"
819
  msgstr ""
820
 
821
- #: ../admin/includes/class-overview-widgets.php:203
822
  msgid "Get the Responsive add-on"
823
  msgstr ""
824
 
825
- #: ../admin/includes/class-overview-widgets.php:211 ../admin/views/ad-info-top.
 
 
 
 
 
 
 
 
826
  #: php:30
827
  msgid ""
828
  "Fix ads to the browser while users are scrolling and create best performing "
829
  "anchor ads."
830
  msgstr ""
831
 
832
- #: ../admin/includes/class-overview-widgets.php:212
833
  msgid "position ads that don’t scroll with the screen"
834
  msgstr ""
835
 
836
- #: ../admin/includes/class-overview-widgets.php:213
837
  msgid "build anchor ads not only on mobile devices"
838
  msgstr ""
839
 
840
- #: ../admin/includes/class-overview-widgets.php:215 ../admin/views/ad-info-top.
841
  #: php:32
842
  msgid "Get the Sticky add-on"
843
  msgstr ""
844
 
845
- #: ../admin/includes/class-overview-widgets.php:223 ../admin/views/ad-info-top.
846
  #: php:37
847
  msgid "Display content and ads in layers and popups on custom events."
848
  msgstr ""
849
 
850
- #: ../admin/includes/class-overview-widgets.php:224
851
  msgid "display a popup after a user interaction like scrolling"
852
  msgstr ""
853
 
854
- #: ../admin/includes/class-overview-widgets.php:225
855
  msgid "optional backgroup overlay"
856
  msgstr ""
857
 
858
- #: ../admin/includes/class-overview-widgets.php:226
859
  msgid "allow users to close the popup"
860
  msgstr ""
861
 
862
- #: ../admin/includes/class-overview-widgets.php:228 ../admin/views/ad-info-top.
863
  #: php:39
864
  msgid "Get the PopUp and Layer add-on"
865
  msgstr ""
866
 
867
- #: ../admin/includes/class-overview-widgets.php:236
868
  msgid "Create a beautiful and simple slider from your ads."
869
  msgstr ""
870
 
871
- #: ../admin/includes/class-overview-widgets.php:238
872
  msgid "Get the Slider add-on"
873
  msgstr ""
874
 
@@ -883,44 +905,44 @@ msgid ""
883
  "Steps</a>."
884
  msgstr ""
885
 
886
- #: ../admin/includes/notices.php:19
887
  msgid ""
888
  "Thank you for activating <strong>Advanced Ads</strong>. Would you like to "
889
  "receive the first steps via email?"
890
  msgstr ""
891
 
892
- #: ../admin/includes/notices.php:20
893
  msgid "Yes, send it"
894
  msgstr ""
895
 
896
- #: ../admin/includes/notices.php:25
897
  msgid ""
898
  "Thank you for using <strong>Advanced Ads</strong>. Stay informed and receive "
899
  "<strong>2 free add-ons</strong> for joining the newsletter."
900
  msgstr ""
901
 
902
- #: ../admin/includes/notices.php:26
903
  msgid "Add me now"
904
  msgstr ""
905
 
906
- #: ../admin/includes/notices.php:31
907
  msgid ""
908
  "Learn more about how and <strong>how much you can earn with AdSense</strong> "
909
  "and Advanced Ads from my dedicated newsletter."
910
  msgstr ""
911
 
912
- #: ../admin/includes/notices.php:52
913
  msgid ""
914
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
915
  "missing</strong>."
916
  msgstr ""
917
 
918
- #: ../admin/includes/notices.php:52
919
  #, php-format
920
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
921
  msgstr ""
922
 
923
- #: ../admin/includes/notices.php:57
924
  #, php-format
925
  msgid ""
926
  "One or more licenses for your <strong>Advanced Ads add-ons are expiring "
@@ -929,7 +951,7 @@ msgid ""
929
  "target=\"_blank\">the add-on page</a>."
930
  msgstr ""
931
 
932
- #: ../admin/includes/notices.php:62 ../admin/views/support.php:38
933
  #, php-format
934
  msgid ""
935
  "<strong>Advanced Ads</strong> license(s) expired. Support and updates are "
@@ -937,6 +959,18 @@ msgid ""
937
  "information."
938
  msgstr ""
939
 
 
 
 
 
 
 
 
 
 
 
 
 
940
  #: ../admin/includes/shortcode-creator-l10n.php:10
941
  msgctxt "shortcode creator"
942
  msgid "Add an ad"
@@ -952,52 +986,76 @@ msgctxt "shortcode creator"
952
  msgid "Cancel"
953
  msgstr ""
954
 
955
- #: ../admin/views/ad-display-metabox.php:8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
956
  msgid "Choose where to display the ad and where to hide it."
957
  msgstr ""
958
 
959
- #: ../admin/views/ad-display-metabox.php:10
960
  msgid "Display ad everywhere"
961
  msgstr ""
962
 
963
- #: ../admin/views/ad-display-metabox.php:11
964
  msgid "Set display conditions"
965
  msgstr ""
966
 
967
- #: ../admin/views/ad-display-metabox.php:15
968
- msgid "If you want to display the ad everywhere, don't do anything here. "
969
- msgstr ""
970
-
971
- #: ../admin/views/ad-display-metabox.php:16
972
  msgid "The fewer conditions you enter, the better the performance will be."
973
  msgstr ""
974
 
975
- #: ../admin/views/ad-display-metabox.php:17
976
  #, php-format
977
  msgid ""
978
  "Learn more about display conditions from the <a href=\"%s\" "
979
  "target=\"_blank\">manual</a>."
980
  msgstr ""
981
 
982
- #: ../admin/views/ad-display-metabox.php:34
983
- msgid "Other conditions"
984
  msgstr ""
985
 
986
- #: ../admin/views/ad-display-metabox.php:52
987
  msgctxt "button label"
988
  msgid "on"
989
  msgstr ""
990
 
991
- #: ../admin/views/ad-display-metabox.php:56
992
  msgctxt "button label"
993
  msgid "off"
994
  msgstr ""
995
 
996
- #: ../admin/views/ad-display-metabox.php:71
997
  msgid "show debug output"
998
  msgstr ""
999
 
1000
- #: ../admin/views/ad-display-metabox.php:72
1001
  msgid "Values saved for this ad in the database (post metas)"
1002
  msgstr ""
1003
 
@@ -1346,15 +1404,15 @@ msgid ""
1346
  "with a space"
1347
  msgstr ""
1348
 
1349
- #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:54
1350
  msgid "size:"
1351
  msgstr ""
1352
 
1353
- #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:55
1354
  msgid "width"
1355
  msgstr ""
1356
 
1357
- #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:56
1358
  msgid "height"
1359
  msgstr ""
1360
 
@@ -1413,10 +1471,6 @@ msgid ""
1413
  "if dynamic features get cached."
1414
  msgstr ""
1415
 
1416
- #: ../admin/views/ad-visitor-metabox.php:34
1417
- msgid "New condition"
1418
- msgstr ""
1419
-
1420
  #: ../admin/views/ad-visitor-metabox.php:37
1421
  msgctxt "visitor condition connector"
1422
  msgid "and"
@@ -1427,14 +1481,6 @@ msgctxt "visitor condition connector"
1427
  msgid "or"
1428
  msgstr ""
1429
 
1430
- #: ../admin/views/ad-visitor-metabox.php:41
1431
- msgid "-- choose a condition --"
1432
- msgstr ""
1433
-
1434
- #: ../admin/views/ad-visitor-metabox.php:46
1435
- msgid "add"
1436
- msgstr ""
1437
-
1438
  #: ../admin/views/ad-visitor-metabox.php:50
1439
  #, php-format
1440
  msgid ""
@@ -1474,6 +1520,45 @@ msgid ""
1474
  "understand them, but there is nothing to do here yet."
1475
  msgstr ""
1476
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1477
  #: ../admin/views/intro.php:18
1478
  msgid "5-Star Usability"
1479
  msgstr ""
@@ -1542,8 +1627,8 @@ msgstr ""
1542
  #: ../admin/views/intro.php:79
1543
  #, php-format
1544
  msgid ""
1545
- "Get started by creating an ad <a href=\"$1%s\" target=\"blank\">right now</a> or "
1546
- "watch the <a href=\"$2%s\" target=\"blank\">tutorial video (3:29min)</a> first."
1547
  msgstr ""
1548
 
1549
  #: ../admin/views/intro.php:82
@@ -2070,6 +2155,28 @@ msgid ""
2070
  "misfortunate formats in forms, but should not damage features."
2071
  msgstr ""
2072
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2073
  #: ../classes/EDD_SL_Plugin_Updater.php:177
2074
  #, php-format
2075
  msgid ""
@@ -2101,78 +2208,74 @@ msgstr ""
2101
  msgid "Display ads only on mobile devices or hide them."
2102
  msgstr ""
2103
 
2104
- #: ../classes/visitor-conditions.php:38
2105
  msgid "logged in visitor"
2106
  msgstr ""
2107
 
2108
- #: ../classes/visitor-conditions.php:39
2109
  msgid "Whether the visitor has to be logged in or not in order to see the ads."
2110
  msgstr ""
2111
 
2112
- #: ../classes/visitor-conditions.php:72
2113
  #, php-format
2114
  msgid ""
2115
  "Pro: Display ads by the available space on the device using the <a href=\"%s\" "
2116
  "target=\"_blank\">Responsive add-on</a>"
2117
  msgstr ""
2118
 
2119
- #: ../classes/visitor-conditions.php:102
2120
- msgid "is"
2121
- msgstr ""
2122
-
2123
- #: ../classes/visitor-conditions.php:103
2124
- msgid "is not"
2125
  msgstr ""
2126
 
2127
- #: ../classes/visitor-conditions.php:135
2128
  msgid "equal"
2129
  msgstr ""
2130
 
2131
- #: ../classes/visitor-conditions.php:136
2132
  msgid "equal or higher"
2133
  msgstr ""
2134
 
2135
- #: ../classes/visitor-conditions.php:137
2136
  msgid "equal or lower"
2137
  msgstr ""
2138
 
2139
- #: ../classes/visitor-conditions.php:169
2140
  msgid "contains"
2141
  msgstr ""
2142
 
2143
- #: ../classes/visitor-conditions.php:170
2144
  msgid "starts with"
2145
  msgstr ""
2146
 
2147
- #: ../classes/visitor-conditions.php:171
2148
  msgid "ends with"
2149
  msgstr ""
2150
 
2151
- #: ../classes/visitor-conditions.php:172
2152
  msgid "matches"
2153
  msgstr ""
2154
 
2155
- #: ../classes/visitor-conditions.php:173
2156
  msgid "matches regex"
2157
  msgstr ""
2158
 
2159
- #: ../classes/visitor-conditions.php:174
2160
  msgid "does not contain"
2161
  msgstr ""
2162
 
2163
- #: ../classes/visitor-conditions.php:175
2164
  msgid "does not start with"
2165
  msgstr ""
2166
 
2167
- #: ../classes/visitor-conditions.php:176
2168
  msgid "does not end with"
2169
  msgstr ""
2170
 
2171
- #: ../classes/visitor-conditions.php:177
2172
  msgid "does not match"
2173
  msgstr ""
2174
 
2175
- #: ../classes/visitor-conditions.php:178
2176
  msgid "does not match regex"
2177
  msgstr ""
2178
 
@@ -2184,134 +2287,134 @@ msgstr ""
2184
  msgid "Title:"
2185
  msgstr ""
2186
 
2187
- #: ../includes/array_ad_conditions.php:38
2188
  msgid "Post Types"
2189
  msgstr ""
2190
 
2191
- #: ../includes/array_ad_conditions.php:44
2192
  msgid "Categories, Tags and Taxonomies"
2193
  msgstr ""
2194
 
2195
- #: ../includes/array_ad_conditions.php:45
2196
  msgid ""
2197
  "Choose terms from public category, tag and other taxonomies a post must "
2198
  "belong to in order to have ads."
2199
  msgstr ""
2200
 
2201
- #: ../includes/array_ad_conditions.php:50
2202
  msgid "Category Archives"
2203
  msgstr ""
2204
 
2205
- #: ../includes/array_ad_conditions.php:51
2206
  msgid "comma seperated IDs of category archives"
2207
  msgstr ""
2208
 
2209
- #: ../includes/array_ad_conditions.php:56
2210
  msgid "Individual Posts, Pages and Public Post Types"
2211
  msgstr ""
2212
 
2213
- #: ../includes/array_ad_conditions.php:62
2214
  msgid "Home Page"
2215
  msgstr ""
2216
 
2217
- #: ../includes/array_ad_conditions.php:63
2218
  msgid "show on Home page"
2219
  msgstr ""
2220
 
2221
- #: ../includes/array_ad_conditions.php:67
2222
  msgid "Singular Pages"
2223
  msgstr ""
2224
 
2225
- #: ../includes/array_ad_conditions.php:68
2226
  msgid "show on singular pages/posts"
2227
  msgstr ""
2228
 
2229
- #: ../includes/array_ad_conditions.php:72
2230
  msgid "Archive Pages"
2231
  msgstr ""
2232
 
2233
- #: ../includes/array_ad_conditions.php:73
2234
  msgid "show on any type of archive page (category, tag, author and date)"
2235
  msgstr ""
2236
 
2237
- #: ../includes/array_ad_conditions.php:77
2238
  msgid "Search Results"
2239
  msgstr ""
2240
 
2241
- #: ../includes/array_ad_conditions.php:78
2242
  msgid "show on search result pages"
2243
  msgstr ""
2244
 
2245
- #: ../includes/array_ad_conditions.php:82
2246
  msgid "404 Page"
2247
  msgstr ""
2248
 
2249
- #: ../includes/array_ad_conditions.php:83
2250
  msgid "show on 404 error page"
2251
  msgstr ""
2252
 
2253
- #: ../includes/array_ad_conditions.php:87
2254
  msgid "Attachment Pages"
2255
  msgstr ""
2256
 
2257
- #: ../includes/array_ad_conditions.php:88
2258
  msgid "show on attachment pages"
2259
  msgstr ""
2260
 
2261
- #: ../includes/array_ad_conditions.php:92
2262
  msgid "Secondary Queries"
2263
  msgstr ""
2264
 
2265
- #: ../includes/array_ad_conditions.php:93
2266
  msgid "allow ads in secondary queries"
2267
  msgstr ""
2268
 
2269
- #: ../modules/ad-blocker/admin/admin.php:139
2270
  msgid "The asset folder was rebuilt successfully"
2271
  msgstr ""
2272
 
2273
- #: ../modules/ad-blocker/admin/admin.php:261
2274
  msgid "Ad blocker fix"
2275
  msgstr ""
2276
 
2277
- #: ../modules/ad-blocker/admin/admin.php:301
2278
  msgid "There is no writable upload folder"
2279
  msgstr ""
2280
 
2281
- #: ../modules/ad-blocker/admin/admin.php:324
2282
  #, php-format
2283
  msgid "Unable to rename \"%s\" directory"
2284
  msgstr ""
2285
 
2286
- #: ../modules/ad-blocker/admin/admin.php:342 ../modules/ad-blocker/admin/admin.
2287
- #: php:356 ../modules/ad-blocker/admin/admin.php:374
2288
  #, php-format
2289
  msgid "Unable to copy assets to the \"%s\" directory"
2290
  msgstr ""
2291
 
2292
- #: ../modules/ad-blocker/admin/admin.php:406 ../modules/ad-blocker/admin/admin.
2293
- #: php:416
2294
  #, php-format
2295
  msgid "We do not have direct write access to the \"%s\" directory"
2296
  msgstr ""
2297
 
2298
- #: ../modules/ad-blocker/admin/admin.php:425
2299
  msgid "There are no assets to copy"
2300
  msgstr ""
2301
 
2302
- #: ../modules/ad-blocker/admin/admin.php:481
2303
  #, php-format
2304
  msgid ""
2305
  "Unable to create \"%s\" directory. Is its parent directory writable by the "
2306
  "server?"
2307
  msgstr ""
2308
 
2309
- #: ../modules/ad-blocker/admin/admin.php:493
2310
  #, php-format
2311
  msgid "Unable to copy files to %s"
2312
  msgstr ""
2313
 
2314
- #: ../modules/ad-blocker/admin/admin.php:560
2315
  msgid ""
2316
  "Prevents ad block software from breaking your website when blocking asset "
2317
  "files (.js, .css)."
@@ -2591,14 +2694,15 @@ msgstr ""
2591
  msgid "Parent Ad"
2592
  msgstr ""
2593
 
2594
- #: ../admin/class-advanced-ads-admin.php:550
2595
  msgid "Display Conditions"
2596
  msgstr "Anzeigebedingungen"
2597
 
2598
- #: ../admin/class-advanced-ads-admin.php:1004
2599
  msgid "(display to all)"
2600
  msgstr "(für alle anzeigen)"
2601
 
2602
- #: ../admin/includes/class-display-condition-callbacks.php:87
 
2603
  msgid "Display here"
2604
  msgstr "Hier anzeigen"
3
  "Project-Id-Version: Advanved Ads\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
5
  "POT-Creation-Date: 2015-01-28 20:07+0100\n"
6
+ "PO-Revision-Date: Wed Jan 27 2016 07:35:03 GMT+0100 (CET)\n"
7
  "Last-Translator: admin <post@webzunft.de>\n"
8
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
9
  "Language: Unknown locale\n"
42
  msgid "http://webgilde.com"
43
  msgstr ""
44
 
45
+ #: ../admin/class-advanced-ads-admin.php:260
46
  msgid "Overview"
47
  msgstr ""
48
 
49
+ #: ../admin/class-advanced-ads-admin.php:264 ../admin/class-advanced-ads-admin.
50
+ #: php:264 ../admin/includes/class-shortcode-creator.php:77 ../admin/views/ad-
51
  #: group-list-form-row.php:28 ../admin/views/ad-group-list-header.php:5 ..
52
  #: /admin/views/placements.php:80 ../admin/views/placements.php:184 ..
53
  #: /classes/widget.php:89 ../public/class-advanced-ads.php:563
54
  msgid "Ads"
55
  msgstr ""
56
 
57
+ #: ../admin/class-advanced-ads-admin.php:268 ../admin/includes/class-shortcode-
58
  #: creator.php:84 ../admin/views/placements.php:73 ../admin/views/placements.php:
59
  #: 177 ../classes/widget.php:82
60
  msgid "Ad Groups"
61
  msgstr ""
62
 
63
+ #: ../admin/class-advanced-ads-admin.php:268 ../public/class-advanced-ads.php:536
64
  msgid "Groups"
65
  msgstr ""
66
 
67
+ #: ../admin/class-advanced-ads-admin.php:273 ../admin/views/debug.php:14
68
  msgid "Ad Placements"
69
  msgstr ""
70
 
71
+ #: ../admin/class-advanced-ads-admin.php:273 ../admin/includes/class-shortcode-
72
  #: creator.php:91 ../admin/views/placements.php:18 ../classes/widget.php:75
73
  msgid "Placements"
74
  msgstr ""
75
 
76
+ #: ../admin/class-advanced-ads-admin.php:277
77
  msgid "Advanced Ads Settings"
78
  msgstr ""
79
 
80
+ #: ../admin/class-advanced-ads-admin.php:277 ../admin/class-advanced-ads-admin.
81
+ #: php:504 ../admin/views/debug.php:11
82
  msgid "Settings"
83
  msgstr ""
84
 
85
+ #: ../admin/class-advanced-ads-admin.php:280
86
  msgid "Advanced Ads Debugging"
87
  msgstr ""
88
 
89
+ #: ../admin/class-advanced-ads-admin.php:280
90
  msgid "Debug"
91
  msgstr ""
92
 
93
+ #: ../admin/class-advanced-ads-admin.php:284 ../admin/class-advanced-ads-admin.
94
+ #: php:284
95
  msgid "Advanced Ads Intro"
96
  msgstr ""
97
 
98
+ #: ../admin/class-advanced-ads-admin.php:288 ../admin/class-advanced-ads-admin.
99
+ #: php:288 ../admin/class-advanced-ads-admin.php:1851
100
  msgid "Support"
101
  msgstr ""
102
 
103
+ #: ../admin/class-advanced-ads-admin.php:418 ../admin/class-advanced-ads-admin.
104
+ #: php:445
105
  msgid "Sorry, you are not allowed to access this feature."
106
  msgstr ""
107
 
108
+ #: ../admin/class-advanced-ads-admin.php:431
109
  msgid ""
110
  "You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was "
111
  "deleted?"
112
  msgstr ""
113
 
114
+ #: ../admin/class-advanced-ads-admin.php:546
115
  msgid "Ad Type"
116
  msgstr ""
117
 
118
+ #: ../admin/class-advanced-ads-admin.php:549
119
  msgid "Ad Parameters"
120
  msgstr ""
121
 
122
+ #: ../admin/class-advanced-ads-admin.php:552
123
  msgid "Layout / Output"
124
  msgstr ""
125
 
126
+ #: ../admin/class-advanced-ads-admin.php:558
127
  msgid "Visitor Conditions"
128
  msgstr ""
129
 
130
+ #: ../admin/class-advanced-ads-admin.php:769 ../admin/class-advanced-ads-admin.
131
+ #: php:770
132
  msgid "Ad updated."
133
  msgstr ""
134
 
135
  #. translators: %s: date and time of the revision
136
+ #: ../admin/class-advanced-ads-admin.php:772
137
  #, php-format
138
  msgid "Ad restored to revision from %s"
139
  msgstr ""
140
 
141
+ #: ../admin/class-advanced-ads-admin.php:773
142
  msgid "Ad published."
143
  msgstr ""
144
 
145
+ #: ../admin/class-advanced-ads-admin.php:774
146
  msgid "Ad saved."
147
  msgstr ""
148
 
149
+ #: ../admin/class-advanced-ads-admin.php:775
150
  msgid "Ad submitted."
151
  msgstr ""
152
 
153
+ #: ../admin/class-advanced-ads-admin.php:777
154
  #, php-format
155
  msgid "Ad scheduled for: <strong>%1$s</strong>."
156
  msgstr ""
157
 
158
  #. translators: Publish box date format, see http://php.net/date
159
+ #: ../admin/class-advanced-ads-admin.php:779
160
  msgid "M j, Y @ G:i"
161
  msgstr ""
162
 
163
+ #: ../admin/class-advanced-ads-admin.php:781
164
  msgid "Ad draft updated."
165
  msgstr ""
166
 
167
+ #: ../admin/class-advanced-ads-admin.php:800
168
  #, php-format
169
  msgid "%s ad updated."
170
  msgid_plural "%s ads updated."
171
  msgstr[0] ""
172
  msgstr[1] ""
173
 
174
+ #: ../admin/class-advanced-ads-admin.php:801
175
  #, php-format
176
  msgid "%s ad not updated, somebody is editing it."
177
  msgid_plural "%s ads not updated, somebody is editing them."
178
  msgstr[0] ""
179
  msgstr[1] ""
180
 
181
+ #: ../admin/class-advanced-ads-admin.php:802
182
  #, php-format
183
  msgid "%s ad permanently deleted."
184
  msgid_plural "%s ads permanently deleted."
185
  msgstr[0] ""
186
  msgstr[1] ""
187
 
188
+ #: ../admin/class-advanced-ads-admin.php:803
189
  #, php-format
190
  msgid "%s ad moved to the Trash."
191
  msgid_plural "%s ads moved to the Trash."
192
  msgstr[0] ""
193
  msgstr[1] ""
194
 
195
+ #: ../admin/class-advanced-ads-admin.php:804
196
  #, php-format
197
  msgid "%s ad restored from the Trash."
198
  msgid_plural "%s ads restored from the Trash."
199
  msgstr[0] ""
200
  msgstr[1] ""
201
 
202
+ #: ../admin/class-advanced-ads-admin.php:839 ../admin/views/settings.php:12
203
  msgid "General"
204
  msgstr ""
205
 
206
+ #: ../admin/class-advanced-ads-admin.php:851 ../admin/class-advanced-ads-admin.
207
+ #: php:955
208
  msgid "Licenses"
209
  msgstr ""
210
 
211
+ #: ../admin/class-advanced-ads-admin.php:862
212
  msgid "Disable ads"
213
  msgstr ""
214
 
215
+ #: ../admin/class-advanced-ads-admin.php:870
216
  msgid "Hide ads for logged in users"
217
  msgstr ""
218
 
219
+ #: ../admin/class-advanced-ads-admin.php:878
220
  msgid "Use advanced JavaScript"
221
  msgstr ""
222
 
223
+ #: ../admin/class-advanced-ads-admin.php:886
224
  msgid "Unlimited ad injection"
225
  msgstr ""
226
 
227
+ #: ../admin/class-advanced-ads-admin.php:894
228
  msgid "Priority of content injection filter"
229
  msgstr ""
230
 
231
+ #: ../admin/class-advanced-ads-admin.php:902
232
  msgid "Hide ads from bots"
233
  msgstr ""
234
 
235
+ #: ../admin/class-advanced-ads-admin.php:910
236
  msgid "Disable notices"
237
  msgstr ""
238
 
239
+ #: ../admin/class-advanced-ads-admin.php:918
240
  msgid "ID prefix"
241
  msgstr ""
242
 
243
+ #: ../admin/class-advanced-ads-admin.php:926
244
  msgid "Remove Widget ID"
245
  msgstr ""
246
 
247
+ #: ../admin/class-advanced-ads-admin.php:934
248
  msgid "Allow editors to manage ads"
249
  msgstr ""
250
 
251
+ #: ../admin/class-advanced-ads-admin.php:1010
252
  msgid "Subscriber"
253
  msgstr ""
254
 
255
+ #: ../admin/class-advanced-ads-admin.php:1011
256
  msgid "Contributor"
257
  msgstr ""
258
 
259
+ #: ../admin/class-advanced-ads-admin.php:1012
260
  msgid "Author"
261
  msgstr ""
262
 
263
+ #: ../admin/class-advanced-ads-admin.php:1013
264
  msgid "Editor"
265
  msgstr ""
266
 
267
+ #: ../admin/class-advanced-ads-admin.php:1014
268
  msgid "Admin"
269
  msgstr ""
270
 
271
+ #: ../admin/class-advanced-ads-admin.php:1022
272
  msgid "Choose the lowest role a user must have in order to not see any ads."
273
  msgstr ""
274
 
275
+ #: ../admin/class-advanced-ads-admin.php:1036
276
  msgid ""
277
  "<strong>notice: </strong>the file is currently enabled by an add-on that "
278
  "needs it."
279
  msgstr ""
280
 
281
+ #: ../admin/class-advanced-ads-admin.php:1039
282
  #, php-format
283
  msgid ""
284
  "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">here</a>)."
286
  "from this file."
287
  msgstr ""
288
 
289
+ #: ../admin/class-advanced-ads-admin.php:1052
290
  msgid ""
291
  "Some plugins and themes trigger ad injection where it shouldn’t happen. "
292
  "Therefore, Advanced Ads ignores injected placements on non-singular pages "
295
  "on archive pages AT YOUR OWN RISK."
296
  msgstr ""
297
 
298
+ #: ../admin/class-advanced-ads-admin.php:1068
299
  msgid ""
300
  "Please check your post content. A priority of 10 and below might cause "
301
  "issues (wpautop function might run twice)."
302
  msgstr ""
303
 
304
+ #: ../admin/class-advanced-ads-admin.php:1070
305
  msgid ""
306
  "Play with this value in order to change the priority of the injected ads "
307
  "compared to other auto injected elements in the post content."
308
  msgstr ""
309
 
310
+ #: ../admin/class-advanced-ads-admin.php:1084
311
  #, php-format
312
  msgid ""
313
  "Hide ads from crawlers, bots and empty user agents. Also prevents counting "
315
  "Add-On</a>."
316
  msgstr ""
317
 
318
+ #: ../admin/class-advanced-ads-admin.php:1085
319
  msgid ""
320
  "Disabling this option only makes sense if your ads contain content you want "
321
  "to display to bots (like search engines) or your site is cached and bots "
322
  "could create a cached version without the ads."
323
  msgstr ""
324
 
325
+ #: ../admin/class-advanced-ads-admin.php:1098
326
  msgid ""
327
  "Disable internal notices like tips, tutorials, email newsletters and update "
328
  "notices. Disabling notices is recommended if you run multiple blogs with "
329
  "Advanced Ads already."
330
  msgstr ""
331
 
332
+ #: ../admin/class-advanced-ads-admin.php:1120
333
  msgid ""
334
  "Prefix of class or id attributes in the frontend. Change it if you don’t "
335
  "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
336
  "need to <strong>rewrite css rules afterwards</strong>."
337
  msgstr ""
338
 
339
+ #: ../admin/class-advanced-ads-admin.php:1141
340
  msgid ""
341
  "Remove the ID attribute from widgets in order to not make them an easy "
342
  "target of ad blockers."
343
  msgstr ""
344
 
345
+ #: ../admin/class-advanced-ads-admin.php:1160
346
  msgid "Allow editors to also manage and publish ads."
347
  msgstr ""
348
 
349
+ #: ../admin/class-advanced-ads-admin.php:1161
350
+ #, php-format
351
+ msgid ""
352
+ "You can assign different ad-related roles on a user basis with <a href=\"%s\" "
353
+ "target=\"_blank\">Advanced Ads Pro</a>."
354
+ msgstr ""
355
+
356
+ #: ../admin/class-advanced-ads-admin.php:1248
357
  msgid "Ad Details"
358
  msgstr ""
359
 
360
+ #: ../admin/class-advanced-ads-admin.php:1249
361
  msgid "Ad Planning"
362
  msgstr ""
363
 
364
+ #: ../admin/class-advanced-ads-admin.php:1384
365
  msgid "Ad Settings"
366
  msgstr ""
367
 
368
+ #: ../admin/class-advanced-ads-admin.php:1463 ../admin/views/overview.php:23
369
  msgid "Ads Dashboard"
370
  msgstr ""
371
 
372
+ #: ../admin/class-advanced-ads-admin.php:1475
373
  msgid "From the ad optimization universe"
374
  msgstr ""
375
 
376
+ #: ../admin/class-advanced-ads-admin.php:1484
377
  msgid "Advanced Ads Tutorials"
378
  msgstr ""
379
 
380
+ #: ../admin/class-advanced-ads-admin.php:1495
381
  #, php-format
382
  msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
383
  msgstr ""
384
 
385
+ #: ../admin/class-advanced-ads-admin.php:1506
386
  msgid "plugin manual and homepage"
387
  msgstr ""
388
 
389
+ #: ../admin/class-advanced-ads-admin.php:1513
390
  msgid "Get the tutorial via email"
391
  msgstr ""
392
 
393
+ #: ../admin/class-advanced-ads-admin.php:1520
394
  msgid "Get AdSense tips via email"
395
  msgstr ""
396
 
397
+ #: ../admin/class-advanced-ads-admin.php:1601
398
  msgid "Error while trying to register the license. Please contact support."
399
  msgstr ""
400
 
401
+ #: ../admin/class-advanced-ads-admin.php:1607
402
  msgid "Please enter and save a valid license key first."
403
  msgstr ""
404
 
405
+ #: ../admin/class-advanced-ads-admin.php:1633
406
  #, php-format
407
  msgid "License is invalid. Reason: %s"
408
  msgstr ""
409
 
410
+ #: ../admin/class-advanced-ads-admin.php:1677
411
  msgid "Error while trying to disable the license. Please contact support."
412
  msgstr ""
413
 
414
+ #: ../admin/class-advanced-ads-admin.php:1708
415
  msgid "License couldn’t be deactivated. Please try again later or contact support."
416
  msgstr ""
417
 
418
+ #: ../admin/class-advanced-ads-admin.php:1855
419
+ msgid "Add-Ons"
420
+ msgstr ""
421
+
422
  #: ../admin/includes/class-ad-groups-list.php:156
423
  msgid "Ad weight"
424
  msgstr ""
492
  msgid "You don’t have permission to change the ad groups"
493
  msgstr ""
494
 
495
+ #: ../admin/includes/class-display-condition-callbacks.php:29
496
  msgid "Display on all public <strong>post types</strong>."
497
  msgstr ""
498
 
499
+ #: ../admin/includes/class-display-condition-callbacks.php:32 ../classes/display-
500
+ #: conditions.php:33 ../includes/array_ad_conditions.php:40
501
  msgid "Choose the public post types on which to display the ad."
502
  msgstr ""
503
 
504
+ #: ../admin/includes/class-display-condition-callbacks.php:87 ../classes/display-
505
+ #: conditions.php:188
506
  msgid "Display for all <strong>categories, tags and taxonomies</strong>."
507
  msgstr ""
508
 
509
+ #: ../admin/includes/class-display-condition-callbacks.php:88 ../classes/display-
510
+ #: conditions.php:189
511
  msgid ""
512
  "Choose terms from public categories, tags and other taxonomies a post must "
513
  "belong to in order to have ads."
514
  msgstr ""
515
 
516
+ #: ../admin/includes/class-display-condition-callbacks.php:105 ..
517
+ #: /admin/includes/class-display-condition-callbacks.php:218 ../classes/display-
518
+ #: conditions.php:206
519
  msgid "Hide from here"
520
  msgstr ""
521
 
522
+ #: ../admin/includes/class-display-condition-callbacks.php:105 ../classes/display-
523
+ #: conditions.php:206
524
  msgid ""
525
  "Choose the terms from public categories, tags and other taxonomies a post "
526
  "must belong to hide the ad from it."
527
  msgstr ""
528
 
529
+ #: ../admin/includes/class-display-condition-callbacks.php:150
530
  msgctxt "display the terms search field on ad edit page"
531
  msgid "add more terms"
532
  msgstr ""
533
 
534
+ #: ../admin/includes/class-display-condition-callbacks.php:151
535
  msgid "add more terms"
536
  msgstr ""
537
 
538
+ #: ../admin/includes/class-display-condition-callbacks.php:154
539
  msgid "term name or id"
540
  msgstr ""
541
 
542
+ #: ../admin/includes/class-display-condition-callbacks.php:198
543
  msgid "Display on all <strong>category archive pages</strong>."
544
  msgstr ""
545
 
546
+ #: ../admin/includes/class-display-condition-callbacks.php:201
547
  msgid ""
548
  "Choose the terms from public categories, tags and other taxonomies on "
549
  "which's archive page ads can appear"
550
  msgstr ""
551
 
552
+ #: ../admin/includes/class-display-condition-callbacks.php:218
553
  msgid ""
554
  "Choose the terms from public categories, tags and other taxonomies on "
555
  "which's archive pages ads are hidden."
556
  msgstr ""
557
 
558
+ #: ../admin/includes/class-display-condition-callbacks.php:240
559
  msgid ""
560
  "Display on all <strong>individual posts, pages</strong> and public post type "
561
  "pages"
562
  msgstr ""
563
 
564
+ #: ../admin/includes/class-display-condition-callbacks.php:243 ..
565
+ #: /includes/array_ad_conditions.php:58
566
  msgid ""
567
  "Choose on which individual posts, pages and public post type pages you want "
568
  "to display or hide ads."
569
  msgstr ""
570
 
571
+ #: ../admin/includes/class-display-condition-callbacks.php:260
572
  msgid "What should happen with ads on the list of individual posts below?"
573
  msgstr ""
574
 
575
+ #: ../admin/includes/class-display-condition-callbacks.php:261
576
  msgid "ignore the list"
577
  msgstr ""
578
 
579
+ #: ../admin/includes/class-display-condition-callbacks.php:262
580
  msgid "display the ad only there"
581
  msgstr ""
582
 
583
+ #: ../admin/includes/class-display-condition-callbacks.php:263
584
  msgid "hide the ad here"
585
  msgstr ""
586
 
587
+ #: ../admin/includes/class-display-condition-callbacks.php:271
588
  msgid "Update warning"
589
  msgstr ""
590
 
591
+ #: ../admin/includes/class-display-condition-callbacks.php:272
592
  msgid ""
593
  "Due to some conflicts before version 1.2.6, it is from now on only possible "
594
  "to choose either individual pages to include or exclude an ad, but not both "
596
  "page. Please consider changing your setup for this ad."
597
  msgstr ""
598
 
599
+ #: ../admin/includes/class-display-condition-callbacks.php:273
600
  msgid "Your old values are:"
601
  msgstr ""
602
 
603
+ #: ../admin/includes/class-display-condition-callbacks.php:274
604
  msgid "Post IDs the ad is displayed on:"
605
  msgstr ""
606
 
607
+ #: ../admin/includes/class-display-condition-callbacks.php:275
608
  msgid "Post IDs the ad is hidden from:"
609
  msgstr ""
610
 
611
+ #: ../admin/includes/class-display-condition-callbacks.php:276
612
  msgid ""
613
  "Below you find the pages the ad is displayed on. If this is ok, just save "
614
  "the ad. If not, please update your settings."
615
  msgstr ""
616
 
617
+ #: ../admin/includes/class-display-condition-callbacks.php:319
618
  msgid "new"
619
  msgstr ""
620
 
621
+ #: ../admin/includes/class-display-condition-callbacks.php:321
622
  msgid "type the title"
623
  msgstr ""
624
 
625
+ #: ../admin/includes/class-notices.php:364
626
  #, php-format
627
  msgid ""
628
  "You don’t seem to have an email address. Please use <a href=\"%s\" "
629
  "target=\"_blank\">this form</a> to sign up."
630
  msgstr ""
631
 
632
+ #: ../admin/includes/class-notices.php:382
633
  msgid "How embarrassing. The email server seems to be down. Please try again later."
634
  msgstr ""
635
 
636
+ #: ../admin/includes/class-notices.php:387
637
  #, php-format
638
  msgid ""
639
  "Please check your email (%s) for the confirmation message. If you didn’t "
666
  msgstr ""
667
 
668
  #: ../admin/includes/class-overview-widgets.php:59
669
+ msgid "Geo Targeting"
670
  msgstr ""
671
 
672
  #: ../admin/includes/class-overview-widgets.php:61
673
+ msgid "Sticky ads"
674
  msgstr ""
675
 
676
  #: ../admin/includes/class-overview-widgets.php:63
677
+ msgid "PopUps and Layers"
678
+ msgstr ""
679
+
680
+ #: ../admin/includes/class-overview-widgets.php:65
681
  msgid "Ad Slider"
682
  msgstr ""
683
 
684
+ #: ../admin/includes/class-overview-widgets.php:83
685
  msgid "Get 2 <strong>free add-ons</strong> for joining the newsletter."
686
  msgstr ""
687
 
688
+ #: ../admin/includes/class-overview-widgets.php:84
689
  msgid "Join now"
690
  msgstr ""
691
 
692
+ #: ../admin/includes/class-overview-widgets.php:91
693
  msgid ""
694
  "Learn more about how and <strong>how much you can earn with AdSense</strong> "
695
  "and Advanced Ads from the dedicated newsletter group."
696
  msgstr ""
697
 
698
+ #: ../admin/includes/class-overview-widgets.php:92 ../admin/includes/notices.php:
699
+ #: 35 ../admin/views/intro.php:73 ../admin/views/notices/inline.php:3 ..
700
  #: /admin/views/notices/subscribe.php:3
701
  msgid "Subscribe me now"
702
  msgstr ""
703
 
704
+ #: ../admin/includes/class-overview-widgets.php:99
705
  msgid "Get the first steps and more tutorials to your inbox."
706
  msgstr ""
707
 
708
+ #: ../admin/includes/class-overview-widgets.php:100
709
  msgid "Send it now"
710
  msgstr ""
711
 
712
+ #: ../admin/includes/class-overview-widgets.php:123 ../admin/views/intro.php:78
713
  msgid "Create your first ad"
714
  msgstr ""
715
 
716
+ #: ../admin/includes/class-overview-widgets.php:126
717
  msgid ""
718
  "Ad Groups contain ads and are currently used to rotate multiple ads on a "
719
  "single spot."
720
  msgstr ""
721
 
722
+ #: ../admin/includes/class-overview-widgets.php:128
723
  msgid "Create your first group"
724
  msgstr ""
725
 
726
+ #: ../admin/includes/class-overview-widgets.php:131
727
  msgid "Ad Placements are the best way to manage where to display ads and groups."
728
  msgstr ""
729
 
730
+ #: ../admin/includes/class-overview-widgets.php:133
731
  msgid "Create your first placement"
732
  msgstr ""
733
 
734
+ #: ../admin/includes/class-overview-widgets.php:138
735
  msgid "Next steps"
736
  msgstr ""
737
 
738
+ #: ../admin/includes/class-overview-widgets.php:150
 
 
 
 
 
739
  #, php-format
740
  msgid "<a href=\"%s\" target=\"_blank\">Manual</a>"
741
  msgstr ""
742
 
743
+ #: ../admin/includes/class-overview-widgets.php:151
744
  #, php-format
745
+ msgid "<a href=\"%s\" target=\"_blank\">FAQ and Support</a>"
746
  msgstr ""
747
 
748
+ #: ../admin/includes/class-overview-widgets.php:152
749
  #, php-format
750
  msgid "Vote for a <a href=\"%s\" target=\"_blank\">feature</a>"
751
  msgstr ""
752
 
753
+ #: ../admin/includes/class-overview-widgets.php:153
754
  #, php-format
755
  msgid ""
756
  "Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a "
757
  "href=\"%s\" target=\"_blank\">wordpress.org</a>"
758
  msgstr ""
759
 
760
+ #: ../admin/includes/class-overview-widgets.php:162
761
  msgid ""
762
  "Need help to set up and optimize your ads? Need custom coding on your site? "
763
  "Ask me for a quote."
764
  msgstr ""
765
 
766
+ #: ../admin/includes/class-overview-widgets.php:163
767
  #, php-format
768
  msgid "Help with ads on %s"
769
  msgstr ""
770
 
771
+ #: ../admin/includes/class-overview-widgets.php:164
772
  msgid "Get an offer"
773
  msgstr ""
774
 
775
+ #: ../admin/includes/class-overview-widgets.php:172
776
  msgid "Ad management for advanced websites."
777
  msgstr ""
778
 
779
+ #: ../admin/includes/class-overview-widgets.php:173
780
  msgid "Cache-busting"
781
  msgstr ""
782
 
783
+ #: ../admin/includes/class-overview-widgets.php:174
784
  msgid "Advanced visitor conditions"
785
  msgstr ""
786
 
787
+ #: ../admin/includes/class-overview-widgets.php:175
788
  msgid "Flash ads with fallback"
789
  msgstr ""
790
 
791
+ #: ../admin/includes/class-overview-widgets.php:177
792
  msgid "Get Pro"
793
  msgstr ""
794
 
795
+ #: ../admin/includes/class-overview-widgets.php:185
796
  msgid "Track the impressions of and clicks on your ads."
797
  msgstr ""
798
 
799
+ #: ../admin/includes/class-overview-widgets.php:186
800
  msgid "2 methods to count impressions"
801
  msgstr ""
802
 
803
+ #: ../admin/includes/class-overview-widgets.php:187
804
  msgid "beautiful stats for all or single ads"
805
  msgstr ""
806
 
807
+ #: ../admin/includes/class-overview-widgets.php:188
808
  msgid "get stats for predefined and custom persiods"
809
  msgstr ""
810
 
811
+ #: ../admin/includes/class-overview-widgets.php:189
812
  msgid "group stats by day, week or month"
813
  msgstr ""
814
 
815
+ #: ../admin/includes/class-overview-widgets.php:191
816
  msgid "Get the Tracking add-on"
817
  msgstr ""
818
 
819
+ #: ../admin/includes/class-overview-widgets.php:199
820
  msgid "Display ads based on the size of your visitor’s browser or device."
821
  msgstr ""
822
 
823
+ #: ../admin/includes/class-overview-widgets.php:200
824
  msgid "set a range (from … to …) pixels for the browser size"
825
  msgstr ""
826
 
827
+ #: ../admin/includes/class-overview-widgets.php:201
828
  msgid "set custom sizes for AdSense responsive ads"
829
  msgstr ""
830
 
831
+ #: ../admin/includes/class-overview-widgets.php:202
832
  msgid "list all ads by their responsive settings"
833
  msgstr ""
834
 
835
+ #: ../admin/includes/class-overview-widgets.php:204
836
  msgid "Get the Responsive add-on"
837
  msgstr ""
838
 
839
+ #: ../admin/includes/class-overview-widgets.php:212
840
+ msgid "Target visitors by their geo location."
841
+ msgstr ""
842
+
843
+ #: ../admin/includes/class-overview-widgets.php:214
844
+ msgid "Get the Geo Targeting add-on"
845
+ msgstr ""
846
+
847
+ #: ../admin/includes/class-overview-widgets.php:222 ../admin/views/ad-info-top.
848
  #: php:30
849
  msgid ""
850
  "Fix ads to the browser while users are scrolling and create best performing "
851
  "anchor ads."
852
  msgstr ""
853
 
854
+ #: ../admin/includes/class-overview-widgets.php:223
855
  msgid "position ads that don’t scroll with the screen"
856
  msgstr ""
857
 
858
+ #: ../admin/includes/class-overview-widgets.php:224
859
  msgid "build anchor ads not only on mobile devices"
860
  msgstr ""
861
 
862
+ #: ../admin/includes/class-overview-widgets.php:226 ../admin/views/ad-info-top.
863
  #: php:32
864
  msgid "Get the Sticky add-on"
865
  msgstr ""
866
 
867
+ #: ../admin/includes/class-overview-widgets.php:234 ../admin/views/ad-info-top.
868
  #: php:37
869
  msgid "Display content and ads in layers and popups on custom events."
870
  msgstr ""
871
 
872
+ #: ../admin/includes/class-overview-widgets.php:235
873
  msgid "display a popup after a user interaction like scrolling"
874
  msgstr ""
875
 
876
+ #: ../admin/includes/class-overview-widgets.php:236
877
  msgid "optional backgroup overlay"
878
  msgstr ""
879
 
880
+ #: ../admin/includes/class-overview-widgets.php:237
881
  msgid "allow users to close the popup"
882
  msgstr ""
883
 
884
+ #: ../admin/includes/class-overview-widgets.php:239 ../admin/views/ad-info-top.
885
  #: php:39
886
  msgid "Get the PopUp and Layer add-on"
887
  msgstr ""
888
 
889
+ #: ../admin/includes/class-overview-widgets.php:247
890
  msgid "Create a beautiful and simple slider from your ads."
891
  msgstr ""
892
 
893
+ #: ../admin/includes/class-overview-widgets.php:249
894
  msgid "Get the Slider add-on"
895
  msgstr ""
896
 
905
  "Steps</a>."
906
  msgstr ""
907
 
908
+ #: ../admin/includes/notices.php:20
909
  msgid ""
910
  "Thank you for activating <strong>Advanced Ads</strong>. Would you like to "
911
  "receive the first steps via email?"
912
  msgstr ""
913
 
914
+ #: ../admin/includes/notices.php:21
915
  msgid "Yes, send it"
916
  msgstr ""
917
 
918
+ #: ../admin/includes/notices.php:27
919
  msgid ""
920
  "Thank you for using <strong>Advanced Ads</strong>. Stay informed and receive "
921
  "<strong>2 free add-ons</strong> for joining the newsletter."
922
  msgstr ""
923
 
924
+ #: ../admin/includes/notices.php:28
925
  msgid "Add me now"
926
  msgstr ""
927
 
928
+ #: ../admin/includes/notices.php:34
929
  msgid ""
930
  "Learn more about how and <strong>how much you can earn with AdSense</strong> "
931
  "and Advanced Ads from my dedicated newsletter."
932
  msgstr ""
933
 
934
+ #: ../admin/includes/notices.php:56
935
  msgid ""
936
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
937
  "missing</strong>."
938
  msgstr ""
939
 
940
+ #: ../admin/includes/notices.php:56
941
  #, php-format
942
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
943
  msgstr ""
944
 
945
+ #: ../admin/includes/notices.php:62
946
  #, php-format
947
  msgid ""
948
  "One or more licenses for your <strong>Advanced Ads add-ons are expiring "
951
  "target=\"_blank\">the add-on page</a>."
952
  msgstr ""
953
 
954
+ #: ../admin/includes/notices.php:68 ../admin/views/support.php:38
955
  #, php-format
956
  msgid ""
957
  "<strong>Advanced Ads</strong> license(s) expired. Support and updates are "
959
  "information."
960
  msgstr ""
961
 
962
+ #: ../admin/includes/notices.php:74
963
+ #, php-format
964
+ msgid ""
965
+ "<img src=\"%3$s\" alt=\"Thomas\" width=\"80\" height=\"115\" class=\"advads-review-"
966
+ "image\"/>You are using <strong>Advanced Ads</strong> for some time now. Thank "
967
+ "you! If you need my help then please visit the <a href=\"%1$s\" "
968
+ "target=\"_blank\">Support page</a> to get free help.</p><h3>Thanks for your "
969
+ "Review</h3><p>If you share my passion and find Advanced Ads useful then "
970
+ "please <a href=\"%2$s\" target=\"_blank\">leave a 5-star review on wordpress."
971
+ "org</a>.</p><p><em>Thomas</em>"
972
+ msgstr ""
973
+
974
  #: ../admin/includes/shortcode-creator-l10n.php:10
975
  msgctxt "shortcode creator"
976
  msgid "Add an ad"
986
  msgid "Cancel"
987
  msgstr ""
988
 
989
+ #: ../admin/views/ad-display-metabox.php:6
990
+ msgid "Set Display Conditions to show or disable the ad on specific pages."
991
+ msgstr ""
992
+
993
+ #: ../admin/views/ad-display-metabox.php:6 ../admin/views/ad-visitor-metabox.php:4
994
+ msgid "Manual"
995
+ msgstr ""
996
+
997
+ #: ../admin/views/ad-display-metabox.php:33 ../admin/views/ad-display-metabox.php:
998
+ #: 102
999
+ msgid "If you want to display the ad everywhere, don't do anything here. "
1000
+ msgstr ""
1001
+
1002
+ #: ../admin/views/ad-display-metabox.php:37 ../admin/views/ad-visitor-metabox.php:
1003
+ #: 34
1004
+ msgid "New condition"
1005
+ msgstr ""
1006
+
1007
+ #: ../admin/views/ad-display-metabox.php:40 ../admin/views/ad-visitor-metabox.php:
1008
+ #: 41
1009
+ msgid "-- choose a condition --"
1010
+ msgstr ""
1011
+
1012
+ #: ../admin/views/ad-display-metabox.php:45 ../admin/views/ad-visitor-metabox.php:
1013
+ #: 46
1014
+ msgid "add"
1015
+ msgstr ""
1016
+
1017
+ #: ../admin/views/ad-display-metabox.php:95
1018
  msgid "Choose where to display the ad and where to hide it."
1019
  msgstr ""
1020
 
1021
+ #: ../admin/views/ad-display-metabox.php:97
1022
  msgid "Display ad everywhere"
1023
  msgstr ""
1024
 
1025
+ #: ../admin/views/ad-display-metabox.php:98
1026
  msgid "Set display conditions"
1027
  msgstr ""
1028
 
1029
+ #: ../admin/views/ad-display-metabox.php:103
 
 
 
 
1030
  msgid "The fewer conditions you enter, the better the performance will be."
1031
  msgstr ""
1032
 
1033
+ #: ../admin/views/ad-display-metabox.php:104
1034
  #, php-format
1035
  msgid ""
1036
  "Learn more about display conditions from the <a href=\"%s\" "
1037
  "target=\"_blank\">manual</a>."
1038
  msgstr ""
1039
 
1040
+ #: ../admin/views/ad-display-metabox.php:121
1041
+ msgid "general conditions"
1042
  msgstr ""
1043
 
1044
+ #: ../admin/views/ad-display-metabox.php:139
1045
  msgctxt "button label"
1046
  msgid "on"
1047
  msgstr ""
1048
 
1049
+ #: ../admin/views/ad-display-metabox.php:143
1050
  msgctxt "button label"
1051
  msgid "off"
1052
  msgstr ""
1053
 
1054
+ #: ../admin/views/ad-display-metabox.php:158
1055
  msgid "show debug output"
1056
  msgstr ""
1057
 
1058
+ #: ../admin/views/ad-display-metabox.php:159
1059
  msgid "Values saved for this ad in the database (post metas)"
1060
  msgstr ""
1061
 
1404
  "with a space"
1405
  msgstr ""
1406
 
1407
+ #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:55
1408
  msgid "size:"
1409
  msgstr ""
1410
 
1411
+ #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:56
1412
  msgid "width"
1413
  msgstr ""
1414
 
1415
+ #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:57
1416
  msgid "height"
1417
  msgstr ""
1418
 
1471
  "if dynamic features get cached."
1472
  msgstr ""
1473
 
 
 
 
 
1474
  #: ../admin/views/ad-visitor-metabox.php:37
1475
  msgctxt "visitor condition connector"
1476
  msgid "and"
1481
  msgid "or"
1482
  msgstr ""
1483
 
 
 
 
 
 
 
 
 
1484
  #: ../admin/views/ad-visitor-metabox.php:50
1485
  #, php-format
1486
  msgid ""
1520
  "understand them, but there is nothing to do here yet."
1521
  msgstr ""
1522
 
1523
+ #: ../admin/views/feedback_disable.php:3
1524
+ msgid "Thank you for helping to improve Advanced Ads."
1525
+ msgstr ""
1526
+
1527
+ #: ../admin/views/feedback_disable.php:4
1528
+ msgid ""
1529
+ "Your feedback will motivates me to work harder towards a professional ad "
1530
+ "management solution."
1531
+ msgstr ""
1532
+
1533
+ #: ../admin/views/feedback_disable.php:5
1534
+ msgid "Why did you decide to disable Advanced Ads?"
1535
+ msgstr ""
1536
+
1537
+ #: ../admin/views/feedback_disable.php:7
1538
+ msgid "I stopped showing ads on my site"
1539
+ msgstr ""
1540
+
1541
+ #: ../admin/views/feedback_disable.php:8
1542
+ #, php-format
1543
+ msgid "I miss a feature or <a href=\"%s\">add-on</a>"
1544
+ msgstr ""
1545
+
1546
+ #: ../admin/views/feedback_disable.php:9
1547
+ msgid "I have a technical problem"
1548
+ msgstr ""
1549
+
1550
+ #: ../admin/views/feedback_disable.php:10
1551
+ msgid "other reason"
1552
+ msgstr ""
1553
+
1554
+ #: ../admin/views/feedback_disable.php:12
1555
+ msgid "Please specify, if possible"
1556
+ msgstr ""
1557
+
1558
+ #: ../admin/views/feedback_disable.php:13
1559
+ msgid "What would be a reason to return to Advanced Ads?"
1560
+ msgstr ""
1561
+
1562
  #: ../admin/views/intro.php:18
1563
  msgid "5-Star Usability"
1564
  msgstr ""
1627
  #: ../admin/views/intro.php:79
1628
  #, php-format
1629
  msgid ""
1630
+ "Get started by creating an ad <a href=\"%1$s\" target=\"blank\">right now</a> or "
1631
+ "watch the <a href=\"%2$s\" target=\"blank\">tutorial video (3:29min)</a> first."
1632
  msgstr ""
1633
 
1634
  #: ../admin/views/intro.php:82
2155
  "misfortunate formats in forms, but should not damage features."
2156
  msgstr ""
2157
 
2158
+ #: ../classes/display-conditions.php:32
2159
+ msgid "post type"
2160
+ msgstr ""
2161
+
2162
+ #: ../classes/display-conditions.php:39
2163
+ msgid "categories, tags and taxonomies"
2164
+ msgstr ""
2165
+
2166
+ #: ../classes/display-conditions.php:40
2167
+ msgid ""
2168
+ "Choose terms from public categories, tags and other taxonomies a post must "
2169
+ "belong to for showing or hiding ads."
2170
+ msgstr ""
2171
+
2172
+ #: ../classes/display-conditions.php:171 ../classes/visitor-conditions.php:103
2173
+ msgid "is"
2174
+ msgstr ""
2175
+
2176
+ #: ../classes/display-conditions.php:172 ../classes/visitor-conditions.php:104
2177
+ msgid "is not"
2178
+ msgstr ""
2179
+
2180
  #: ../classes/EDD_SL_Plugin_Updater.php:177
2181
  #, php-format
2182
  msgid ""
2208
  msgid "Display ads only on mobile devices or hide them."
2209
  msgstr ""
2210
 
2211
+ #: ../classes/visitor-conditions.php:39
2212
  msgid "logged in visitor"
2213
  msgstr ""
2214
 
2215
+ #: ../classes/visitor-conditions.php:40
2216
  msgid "Whether the visitor has to be logged in or not in order to see the ads."
2217
  msgstr ""
2218
 
2219
+ #: ../classes/visitor-conditions.php:73
2220
  #, php-format
2221
  msgid ""
2222
  "Pro: Display ads by the available space on the device using the <a href=\"%s\" "
2223
  "target=\"_blank\">Responsive add-on</a>"
2224
  msgstr ""
2225
 
2226
+ #: ../classes/visitor-conditions.php:109
2227
+ msgid "Manual and Troubleshooting"
 
 
 
 
2228
  msgstr ""
2229
 
2230
+ #: ../classes/visitor-conditions.php:140
2231
  msgid "equal"
2232
  msgstr ""
2233
 
2234
+ #: ../classes/visitor-conditions.php:141
2235
  msgid "equal or higher"
2236
  msgstr ""
2237
 
2238
+ #: ../classes/visitor-conditions.php:142
2239
  msgid "equal or lower"
2240
  msgstr ""
2241
 
2242
+ #: ../classes/visitor-conditions.php:174
2243
  msgid "contains"
2244
  msgstr ""
2245
 
2246
+ #: ../classes/visitor-conditions.php:175
2247
  msgid "starts with"
2248
  msgstr ""
2249
 
2250
+ #: ../classes/visitor-conditions.php:176
2251
  msgid "ends with"
2252
  msgstr ""
2253
 
2254
+ #: ../classes/visitor-conditions.php:177
2255
  msgid "matches"
2256
  msgstr ""
2257
 
2258
+ #: ../classes/visitor-conditions.php:178
2259
  msgid "matches regex"
2260
  msgstr ""
2261
 
2262
+ #: ../classes/visitor-conditions.php:179
2263
  msgid "does not contain"
2264
  msgstr ""
2265
 
2266
+ #: ../classes/visitor-conditions.php:180
2267
  msgid "does not start with"
2268
  msgstr ""
2269
 
2270
+ #: ../classes/visitor-conditions.php:181
2271
  msgid "does not end with"
2272
  msgstr ""
2273
 
2274
+ #: ../classes/visitor-conditions.php:182
2275
  msgid "does not match"
2276
  msgstr ""
2277
 
2278
+ #: ../classes/visitor-conditions.php:183
2279
  msgid "does not match regex"
2280
  msgstr ""
2281
 
2287
  msgid "Title:"
2288
  msgstr ""
2289
 
2290
+ #: ../includes/array_ad_conditions.php:39
2291
  msgid "Post Types"
2292
  msgstr ""
2293
 
2294
+ #: ../includes/array_ad_conditions.php:45
2295
  msgid "Categories, Tags and Taxonomies"
2296
  msgstr ""
2297
 
2298
+ #: ../includes/array_ad_conditions.php:46
2299
  msgid ""
2300
  "Choose terms from public category, tag and other taxonomies a post must "
2301
  "belong to in order to have ads."
2302
  msgstr ""
2303
 
2304
+ #: ../includes/array_ad_conditions.php:51
2305
  msgid "Category Archives"
2306
  msgstr ""
2307
 
2308
+ #: ../includes/array_ad_conditions.php:52
2309
  msgid "comma seperated IDs of category archives"
2310
  msgstr ""
2311
 
2312
+ #: ../includes/array_ad_conditions.php:57
2313
  msgid "Individual Posts, Pages and Public Post Types"
2314
  msgstr ""
2315
 
2316
+ #: ../includes/array_ad_conditions.php:63
2317
  msgid "Home Page"
2318
  msgstr ""
2319
 
2320
+ #: ../includes/array_ad_conditions.php:64
2321
  msgid "show on Home page"
2322
  msgstr ""
2323
 
2324
+ #: ../includes/array_ad_conditions.php:68
2325
  msgid "Singular Pages"
2326
  msgstr ""
2327
 
2328
+ #: ../includes/array_ad_conditions.php:69
2329
  msgid "show on singular pages/posts"
2330
  msgstr ""
2331
 
2332
+ #: ../includes/array_ad_conditions.php:73
2333
  msgid "Archive Pages"
2334
  msgstr ""
2335
 
2336
+ #: ../includes/array_ad_conditions.php:74
2337
  msgid "show on any type of archive page (category, tag, author and date)"
2338
  msgstr ""
2339
 
2340
+ #: ../includes/array_ad_conditions.php:78
2341
  msgid "Search Results"
2342
  msgstr ""
2343
 
2344
+ #: ../includes/array_ad_conditions.php:79
2345
  msgid "show on search result pages"
2346
  msgstr ""
2347
 
2348
+ #: ../includes/array_ad_conditions.php:83
2349
  msgid "404 Page"
2350
  msgstr ""
2351
 
2352
+ #: ../includes/array_ad_conditions.php:84
2353
  msgid "show on 404 error page"
2354
  msgstr ""
2355
 
2356
+ #: ../includes/array_ad_conditions.php:88
2357
  msgid "Attachment Pages"
2358
  msgstr ""
2359
 
2360
+ #: ../includes/array_ad_conditions.php:89
2361
  msgid "show on attachment pages"
2362
  msgstr ""
2363
 
2364
+ #: ../includes/array_ad_conditions.php:93
2365
  msgid "Secondary Queries"
2366
  msgstr ""
2367
 
2368
+ #: ../includes/array_ad_conditions.php:94
2369
  msgid "allow ads in secondary queries"
2370
  msgstr ""
2371
 
2372
+ #: ../modules/ad-blocker/admin/admin.php:133
2373
  msgid "The asset folder was rebuilt successfully"
2374
  msgstr ""
2375
 
2376
+ #: ../modules/ad-blocker/admin/admin.php:258
2377
  msgid "Ad blocker fix"
2378
  msgstr ""
2379
 
2380
+ #: ../modules/ad-blocker/admin/admin.php:297
2381
  msgid "There is no writable upload folder"
2382
  msgstr ""
2383
 
2384
+ #: ../modules/ad-blocker/admin/admin.php:319
2385
  #, php-format
2386
  msgid "Unable to rename \"%s\" directory"
2387
  msgstr ""
2388
 
2389
+ #: ../modules/ad-blocker/admin/admin.php:334 ../modules/ad-blocker/admin/admin.
2390
+ #: php:347 ../modules/ad-blocker/admin/admin.php:364
2391
  #, php-format
2392
  msgid "Unable to copy assets to the \"%s\" directory"
2393
  msgstr ""
2394
 
2395
+ #: ../modules/ad-blocker/admin/admin.php:392 ../modules/ad-blocker/admin/admin.
2396
+ #: php:401
2397
  #, php-format
2398
  msgid "We do not have direct write access to the \"%s\" directory"
2399
  msgstr ""
2400
 
2401
+ #: ../modules/ad-blocker/admin/admin.php:410
2402
  msgid "There are no assets to copy"
2403
  msgstr ""
2404
 
2405
+ #: ../modules/ad-blocker/admin/admin.php:466
2406
  #, php-format
2407
  msgid ""
2408
  "Unable to create \"%s\" directory. Is its parent directory writable by the "
2409
  "server?"
2410
  msgstr ""
2411
 
2412
+ #: ../modules/ad-blocker/admin/admin.php:477
2413
  #, php-format
2414
  msgid "Unable to copy files to %s"
2415
  msgstr ""
2416
 
2417
+ #: ../modules/ad-blocker/admin/admin.php:544
2418
  msgid ""
2419
  "Prevents ad block software from breaking your website when blocking asset "
2420
  "files (.js, .css)."
2694
  msgid "Parent Ad"
2695
  msgstr ""
2696
 
2697
+ #: ../admin/class-advanced-ads-admin.php:555
2698
  msgid "Display Conditions"
2699
  msgstr "Anzeigebedingungen"
2700
 
2701
+ #: ../admin/class-advanced-ads-admin.php:1009
2702
  msgid "(display to all)"
2703
  msgstr "(für alle anzeigen)"
2704
 
2705
+ #: ../admin/includes/class-display-condition-callbacks.php:88 ../classes/display-
2706
+ #: conditions.php:189
2707
  msgid "Display here"
2708
  msgstr "Hier anzeigen"
languages/advanced-ads.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: Advanved Ads\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
7
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
8
- "POT-Revision-Date: Mon Feb 08 2016 15:19:26 GMT+0100 (CET)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
11
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
@@ -44,251 +44,264 @@ msgstr ""
44
  msgid "http://webgilde.com"
45
  msgstr ""
46
 
47
- #: ../admin/class-advanced-ads-admin.php:260
48
  msgid "Overview"
49
  msgstr ""
50
 
51
- #: ../admin/class-advanced-ads-admin.php:264 ../admin/class-advanced-ads-admin.
52
- #: php:264 ../admin/includes/class-shortcode-creator.php:77 ../admin/views/ad-
53
  #: group-list-form-row.php:28 ../admin/views/ad-group-list-header.php:5 ..
54
- #: /admin/views/placements.php:80 ../admin/views/placements.php:184 ..
55
- #: /classes/widget.php:89 ../public/class-advanced-ads.php:563
56
  msgid "Ads"
57
  msgstr ""
58
 
59
- #: ../admin/class-advanced-ads-admin.php:268 ../admin/includes/class-shortcode-
60
  #: creator.php:84 ../admin/views/placements.php:73 ../admin/views/placements.php:
61
  #: 177 ../classes/widget.php:82
62
  msgid "Ad Groups"
63
  msgstr ""
64
 
65
- #: ../admin/class-advanced-ads-admin.php:268 ../public/class-advanced-ads.php:536
66
  msgid "Groups"
67
  msgstr ""
68
 
69
- #: ../admin/class-advanced-ads-admin.php:273 ../admin/views/debug.php:14
70
  msgid "Ad Placements"
71
  msgstr ""
72
 
73
- #: ../admin/class-advanced-ads-admin.php:273 ../admin/includes/class-shortcode-
74
  #: creator.php:91 ../admin/views/placements.php:18 ../classes/widget.php:75
75
  msgid "Placements"
76
  msgstr ""
77
 
78
- #: ../admin/class-advanced-ads-admin.php:277
79
  msgid "Advanced Ads Settings"
80
  msgstr ""
81
 
82
- #: ../admin/class-advanced-ads-admin.php:277 ../admin/class-advanced-ads-admin.
83
- #: php:504 ../admin/views/debug.php:11
84
  msgid "Settings"
85
  msgstr ""
86
 
87
- #: ../admin/class-advanced-ads-admin.php:280
88
  msgid "Advanced Ads Debugging"
89
  msgstr ""
90
 
91
- #: ../admin/class-advanced-ads-admin.php:280
92
  msgid "Debug"
93
  msgstr ""
94
 
95
- #: ../admin/class-advanced-ads-admin.php:284 ../admin/class-advanced-ads-admin.
96
- #: php:284
97
  msgid "Advanced Ads Intro"
98
  msgstr ""
99
 
100
- #: ../admin/class-advanced-ads-admin.php:288 ../admin/class-advanced-ads-admin.
101
- #: php:288 ../admin/class-advanced-ads-admin.php:1857
102
  msgid "Support"
103
  msgstr ""
104
 
105
- #: ../admin/class-advanced-ads-admin.php:418 ../admin/class-advanced-ads-admin.
106
- #: php:445
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  msgid "Sorry, you are not allowed to access this feature."
108
  msgstr ""
109
 
110
- #: ../admin/class-advanced-ads-admin.php:431
111
  msgid ""
112
  "You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was "
113
  "deleted?"
114
  msgstr ""
115
 
116
- #: ../admin/class-advanced-ads-admin.php:546
117
  msgid "Ad Type"
118
  msgstr ""
119
 
120
- #: ../admin/class-advanced-ads-admin.php:549
121
  msgid "Ad Parameters"
122
  msgstr ""
123
 
124
- #: ../admin/class-advanced-ads-admin.php:552
125
  msgid "Layout / Output"
126
  msgstr ""
127
 
128
- #: ../admin/class-advanced-ads-admin.php:555
129
  msgid "Display Conditions"
130
  msgstr ""
131
 
132
- #: ../admin/class-advanced-ads-admin.php:558
133
  msgid "Visitor Conditions"
134
  msgstr ""
135
 
136
- #: ../admin/class-advanced-ads-admin.php:769 ../admin/class-advanced-ads-admin.
137
- #: php:770
138
  msgid "Ad updated."
139
  msgstr ""
140
 
141
  #. translators: %s: date and time of the revision
142
- #: ../admin/class-advanced-ads-admin.php:772
143
  #, php-format
144
  msgid "Ad restored to revision from %s"
145
  msgstr ""
146
 
147
- #: ../admin/class-advanced-ads-admin.php:773
148
  msgid "Ad published."
149
  msgstr ""
150
 
151
- #: ../admin/class-advanced-ads-admin.php:774
152
  msgid "Ad saved."
153
  msgstr ""
154
 
155
- #: ../admin/class-advanced-ads-admin.php:775
156
  msgid "Ad submitted."
157
  msgstr ""
158
 
159
- #: ../admin/class-advanced-ads-admin.php:777
160
  #, php-format
161
  msgid "Ad scheduled for: <strong>%1$s</strong>."
162
  msgstr ""
163
 
164
  #. translators: Publish box date format, see http://php.net/date
165
- #: ../admin/class-advanced-ads-admin.php:779
166
  msgid "M j, Y @ G:i"
167
  msgstr ""
168
 
169
- #: ../admin/class-advanced-ads-admin.php:781
170
  msgid "Ad draft updated."
171
  msgstr ""
172
 
173
- #: ../admin/class-advanced-ads-admin.php:800
174
  #, php-format
175
  msgid "%s ad updated."
176
  msgid_plural "%s ads updated."
177
  msgstr[0] ""
178
  msgstr[1] ""
179
 
180
- #: ../admin/class-advanced-ads-admin.php:801
181
  #, php-format
182
  msgid "%s ad not updated, somebody is editing it."
183
  msgid_plural "%s ads not updated, somebody is editing them."
184
  msgstr[0] ""
185
  msgstr[1] ""
186
 
187
- #: ../admin/class-advanced-ads-admin.php:802
188
  #, php-format
189
  msgid "%s ad permanently deleted."
190
  msgid_plural "%s ads permanently deleted."
191
  msgstr[0] ""
192
  msgstr[1] ""
193
 
194
- #: ../admin/class-advanced-ads-admin.php:803
195
  #, php-format
196
  msgid "%s ad moved to the Trash."
197
  msgid_plural "%s ads moved to the Trash."
198
  msgstr[0] ""
199
  msgstr[1] ""
200
 
201
- #: ../admin/class-advanced-ads-admin.php:804
202
  #, php-format
203
  msgid "%s ad restored from the Trash."
204
  msgid_plural "%s ads restored from the Trash."
205
  msgstr[0] ""
206
  msgstr[1] ""
207
 
208
- #: ../admin/class-advanced-ads-admin.php:839 ../admin/views/settings.php:12
209
  msgid "General"
210
  msgstr ""
211
 
212
- #: ../admin/class-advanced-ads-admin.php:851 ../admin/class-advanced-ads-admin.
213
- #: php:955
214
  msgid "Licenses"
215
  msgstr ""
216
 
217
- #: ../admin/class-advanced-ads-admin.php:862
218
  msgid "Disable ads"
219
  msgstr ""
220
 
221
- #: ../admin/class-advanced-ads-admin.php:870
222
  msgid "Hide ads for logged in users"
223
  msgstr ""
224
 
225
- #: ../admin/class-advanced-ads-admin.php:878
226
  msgid "Use advanced JavaScript"
227
  msgstr ""
228
 
229
- #: ../admin/class-advanced-ads-admin.php:886
230
  msgid "Unlimited ad injection"
231
  msgstr ""
232
 
233
- #: ../admin/class-advanced-ads-admin.php:894
234
  msgid "Priority of content injection filter"
235
  msgstr ""
236
 
237
- #: ../admin/class-advanced-ads-admin.php:902
238
  msgid "Hide ads from bots"
239
  msgstr ""
240
 
241
- #: ../admin/class-advanced-ads-admin.php:910
242
  msgid "Disable notices"
243
  msgstr ""
244
 
245
- #: ../admin/class-advanced-ads-admin.php:918
246
  msgid "ID prefix"
247
  msgstr ""
248
 
249
- #: ../admin/class-advanced-ads-admin.php:926
250
  msgid "Remove Widget ID"
251
  msgstr ""
252
 
253
- #: ../admin/class-advanced-ads-admin.php:934
254
  msgid "Allow editors to manage ads"
255
  msgstr ""
256
 
257
- #: ../admin/class-advanced-ads-admin.php:1009
258
  msgid "(display to all)"
259
  msgstr ""
260
 
261
- #: ../admin/class-advanced-ads-admin.php:1010
262
  msgid "Subscriber"
263
  msgstr ""
264
 
265
- #: ../admin/class-advanced-ads-admin.php:1011
266
  msgid "Contributor"
267
  msgstr ""
268
 
269
- #: ../admin/class-advanced-ads-admin.php:1012
270
  msgid "Author"
271
  msgstr ""
272
 
273
- #: ../admin/class-advanced-ads-admin.php:1013
274
  msgid "Editor"
275
  msgstr ""
276
 
277
- #: ../admin/class-advanced-ads-admin.php:1014
278
  msgid "Admin"
279
  msgstr ""
280
 
281
- #: ../admin/class-advanced-ads-admin.php:1022
282
  msgid "Choose the lowest role a user must have in order to not see any ads."
283
  msgstr ""
284
 
285
- #: ../admin/class-advanced-ads-admin.php:1036
286
  msgid ""
287
  "<strong>notice: </strong>the file is currently enabled by an add-on that "
288
  "needs it."
289
  msgstr ""
290
 
291
- #: ../admin/class-advanced-ads-admin.php:1039
292
  #, php-format
293
  msgid ""
294
  "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">here</a>)."
@@ -296,7 +309,7 @@ msgid ""
296
  "from this file."
297
  msgstr ""
298
 
299
- #: ../admin/class-advanced-ads-admin.php:1052
300
  msgid ""
301
  "Some plugins and themes trigger ad injection where it shouldn’t happen. "
302
  "Therefore, Advanced Ads ignores injected placements on non-singular pages "
@@ -305,19 +318,19 @@ msgid ""
305
  "on archive pages AT YOUR OWN RISK."
306
  msgstr ""
307
 
308
- #: ../admin/class-advanced-ads-admin.php:1068
309
  msgid ""
310
  "Please check your post content. A priority of 10 and below might cause "
311
  "issues (wpautop function might run twice)."
312
  msgstr ""
313
 
314
- #: ../admin/class-advanced-ads-admin.php:1070
315
  msgid ""
316
  "Play with this value in order to change the priority of the injected ads "
317
  "compared to other auto injected elements in the post content."
318
  msgstr ""
319
 
320
- #: ../admin/class-advanced-ads-admin.php:1084
321
  #, php-format
322
  msgid ""
323
  "Hide ads from crawlers, bots and empty user agents. Also prevents counting "
@@ -325,115 +338,126 @@ msgid ""
325
  "Add-On</a>."
326
  msgstr ""
327
 
328
- #: ../admin/class-advanced-ads-admin.php:1085
329
  msgid ""
330
  "Disabling this option only makes sense if your ads contain content you want "
331
  "to display to bots (like search engines) or your site is cached and bots "
332
  "could create a cached version without the ads."
333
  msgstr ""
334
 
335
- #: ../admin/class-advanced-ads-admin.php:1098
336
  msgid ""
337
  "Disable internal notices like tips, tutorials, email newsletters and update "
338
  "notices. Disabling notices is recommended if you run multiple blogs with "
339
  "Advanced Ads already."
340
  msgstr ""
341
 
342
- #: ../admin/class-advanced-ads-admin.php:1120
343
  msgid ""
344
  "Prefix of class or id attributes in the frontend. Change it if you don’t "
345
  "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
346
  "need to <strong>rewrite css rules afterwards</strong>."
347
  msgstr ""
348
 
349
- #: ../admin/class-advanced-ads-admin.php:1141
350
  msgid ""
351
  "Remove the ID attribute from widgets in order to not make them an easy "
352
  "target of ad blockers."
353
  msgstr ""
354
 
355
- #: ../admin/class-advanced-ads-admin.php:1160
 
 
 
 
 
 
356
  msgid "Allow editors to also manage and publish ads."
357
  msgstr ""
358
 
359
- #: ../admin/class-advanced-ads-admin.php:1161
360
  #, php-format
361
  msgid ""
362
  "You can assign different ad-related roles on a user basis with <a href=\"%s\" "
363
  "target=\"_blank\">Advanced Ads Pro</a>."
364
  msgstr ""
365
 
366
- #: ../admin/class-advanced-ads-admin.php:1248
367
  msgid "Ad Details"
368
  msgstr ""
369
 
370
- #: ../admin/class-advanced-ads-admin.php:1249
371
  msgid "Ad Planning"
372
  msgstr ""
373
 
374
- #: ../admin/class-advanced-ads-admin.php:1384
375
  msgid "Ad Settings"
376
  msgstr ""
377
 
378
- #: ../admin/class-advanced-ads-admin.php:1463 ../admin/views/overview.php:23
379
  msgid "Ads Dashboard"
380
  msgstr ""
381
 
382
- #: ../admin/class-advanced-ads-admin.php:1475
383
  msgid "From the ad optimization universe"
384
  msgstr ""
385
 
386
- #: ../admin/class-advanced-ads-admin.php:1484
387
  msgid "Advanced Ads Tutorials"
388
  msgstr ""
389
 
390
- #: ../admin/class-advanced-ads-admin.php:1495
391
  #, php-format
392
  msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
393
  msgstr ""
394
 
395
- #: ../admin/class-advanced-ads-admin.php:1506
396
  msgid "plugin manual and homepage"
397
  msgstr ""
398
 
399
- #: ../admin/class-advanced-ads-admin.php:1513
400
  msgid "Get the tutorial via email"
401
  msgstr ""
402
 
403
- #: ../admin/class-advanced-ads-admin.php:1520
404
  msgid "Get AdSense tips via email"
405
  msgstr ""
406
 
407
- #: ../admin/class-advanced-ads-admin.php:1601
 
 
 
 
 
408
  msgid "Error while trying to register the license. Please contact support."
409
  msgstr ""
410
 
411
- #: ../admin/class-advanced-ads-admin.php:1607
412
  msgid "Please enter and save a valid license key first."
413
  msgstr ""
414
 
415
- #: ../admin/class-advanced-ads-admin.php:1635
416
  msgid "This is the bundle license key."
417
  msgstr ""
418
 
419
- #: ../admin/class-advanced-ads-admin.php:1636
420
  msgid "This is not the correct key for this add-on."
421
  msgstr ""
422
 
423
- #: ../admin/class-advanced-ads-admin.php:1639
424
  #, php-format
425
  msgid "License is invalid. Reason: %s"
426
  msgstr ""
427
 
428
- #: ../admin/class-advanced-ads-admin.php:1683
429
  msgid "Error while trying to disable the license. Please contact support."
430
  msgstr ""
431
 
432
- #: ../admin/class-advanced-ads-admin.php:1714
433
  msgid "License couldn’t be deactivated. Please try again later or contact support."
434
  msgstr ""
435
 
436
- #: ../admin/class-advanced-ads-admin.php:1861
437
  msgid "Add-Ons"
438
  msgstr ""
439
 
@@ -447,211 +471,81 @@ msgstr ""
447
  msgid "starts %s"
448
  msgstr ""
449
 
450
- #: ../admin/includes/class-ad-groups-list.php:169 ../admin/views/ad-list-timing-
451
- #: column.php:7
452
  #, php-format
453
  msgid "expires %s"
454
  msgstr ""
455
 
456
- #: ../admin/includes/class-ad-groups-list.php:171 ../admin/views/ad-list-timing-
457
- #: column.php:9
458
  #, php-format
459
  msgid "<strong>expired</strong> %s"
460
  msgstr ""
461
 
462
- #: ../admin/includes/class-ad-groups-list.php:184
463
  msgid "all published ads are displayed"
464
  msgstr ""
465
 
466
- #: ../admin/includes/class-ad-groups-list.php:186
467
  #, php-format
468
  msgid "up to %d ads displayed"
469
  msgstr ""
470
 
471
- #: ../admin/includes/class-ad-groups-list.php:189 ../admin/views/ad-group-list-
472
  #: form-row.php:37
473
  msgid "No ads assigned"
474
  msgstr ""
475
 
476
- #: ../admin/includes/class-ad-groups-list.php:237
477
  msgid "Random ads"
478
  msgstr ""
479
 
480
- #: ../admin/includes/class-ad-groups-list.php:238
481
  msgid "Display random ads based on ad weight"
482
  msgstr ""
483
 
484
- #: ../admin/includes/class-ad-groups-list.php:241
485
  msgid "Ordered ads"
486
  msgstr ""
487
 
488
- #: ../admin/includes/class-ad-groups-list.php:242
489
  msgid "Display ads with the highest ad weight first"
490
  msgstr ""
491
 
492
- #: ../admin/includes/class-ad-groups-list.php:261 ../public/class-advanced-ads.
493
  #: php:567
494
  msgid "Edit"
495
  msgstr ""
496
 
497
- #: ../admin/includes/class-ad-groups-list.php:262
498
  msgid "Usage"
499
  msgstr ""
500
 
501
- #: ../admin/includes/class-ad-groups-list.php:271
502
  msgid "Delete"
503
  msgstr ""
504
 
505
- #: ../admin/includes/class-ad-groups-list.php:292
506
  msgid "Invalid Ad Group"
507
  msgstr ""
508
 
509
- #: ../admin/includes/class-ad-groups-list.php:297
510
  msgid "You don’t have permission to change the ad groups"
511
  msgstr ""
512
 
513
- #: ../admin/includes/class-display-condition-callbacks.php:28
514
- msgid "Display on all public <strong>post types</strong>."
515
- msgstr ""
516
-
517
- #: ../admin/includes/class-display-condition-callbacks.php:31 ..
518
- #: /includes/array_ad_conditions.php:39
519
- msgid "Choose the public post types on which to display the ad."
520
- msgstr ""
521
-
522
- #: ../admin/includes/class-display-condition-callbacks.php:86
523
- msgid "Display for all <strong>categories, tags and taxonomies</strong>."
524
- msgstr ""
525
-
526
- #: ../admin/includes/class-display-condition-callbacks.php:87
527
- msgid "Display here"
528
- msgstr ""
529
-
530
- #: ../admin/includes/class-display-condition-callbacks.php:87
531
- msgid ""
532
- "Choose terms from public categories, tags and other taxonomies a post must "
533
- "belong to in order to have ads."
534
- msgstr ""
535
-
536
- #: ../admin/includes/class-display-condition-callbacks.php:104 ..
537
- #: /admin/includes/class-display-condition-callbacks.php:217
538
- msgid "Hide from here"
539
- msgstr ""
540
-
541
- #: ../admin/includes/class-display-condition-callbacks.php:104
542
- msgid ""
543
- "Choose the terms from public categories, tags and other taxonomies a post "
544
- "must belong to hide the ad from it."
545
- msgstr ""
546
-
547
- #: ../admin/includes/class-display-condition-callbacks.php:149
548
- msgctxt "display the terms search field on ad edit page"
549
- msgid "add more terms"
550
- msgstr ""
551
-
552
- #: ../admin/includes/class-display-condition-callbacks.php:150
553
- msgid "add more terms"
554
- msgstr ""
555
-
556
- #: ../admin/includes/class-display-condition-callbacks.php:153
557
- msgid "term name or id"
558
- msgstr ""
559
-
560
- #: ../admin/includes/class-display-condition-callbacks.php:197
561
- msgid "Display on all <strong>category archive pages</strong>."
562
- msgstr ""
563
-
564
- #: ../admin/includes/class-display-condition-callbacks.php:200
565
- msgid ""
566
- "Choose the terms from public categories, tags and other taxonomies on "
567
- "which's archive page ads can appear"
568
- msgstr ""
569
-
570
- #: ../admin/includes/class-display-condition-callbacks.php:217
571
- msgid ""
572
- "Choose the terms from public categories, tags and other taxonomies on "
573
- "which's archive pages ads are hidden."
574
- msgstr ""
575
-
576
- #: ../admin/includes/class-display-condition-callbacks.php:239
577
- msgid ""
578
- "Display on all <strong>individual posts, pages</strong> and public post type "
579
- "pages"
580
- msgstr ""
581
-
582
- #: ../admin/includes/class-display-condition-callbacks.php:242 ..
583
- #: /includes/array_ad_conditions.php:57
584
- msgid ""
585
- "Choose on which individual posts, pages and public post type pages you want "
586
- "to display or hide ads."
587
- msgstr ""
588
-
589
- #: ../admin/includes/class-display-condition-callbacks.php:259
590
- msgid "What should happen with ads on the list of individual posts below?"
591
- msgstr ""
592
-
593
- #: ../admin/includes/class-display-condition-callbacks.php:260
594
- msgid "ignore the list"
595
- msgstr ""
596
-
597
- #: ../admin/includes/class-display-condition-callbacks.php:261
598
- msgid "display the ad only there"
599
- msgstr ""
600
-
601
- #: ../admin/includes/class-display-condition-callbacks.php:262
602
- msgid "hide the ad here"
603
- msgstr ""
604
-
605
- #: ../admin/includes/class-display-condition-callbacks.php:270
606
- msgid "Update warning"
607
- msgstr ""
608
-
609
- #: ../admin/includes/class-display-condition-callbacks.php:271
610
- msgid ""
611
- "Due to some conflicts before version 1.2.6, it is from now on only possible "
612
- "to choose either individual pages to include or exclude an ad, but not both "
613
- "with mixed settings. It seems you are still using mixed settings on this "
614
- "page. Please consider changing your setup for this ad."
615
- msgstr ""
616
-
617
- #: ../admin/includes/class-display-condition-callbacks.php:272
618
- msgid "Your old values are:"
619
- msgstr ""
620
-
621
- #: ../admin/includes/class-display-condition-callbacks.php:273
622
- msgid "Post IDs the ad is displayed on:"
623
- msgstr ""
624
-
625
- #: ../admin/includes/class-display-condition-callbacks.php:274
626
- msgid "Post IDs the ad is hidden from:"
627
- msgstr ""
628
-
629
- #: ../admin/includes/class-display-condition-callbacks.php:275
630
- msgid ""
631
- "Below you find the pages the ad is displayed on. If this is ok, just save "
632
- "the ad. If not, please update your settings."
633
- msgstr ""
634
-
635
- #: ../admin/includes/class-display-condition-callbacks.php:318
636
- msgid "new"
637
- msgstr ""
638
-
639
- #: ../admin/includes/class-display-condition-callbacks.php:320
640
- msgid "type the title"
641
- msgstr ""
642
-
643
- #: ../admin/includes/class-notices.php:364
644
  #, php-format
645
  msgid ""
646
  "You don’t seem to have an email address. Please use <a href=\"%s\" "
647
  "target=\"_blank\">this form</a> to sign up."
648
  msgstr ""
649
 
650
- #: ../admin/includes/class-notices.php:382
651
  msgid "How embarrassing. The email server seems to be down. Please try again later."
652
  msgstr ""
653
 
654
- #: ../admin/includes/class-notices.php:387
655
  #, php-format
656
  msgid ""
657
  "Please check your email (%s) for the confirmation message. If you didn’t "
@@ -715,7 +609,7 @@ msgstr ""
715
 
716
  #: ../admin/includes/class-overview-widgets.php:92 ../admin/includes/notices.php:
717
  #: 35 ../admin/views/intro.php:73 ../admin/views/notices/inline.php:3 ..
718
- #: /admin/views/notices/subscribe.php:3
719
  msgid "Subscribe me now"
720
  msgstr ""
721
 
@@ -823,92 +717,88 @@ msgid "beautiful stats for all or single ads"
823
  msgstr ""
824
 
825
  #: ../admin/includes/class-overview-widgets.php:188
826
- msgid "get stats for predefined and custom periods"
827
- msgstr ""
828
-
829
- #: ../admin/includes/class-overview-widgets.php:189
830
  msgid "group stats by day, week or month"
831
  msgstr ""
832
 
833
- #: ../admin/includes/class-overview-widgets.php:191
834
  msgid "Get the Tracking add-on"
835
  msgstr ""
836
 
837
- #: ../admin/includes/class-overview-widgets.php:199
838
  msgid "Display ads based on the size of your visitor’s browser or device."
839
  msgstr ""
840
 
841
- #: ../admin/includes/class-overview-widgets.php:200
842
  msgid "set a range (from … to …) pixels for the browser size"
843
  msgstr ""
844
 
845
- #: ../admin/includes/class-overview-widgets.php:201
846
  msgid "set custom sizes for AdSense responsive ads"
847
  msgstr ""
848
 
849
- #: ../admin/includes/class-overview-widgets.php:202
850
  msgid "list all ads by their responsive settings"
851
  msgstr ""
852
 
853
- #: ../admin/includes/class-overview-widgets.php:204
854
  msgid "Get the Responsive add-on"
855
  msgstr ""
856
 
857
- #: ../admin/includes/class-overview-widgets.php:212
858
  msgid "Target visitors by their geo location."
859
  msgstr ""
860
 
861
- #: ../admin/includes/class-overview-widgets.php:214
862
  msgid "Get the Geo Targeting add-on"
863
  msgstr ""
864
 
865
- #: ../admin/includes/class-overview-widgets.php:222 ../admin/views/ad-info-top.
866
  #: php:30
867
  msgid ""
868
  "Fix ads to the browser while users are scrolling and create best performing "
869
  "anchor ads."
870
  msgstr ""
871
 
872
- #: ../admin/includes/class-overview-widgets.php:223
873
  msgid "position ads that don’t scroll with the screen"
874
  msgstr ""
875
 
876
- #: ../admin/includes/class-overview-widgets.php:224
877
  msgid "build anchor ads not only on mobile devices"
878
  msgstr ""
879
 
880
- #: ../admin/includes/class-overview-widgets.php:226 ../admin/views/ad-info-top.
881
  #: php:32
882
  msgid "Get the Sticky add-on"
883
  msgstr ""
884
 
885
- #: ../admin/includes/class-overview-widgets.php:234 ../admin/views/ad-info-top.
886
  #: php:37
887
  msgid "Display content and ads in layers and popups on custom events."
888
  msgstr ""
889
 
890
- #: ../admin/includes/class-overview-widgets.php:235
891
  msgid "display a popup after a user interaction like scrolling"
892
  msgstr ""
893
 
894
- #: ../admin/includes/class-overview-widgets.php:236
895
  msgid "optional background overlay"
896
  msgstr ""
897
 
898
- #: ../admin/includes/class-overview-widgets.php:237
899
  msgid "allow users to close the popup"
900
  msgstr ""
901
 
902
- #: ../admin/includes/class-overview-widgets.php:239 ../admin/views/ad-info-top.
903
  #: php:39
904
  msgid "Get the PopUp and Layer add-on"
905
  msgstr ""
906
 
907
- #: ../admin/includes/class-overview-widgets.php:247
908
  msgid "Create a beautiful and simple slider from your ads."
909
  msgstr ""
910
 
911
- #: ../admin/includes/class-overview-widgets.php:249
912
  msgid "Get the Slider add-on"
913
  msgstr ""
914
 
@@ -949,18 +839,18 @@ msgid ""
949
  "and Advanced Ads from my dedicated newsletter."
950
  msgstr ""
951
 
952
- #: ../admin/includes/notices.php:56
953
  msgid ""
954
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
955
  "missing</strong>."
956
  msgstr ""
957
 
958
- #: ../admin/includes/notices.php:56
959
  #, php-format
960
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
961
  msgstr ""
962
 
963
- #: ../admin/includes/notices.php:62
964
  #, php-format
965
  msgid ""
966
  "One or more licenses for your <strong>Advanced Ads add-ons are expiring "
@@ -969,7 +859,7 @@ msgid ""
969
  "target=\"_blank\">the add-on page</a>."
970
  msgstr ""
971
 
972
- #: ../admin/includes/notices.php:68 ../admin/views/support.php:38
973
  #, php-format
974
  msgid ""
975
  "<strong>Advanced Ads</strong> license(s) expired. Support and updates are "
@@ -977,7 +867,7 @@ msgid ""
977
  "information."
978
  msgstr ""
979
 
980
- #: ../admin/includes/notices.php:74
981
  #, php-format
982
  msgid ""
983
  "<img src=\"%3$s\" alt=\"Thomas\" width=\"80\" height=\"115\" class=\"advads-review-"
@@ -1004,53 +894,31 @@ msgctxt "shortcode creator"
1004
  msgid "Cancel"
1005
  msgstr ""
1006
 
1007
- #: ../admin/views/ad-display-metabox.php:8
1008
- msgid "Choose where to display the ad and where to hide it."
1009
  msgstr ""
1010
 
1011
- #: ../admin/views/ad-display-metabox.php:10
1012
- msgid "Display ad everywhere"
1013
- msgstr ""
1014
-
1015
- #: ../admin/views/ad-display-metabox.php:11
1016
- msgid "Set display conditions"
1017
  msgstr ""
1018
 
1019
- #: ../admin/views/ad-display-metabox.php:15
1020
  msgid "If you want to display the ad everywhere, don't do anything here. "
1021
  msgstr ""
1022
 
1023
- #: ../admin/views/ad-display-metabox.php:16
1024
- msgid "The fewer conditions you enter, the better the performance will be."
1025
- msgstr ""
1026
-
1027
- #: ../admin/views/ad-display-metabox.php:17
1028
- #, php-format
1029
- msgid ""
1030
- "Learn more about display conditions from the <a href=\"%s\" "
1031
- "target=\"_blank\">manual</a>."
1032
- msgstr ""
1033
-
1034
- #: ../admin/views/ad-display-metabox.php:34
1035
- msgid "Other conditions"
1036
- msgstr ""
1037
-
1038
- #: ../admin/views/ad-display-metabox.php:52
1039
- msgctxt "button label"
1040
- msgid "on"
1041
- msgstr ""
1042
-
1043
- #: ../admin/views/ad-display-metabox.php:56
1044
- msgctxt "button label"
1045
- msgid "off"
1046
  msgstr ""
1047
 
1048
- #: ../admin/views/ad-display-metabox.php:71
1049
- msgid "show debug output"
 
1050
  msgstr ""
1051
 
1052
- #: ../admin/views/ad-display-metabox.php:72
1053
- msgid "Values saved for this ad in the database (post metas)"
 
1054
  msgstr ""
1055
 
1056
  #: ../admin/views/ad-group-edit.php:14
@@ -1093,7 +961,7 @@ msgid "Description"
1093
  msgstr ""
1094
 
1095
  #: ../admin/views/ad-group-list-form-row.php:7 ../admin/views/placements.php:23 ..
1096
- #: /modules/gadsense/admin/views/adsense-ad-parameters.php:48
1097
  msgid "Type"
1098
  msgstr ""
1099
 
@@ -1128,12 +996,12 @@ msgid "Details"
1128
  msgstr ""
1129
 
1130
  #: ../admin/views/ad-group-list-row.php:8 ../admin/views/ad-group.php:63 ..
1131
- #: /admin/views/ad-info.php:3 ../admin/views/placements.php:58
1132
  msgid "shortcode"
1133
  msgstr ""
1134
 
1135
  #: ../admin/views/ad-group-list-row.php:11 ../admin/views/ad-group.php:66 ..
1136
- #: /admin/views/placements.php:61
1137
  msgid "template"
1138
  msgstr ""
1139
 
@@ -1398,49 +1266,49 @@ msgid ""
1398
  "with a space"
1399
  msgstr ""
1400
 
1401
- #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:54
1402
  msgid "size:"
1403
  msgstr ""
1404
 
1405
- #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:55
1406
  msgid "width"
1407
  msgstr ""
1408
 
1409
- #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:56
1410
  msgid "height"
1411
  msgstr ""
1412
 
1413
- #: ../admin/views/ad-submitbox-meta.php:4
1414
  msgid "Set expiry date"
1415
  msgstr ""
1416
 
1417
- #: ../admin/views/ad-submitbox-meta.php:10
1418
  msgid "Month"
1419
  msgstr ""
1420
 
1421
- #: ../admin/views/ad-submitbox-meta.php:14
1422
  #, php-format
1423
  msgctxt "1: month number (01, 02, etc.), 2: month abbreviation"
1424
  msgid "%1$s-%2$s"
1425
  msgstr ""
1426
 
1427
- #: ../admin/views/ad-submitbox-meta.php:19
1428
  msgid "Day"
1429
  msgstr ""
1430
 
1431
- #: ../admin/views/ad-submitbox-meta.php:20
1432
  msgid "Year"
1433
  msgstr ""
1434
 
1435
- #: ../admin/views/ad-submitbox-meta.php:21
1436
  msgid "Hour"
1437
  msgstr ""
1438
 
1439
- #: ../admin/views/ad-submitbox-meta.php:22
1440
  msgid "Minute"
1441
  msgstr ""
1442
 
1443
- #: ../admin/views/ad-submitbox-meta.php:27
1444
  #, php-format
1445
  msgctxt "order of expiry date fields 1: month, 2: day, 3: year, 4: hour, 5: minute"
1446
  msgid "%1$s %2$s, %3$s @ %4$s %5$s"
@@ -1452,10 +1320,6 @@ msgid ""
1452
  "websites."
1453
  msgstr ""
1454
 
1455
- #: ../admin/views/ad-visitor-metabox.php:4
1456
- msgid "Manual"
1457
- msgstr ""
1458
-
1459
  #: ../admin/views/ad-visitor-metabox.php:28
1460
  msgid ""
1461
  "Visitor conditions limit the number of users who can see your ad. There is "
@@ -1469,10 +1333,6 @@ msgid ""
1469
  "if dynamic features get cached."
1470
  msgstr ""
1471
 
1472
- #: ../admin/views/ad-visitor-metabox.php:34
1473
- msgid "New condition"
1474
- msgstr ""
1475
-
1476
  #: ../admin/views/ad-visitor-metabox.php:37
1477
  msgctxt "visitor condition connector"
1478
  msgid "and"
@@ -1483,36 +1343,28 @@ msgctxt "visitor condition connector"
1483
  msgid "or"
1484
  msgstr ""
1485
 
1486
- #: ../admin/views/ad-visitor-metabox.php:41
1487
- msgid "-- choose a condition --"
1488
- msgstr ""
1489
-
1490
- #: ../admin/views/ad-visitor-metabox.php:46
1491
- msgid "add"
1492
- msgstr ""
1493
-
1494
- #: ../admin/views/ad-visitor-metabox.php:50
1495
  #, php-format
1496
  msgid ""
1497
  "Define the exact browser width for which an ad should be visible using the "
1498
  "<a href=\"%s\" target=\"_blank\">Responsive add-on</a>."
1499
  msgstr ""
1500
 
1501
- #: ../admin/views/ad-visitor-metabox.php:108
1502
  msgid ""
1503
  "The visitor conditions below are deprecated. Please use the new version of "
1504
  "visitor conditions to replace it."
1505
  msgstr ""
1506
 
1507
- #: ../admin/views/ad-visitor-metabox.php:114
1508
  msgid "Display on all devices"
1509
  msgstr ""
1510
 
1511
- #: ../admin/views/ad-visitor-metabox.php:118
1512
  msgid "only on mobile devices"
1513
  msgstr ""
1514
 
1515
- #: ../admin/views/ad-visitor-metabox.php:122
1516
  msgid "not on mobile devices"
1517
  msgstr ""
1518
 
@@ -1897,35 +1749,17 @@ msgstr ""
1897
  msgid "the company behind Advanced Ads"
1898
  msgstr ""
1899
 
1900
- #: ../admin/views/support.php:9
1901
- msgid "Email was successfully sent."
1902
- msgstr ""
1903
-
1904
- #: ../admin/views/support.php:11
1905
- msgid "Search"
1906
- msgstr ""
1907
-
1908
- #: ../admin/views/support.php:12
1909
- msgid ""
1910
- "Use the following form to search for solutions in the manual on "
1911
- "wpadvancedads.com"
1912
- msgstr ""
1913
-
1914
- #: ../admin/views/support.php:15
1915
- msgid "search"
1916
- msgstr ""
1917
-
1918
- #: ../admin/views/support.php:18
1919
  msgid "Possible Issues"
1920
  msgstr ""
1921
 
1922
- #: ../admin/views/support.php:19
1923
  msgid ""
1924
  "Please fix the red highlighted issues on this page or try to understand "
1925
  "their consequences before contacting support."
1926
  msgstr ""
1927
 
1928
- #: ../admin/views/support.php:23
1929
  #, php-format
1930
  msgid ""
1931
  "Your <strong>PHP version (%s) is too low</strong>. Advanced Ads is built for "
@@ -1933,7 +1767,7 @@ msgid ""
1933
  "Please ask your hosting provider for more information."
1934
  msgstr ""
1935
 
1936
- #: ../admin/views/support.php:26
1937
  #, php-format
1938
  msgid ""
1939
  "Your <strong>website uses cache</strong>. Some dynamic features like ad "
@@ -1942,22 +1776,22 @@ msgid ""
1942
  "ads dynamically."
1943
  msgstr ""
1944
 
1945
- #: ../admin/views/support.php:29
1946
  msgid "There is a <strong>new WordPress version available</strong>. Please update."
1947
  msgstr ""
1948
 
1949
- #: ../admin/views/support.php:32
1950
  msgid "There are <strong>plugin updates available</strong>. Please update."
1951
  msgstr ""
1952
 
1953
- #: ../admin/views/support.php:35
1954
  #, php-format
1955
  msgid ""
1956
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
1957
  "missing</strong>. Please add valid license keys <a href=\"%s\">here</a>."
1958
  msgstr ""
1959
 
1960
- #: ../admin/views/support.php:41
1961
  #, php-format
1962
  msgid ""
1963
  "<strong>Autoptimize plugin detected</strong>. While this plugin is great for "
@@ -1966,44 +1800,62 @@ msgid ""
1966
  "support for Autoptimize."
1967
  msgstr ""
1968
 
1969
- #: ../admin/views/support.php:44
1970
  #, php-format
1971
  msgid ""
1972
  "Plugins that are known to cause (partial) problems: <strong>%1$s</strong>. "
1973
  "<a href=\"%2$s\" target=\"_blank\">Learn more</a>."
1974
  msgstr ""
1975
 
1976
- #: ../admin/views/support.php:48
1977
  #, php-format
1978
  msgid ""
1979
  "Ads are disabled for all or some pages. See \"disabled ads\" in <a "
1980
  "href=\"%s\">settings</a>."
1981
  msgstr ""
1982
 
1983
- #: ../admin/views/support.php:59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1984
  msgid "Contact"
1985
  msgstr ""
1986
 
1987
- #: ../admin/views/support.php:60
1988
  #, php-format
1989
  msgid ""
1990
  "Please search the manual for a solution and take a look at <a href=\"%s\" "
1991
  "target=\"_blank\">Ads not showing up?</a> before contacting me for help."
1992
  msgstr ""
1993
 
1994
- #: ../admin/views/support.php:65
 
 
 
 
1995
  msgid "your email"
1996
  msgstr ""
1997
 
1998
- #: ../admin/views/support.php:69
1999
  msgid "your name"
2000
  msgstr ""
2001
 
2002
- #: ../admin/views/support.php:73
2003
  msgid "your message"
2004
  msgstr ""
2005
 
2006
- #: ../admin/views/support.php:78
2007
  msgid "send"
2008
  msgstr ""
2009
 
@@ -2013,6 +1865,13 @@ msgid ""
2013
  "ad setup."
2014
  msgstr ""
2015
 
 
 
 
 
 
 
 
2016
  #: ../classes/ad_placements.php:31
2017
  msgid "Manual Placement"
2018
  msgstr ""
@@ -2165,6 +2024,120 @@ msgid ""
2165
  "misfortunate formats in forms, but should not damage features."
2166
  msgstr ""
2167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2168
  #: ../classes/EDD_SL_Plugin_Updater.php:177
2169
  #, php-format
2170
  msgid ""
@@ -2283,88 +2256,32 @@ msgstr ""
2283
  msgid "Title:"
2284
  msgstr ""
2285
 
2286
- #: ../includes/array_ad_conditions.php:38
2287
  msgid "Post Types"
2288
  msgstr ""
2289
 
2290
- #: ../includes/array_ad_conditions.php:44
2291
  msgid "Categories, Tags and Taxonomies"
2292
  msgstr ""
2293
 
2294
- #: ../includes/array_ad_conditions.php:45
2295
  msgid ""
2296
  "Choose terms from public category, tag and other taxonomies a post must "
2297
  "belong to in order to have ads."
2298
  msgstr ""
2299
 
2300
- #: ../includes/array_ad_conditions.php:50
2301
  msgid "Category Archives"
2302
  msgstr ""
2303
 
2304
- #: ../includes/array_ad_conditions.php:51
2305
  msgid "comma seperated IDs of category archives"
2306
  msgstr ""
2307
 
2308
- #: ../includes/array_ad_conditions.php:56
2309
  msgid "Individual Posts, Pages and Public Post Types"
2310
  msgstr ""
2311
 
2312
- #: ../includes/array_ad_conditions.php:62
2313
- msgid "Home Page"
2314
- msgstr ""
2315
-
2316
- #: ../includes/array_ad_conditions.php:63
2317
- msgid "show on Home page"
2318
- msgstr ""
2319
-
2320
- #: ../includes/array_ad_conditions.php:67
2321
- msgid "Singular Pages"
2322
- msgstr ""
2323
-
2324
- #: ../includes/array_ad_conditions.php:68
2325
- msgid "show on singular pages/posts"
2326
- msgstr ""
2327
-
2328
- #: ../includes/array_ad_conditions.php:72
2329
- msgid "Archive Pages"
2330
- msgstr ""
2331
-
2332
- #: ../includes/array_ad_conditions.php:73
2333
- msgid "show on any type of archive page (category, tag, author and date)"
2334
- msgstr ""
2335
-
2336
- #: ../includes/array_ad_conditions.php:77
2337
- msgid "Search Results"
2338
- msgstr ""
2339
-
2340
- #: ../includes/array_ad_conditions.php:78
2341
- msgid "show on search result pages"
2342
- msgstr ""
2343
-
2344
- #: ../includes/array_ad_conditions.php:82
2345
- msgid "404 Page"
2346
- msgstr ""
2347
-
2348
- #: ../includes/array_ad_conditions.php:83
2349
- msgid "show on 404 error page"
2350
- msgstr ""
2351
-
2352
- #: ../includes/array_ad_conditions.php:87
2353
- msgid "Attachment Pages"
2354
- msgstr ""
2355
-
2356
- #: ../includes/array_ad_conditions.php:88
2357
- msgid "show on attachment pages"
2358
- msgstr ""
2359
-
2360
- #: ../includes/array_ad_conditions.php:92
2361
- msgid "Secondary Queries"
2362
- msgstr ""
2363
-
2364
- #: ../includes/array_ad_conditions.php:93
2365
- msgid "allow ads in secondary queries"
2366
- msgstr ""
2367
-
2368
  #: ../modules/ad-blocker/admin/admin.php:133
2369
  msgid "The asset folder was rebuilt successfully"
2370
  msgstr ""
5
  "Project-Id-Version: Advanved Ads\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
7
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
8
+ "POT-Revision-Date: Mon Mar 14 2016 09:55:30 GMT+0100 (CET)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
11
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
44
  msgid "http://webgilde.com"
45
  msgstr ""
46
 
47
+ #: ../admin/class-advanced-ads-admin.php:265
48
  msgid "Overview"
49
  msgstr ""
50
 
51
+ #: ../admin/class-advanced-ads-admin.php:269 ../admin/class-advanced-ads-admin.
52
+ #: php:269 ../admin/includes/class-shortcode-creator.php:77 ../admin/views/ad-
53
  #: group-list-form-row.php:28 ../admin/views/ad-group-list-header.php:5 ..
54
+ #: admin/views/placements.php:80 ../admin/views/placements.php:184 ..
55
+ #: classes/widget.php:89 ../public/class-advanced-ads.php:563
56
  msgid "Ads"
57
  msgstr ""
58
 
59
+ #: ../admin/class-advanced-ads-admin.php:273 ../admin/includes/class-shortcode-
60
  #: creator.php:84 ../admin/views/placements.php:73 ../admin/views/placements.php:
61
  #: 177 ../classes/widget.php:82
62
  msgid "Ad Groups"
63
  msgstr ""
64
 
65
+ #: ../admin/class-advanced-ads-admin.php:273 ../public/class-advanced-ads.php:536
66
  msgid "Groups"
67
  msgstr ""
68
 
69
+ #: ../admin/class-advanced-ads-admin.php:278 ../admin/views/debug.php:14
70
  msgid "Ad Placements"
71
  msgstr ""
72
 
73
+ #: ../admin/class-advanced-ads-admin.php:278 ../admin/includes/class-shortcode-
74
  #: creator.php:91 ../admin/views/placements.php:18 ../classes/widget.php:75
75
  msgid "Placements"
76
  msgstr ""
77
 
78
+ #: ../admin/class-advanced-ads-admin.php:282
79
  msgid "Advanced Ads Settings"
80
  msgstr ""
81
 
82
+ #: ../admin/class-advanced-ads-admin.php:282 ../admin/class-advanced-ads-admin.
83
+ #: php:531 ../admin/views/debug.php:11
84
  msgid "Settings"
85
  msgstr ""
86
 
87
+ #: ../admin/class-advanced-ads-admin.php:285
88
  msgid "Advanced Ads Debugging"
89
  msgstr ""
90
 
91
+ #: ../admin/class-advanced-ads-admin.php:285
92
  msgid "Debug"
93
  msgstr ""
94
 
95
+ #: ../admin/class-advanced-ads-admin.php:289 ../admin/class-advanced-ads-admin.
96
+ #: php:289
97
  msgid "Advanced Ads Intro"
98
  msgstr ""
99
 
100
+ #: ../admin/class-advanced-ads-admin.php:293 ../admin/class-advanced-ads-admin.
101
+ #: php:293 ../admin/class-advanced-ads-admin.php:1951
102
  msgid "Support"
103
  msgstr ""
104
 
105
+ #: ../admin/class-advanced-ads-admin.php:406
106
+ msgid "Please enter a message"
107
+ msgstr ""
108
+
109
+ #: ../admin/class-advanced-ads-admin.php:416
110
+ #, php-format
111
+ msgid "Email could NOT be sent. Please contact us directly at %s."
112
+ msgstr ""
113
+
114
+ #: ../admin/class-advanced-ads-admin.php:419
115
+ msgid "Please enter a valid email address"
116
+ msgstr ""
117
+
118
+ #: ../admin/class-advanced-ads-admin.php:445 ../admin/class-advanced-ads-admin.
119
+ #: php:472
120
  msgid "Sorry, you are not allowed to access this feature."
121
  msgstr ""
122
 
123
+ #: ../admin/class-advanced-ads-admin.php:458
124
  msgid ""
125
  "You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was "
126
  "deleted?"
127
  msgstr ""
128
 
129
+ #: ../admin/class-advanced-ads-admin.php:573
130
  msgid "Ad Type"
131
  msgstr ""
132
 
133
+ #: ../admin/class-advanced-ads-admin.php:576
134
  msgid "Ad Parameters"
135
  msgstr ""
136
 
137
+ #: ../admin/class-advanced-ads-admin.php:579
138
  msgid "Layout / Output"
139
  msgstr ""
140
 
141
+ #: ../admin/class-advanced-ads-admin.php:582
142
  msgid "Display Conditions"
143
  msgstr ""
144
 
145
+ #: ../admin/class-advanced-ads-admin.php:585
146
  msgid "Visitor Conditions"
147
  msgstr ""
148
 
149
+ #: ../admin/class-advanced-ads-admin.php:810 ../admin/class-advanced-ads-admin.
150
+ #: php:811
151
  msgid "Ad updated."
152
  msgstr ""
153
 
154
  #. translators: %s: date and time of the revision
155
+ #: ../admin/class-advanced-ads-admin.php:813
156
  #, php-format
157
  msgid "Ad restored to revision from %s"
158
  msgstr ""
159
 
160
+ #: ../admin/class-advanced-ads-admin.php:814
161
  msgid "Ad published."
162
  msgstr ""
163
 
164
+ #: ../admin/class-advanced-ads-admin.php:815
165
  msgid "Ad saved."
166
  msgstr ""
167
 
168
+ #: ../admin/class-advanced-ads-admin.php:816
169
  msgid "Ad submitted."
170
  msgstr ""
171
 
172
+ #: ../admin/class-advanced-ads-admin.php:818
173
  #, php-format
174
  msgid "Ad scheduled for: <strong>%1$s</strong>."
175
  msgstr ""
176
 
177
  #. translators: Publish box date format, see http://php.net/date
178
+ #: ../admin/class-advanced-ads-admin.php:820
179
  msgid "M j, Y @ G:i"
180
  msgstr ""
181
 
182
+ #: ../admin/class-advanced-ads-admin.php:822
183
  msgid "Ad draft updated."
184
  msgstr ""
185
 
186
+ #: ../admin/class-advanced-ads-admin.php:841
187
  #, php-format
188
  msgid "%s ad updated."
189
  msgid_plural "%s ads updated."
190
  msgstr[0] ""
191
  msgstr[1] ""
192
 
193
+ #: ../admin/class-advanced-ads-admin.php:842
194
  #, php-format
195
  msgid "%s ad not updated, somebody is editing it."
196
  msgid_plural "%s ads not updated, somebody is editing them."
197
  msgstr[0] ""
198
  msgstr[1] ""
199
 
200
+ #: ../admin/class-advanced-ads-admin.php:843
201
  #, php-format
202
  msgid "%s ad permanently deleted."
203
  msgid_plural "%s ads permanently deleted."
204
  msgstr[0] ""
205
  msgstr[1] ""
206
 
207
+ #: ../admin/class-advanced-ads-admin.php:844
208
  #, php-format
209
  msgid "%s ad moved to the Trash."
210
  msgid_plural "%s ads moved to the Trash."
211
  msgstr[0] ""
212
  msgstr[1] ""
213
 
214
+ #: ../admin/class-advanced-ads-admin.php:845
215
  #, php-format
216
  msgid "%s ad restored from the Trash."
217
  msgid_plural "%s ads restored from the Trash."
218
  msgstr[0] ""
219
  msgstr[1] ""
220
 
221
+ #: ../admin/class-advanced-ads-admin.php:880 ../admin/views/settings.php:12
222
  msgid "General"
223
  msgstr ""
224
 
225
+ #: ../admin/class-advanced-ads-admin.php:892 ../admin/class-advanced-ads-admin.
226
+ #: php:996
227
  msgid "Licenses"
228
  msgstr ""
229
 
230
+ #: ../admin/class-advanced-ads-admin.php:903
231
  msgid "Disable ads"
232
  msgstr ""
233
 
234
+ #: ../admin/class-advanced-ads-admin.php:911
235
  msgid "Hide ads for logged in users"
236
  msgstr ""
237
 
238
+ #: ../admin/class-advanced-ads-admin.php:919
239
  msgid "Use advanced JavaScript"
240
  msgstr ""
241
 
242
+ #: ../admin/class-advanced-ads-admin.php:927
243
  msgid "Unlimited ad injection"
244
  msgstr ""
245
 
246
+ #: ../admin/class-advanced-ads-admin.php:935
247
  msgid "Priority of content injection filter"
248
  msgstr ""
249
 
250
+ #: ../admin/class-advanced-ads-admin.php:943
251
  msgid "Hide ads from bots"
252
  msgstr ""
253
 
254
+ #: ../admin/class-advanced-ads-admin.php:951
255
  msgid "Disable notices"
256
  msgstr ""
257
 
258
+ #: ../admin/class-advanced-ads-admin.php:959
259
  msgid "ID prefix"
260
  msgstr ""
261
 
262
+ #: ../admin/class-advanced-ads-admin.php:967
263
  msgid "Remove Widget ID"
264
  msgstr ""
265
 
266
+ #: ../admin/class-advanced-ads-admin.php:975
267
  msgid "Allow editors to manage ads"
268
  msgstr ""
269
 
270
+ #: ../admin/class-advanced-ads-admin.php:1050
271
  msgid "(display to all)"
272
  msgstr ""
273
 
274
+ #: ../admin/class-advanced-ads-admin.php:1051
275
  msgid "Subscriber"
276
  msgstr ""
277
 
278
+ #: ../admin/class-advanced-ads-admin.php:1052
279
  msgid "Contributor"
280
  msgstr ""
281
 
282
+ #: ../admin/class-advanced-ads-admin.php:1053
283
  msgid "Author"
284
  msgstr ""
285
 
286
+ #: ../admin/class-advanced-ads-admin.php:1054
287
  msgid "Editor"
288
  msgstr ""
289
 
290
+ #: ../admin/class-advanced-ads-admin.php:1055
291
  msgid "Admin"
292
  msgstr ""
293
 
294
+ #: ../admin/class-advanced-ads-admin.php:1063
295
  msgid "Choose the lowest role a user must have in order to not see any ads."
296
  msgstr ""
297
 
298
+ #: ../admin/class-advanced-ads-admin.php:1077
299
  msgid ""
300
  "<strong>notice: </strong>the file is currently enabled by an add-on that "
301
  "needs it."
302
  msgstr ""
303
 
304
+ #: ../admin/class-advanced-ads-admin.php:1080
305
  #, php-format
306
  msgid ""
307
  "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">here</a>)."
309
  "from this file."
310
  msgstr ""
311
 
312
+ #: ../admin/class-advanced-ads-admin.php:1093
313
  msgid ""
314
  "Some plugins and themes trigger ad injection where it shouldn’t happen. "
315
  "Therefore, Advanced Ads ignores injected placements on non-singular pages "
318
  "on archive pages AT YOUR OWN RISK."
319
  msgstr ""
320
 
321
+ #: ../admin/class-advanced-ads-admin.php:1109
322
  msgid ""
323
  "Please check your post content. A priority of 10 and below might cause "
324
  "issues (wpautop function might run twice)."
325
  msgstr ""
326
 
327
+ #: ../admin/class-advanced-ads-admin.php:1111
328
  msgid ""
329
  "Play with this value in order to change the priority of the injected ads "
330
  "compared to other auto injected elements in the post content."
331
  msgstr ""
332
 
333
+ #: ../admin/class-advanced-ads-admin.php:1125
334
  #, php-format
335
  msgid ""
336
  "Hide ads from crawlers, bots and empty user agents. Also prevents counting "
338
  "Add-On</a>."
339
  msgstr ""
340
 
341
+ #: ../admin/class-advanced-ads-admin.php:1126
342
  msgid ""
343
  "Disabling this option only makes sense if your ads contain content you want "
344
  "to display to bots (like search engines) or your site is cached and bots "
345
  "could create a cached version without the ads."
346
  msgstr ""
347
 
348
+ #: ../admin/class-advanced-ads-admin.php:1139
349
  msgid ""
350
  "Disable internal notices like tips, tutorials, email newsletters and update "
351
  "notices. Disabling notices is recommended if you run multiple blogs with "
352
  "Advanced Ads already."
353
  msgstr ""
354
 
355
+ #: ../admin/class-advanced-ads-admin.php:1161
356
  msgid ""
357
  "Prefix of class or id attributes in the frontend. Change it if you don’t "
358
  "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
359
  "need to <strong>rewrite css rules afterwards</strong>."
360
  msgstr ""
361
 
362
+ #: ../admin/class-advanced-ads-admin.php:1182
363
  msgid ""
364
  "Remove the ID attribute from widgets in order to not make them an easy "
365
  "target of ad blockers."
366
  msgstr ""
367
 
368
+ #: ../admin/class-advanced-ads-admin.php:1185
369
+ msgid ""
370
+ "If checked, the Advanced Ads Widget will not work with the fixed option of "
371
+ "the <strong>Q2W3 Fixed Widget</strong> plugin."
372
+ msgstr ""
373
+
374
+ #: ../admin/class-advanced-ads-admin.php:1207
375
  msgid "Allow editors to also manage and publish ads."
376
  msgstr ""
377
 
378
+ #: ../admin/class-advanced-ads-admin.php:1208
379
  #, php-format
380
  msgid ""
381
  "You can assign different ad-related roles on a user basis with <a href=\"%s\" "
382
  "target=\"_blank\">Advanced Ads Pro</a>."
383
  msgstr ""
384
 
385
+ #: ../admin/class-advanced-ads-admin.php:1298
386
  msgid "Ad Details"
387
  msgstr ""
388
 
389
+ #: ../admin/class-advanced-ads-admin.php:1299
390
  msgid "Ad Planning"
391
  msgstr ""
392
 
393
+ #: ../admin/class-advanced-ads-admin.php:1434
394
  msgid "Ad Settings"
395
  msgstr ""
396
 
397
+ #: ../admin/class-advanced-ads-admin.php:1513 ../admin/views/overview.php:23
398
  msgid "Ads Dashboard"
399
  msgstr ""
400
 
401
+ #: ../admin/class-advanced-ads-admin.php:1525
402
  msgid "From the ad optimization universe"
403
  msgstr ""
404
 
405
+ #: ../admin/class-advanced-ads-admin.php:1534
406
  msgid "Advanced Ads Tutorials"
407
  msgstr ""
408
 
409
+ #: ../admin/class-advanced-ads-admin.php:1545
410
  #, php-format
411
  msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
412
  msgstr ""
413
 
414
+ #: ../admin/class-advanced-ads-admin.php:1556
415
  msgid "plugin manual and homepage"
416
  msgstr ""
417
 
418
+ #: ../admin/class-advanced-ads-admin.php:1563
419
  msgid "Get the tutorial via email"
420
  msgstr ""
421
 
422
+ #: ../admin/class-advanced-ads-admin.php:1570
423
  msgid "Get AdSense tips via email"
424
  msgstr ""
425
 
426
+ #: ../admin/class-advanced-ads-admin.php:1660
427
+ #, php-format
428
+ msgid "time of %s"
429
+ msgstr ""
430
+
431
+ #: ../admin/class-advanced-ads-admin.php:1695
432
  msgid "Error while trying to register the license. Please contact support."
433
  msgstr ""
434
 
435
+ #: ../admin/class-advanced-ads-admin.php:1701
436
  msgid "Please enter and save a valid license key first."
437
  msgstr ""
438
 
439
+ #: ../admin/class-advanced-ads-admin.php:1729
440
  msgid "This is the bundle license key."
441
  msgstr ""
442
 
443
+ #: ../admin/class-advanced-ads-admin.php:1730
444
  msgid "This is not the correct key for this add-on."
445
  msgstr ""
446
 
447
+ #: ../admin/class-advanced-ads-admin.php:1733
448
  #, php-format
449
  msgid "License is invalid. Reason: %s"
450
  msgstr ""
451
 
452
+ #: ../admin/class-advanced-ads-admin.php:1777
453
  msgid "Error while trying to disable the license. Please contact support."
454
  msgstr ""
455
 
456
+ #: ../admin/class-advanced-ads-admin.php:1808
457
  msgid "License couldn’t be deactivated. Please try again later or contact support."
458
  msgstr ""
459
 
460
+ #: ../admin/class-advanced-ads-admin.php:1955
461
  msgid "Add-Ons"
462
  msgstr ""
463
 
471
  msgid "starts %s"
472
  msgstr ""
473
 
474
+ #: ../admin/includes/class-ad-groups-list.php:183 ../admin/views/ad-list-timing-
475
+ #: column.php:21
476
  #, php-format
477
  msgid "expires %s"
478
  msgstr ""
479
 
480
+ #: ../admin/includes/class-ad-groups-list.php:185 ../admin/views/ad-list-timing-
481
+ #: column.php:23
482
  #, php-format
483
  msgid "<strong>expired</strong> %s"
484
  msgstr ""
485
 
486
+ #: ../admin/includes/class-ad-groups-list.php:198
487
  msgid "all published ads are displayed"
488
  msgstr ""
489
 
490
+ #: ../admin/includes/class-ad-groups-list.php:200
491
  #, php-format
492
  msgid "up to %d ads displayed"
493
  msgstr ""
494
 
495
+ #: ../admin/includes/class-ad-groups-list.php:203 ../admin/views/ad-group-list-
496
  #: form-row.php:37
497
  msgid "No ads assigned"
498
  msgstr ""
499
 
500
+ #: ../admin/includes/class-ad-groups-list.php:251
501
  msgid "Random ads"
502
  msgstr ""
503
 
504
+ #: ../admin/includes/class-ad-groups-list.php:252
505
  msgid "Display random ads based on ad weight"
506
  msgstr ""
507
 
508
+ #: ../admin/includes/class-ad-groups-list.php:255
509
  msgid "Ordered ads"
510
  msgstr ""
511
 
512
+ #: ../admin/includes/class-ad-groups-list.php:256
513
  msgid "Display ads with the highest ad weight first"
514
  msgstr ""
515
 
516
+ #: ../admin/includes/class-ad-groups-list.php:275 ../public/class-advanced-ads.
517
  #: php:567
518
  msgid "Edit"
519
  msgstr ""
520
 
521
+ #: ../admin/includes/class-ad-groups-list.php:276
522
  msgid "Usage"
523
  msgstr ""
524
 
525
+ #: ../admin/includes/class-ad-groups-list.php:285
526
  msgid "Delete"
527
  msgstr ""
528
 
529
+ #: ../admin/includes/class-ad-groups-list.php:306
530
  msgid "Invalid Ad Group"
531
  msgstr ""
532
 
533
+ #: ../admin/includes/class-ad-groups-list.php:311
534
  msgid "You don’t have permission to change the ad groups"
535
  msgstr ""
536
 
537
+ #: ../admin/includes/class-notices.php:367
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
538
  #, php-format
539
  msgid ""
540
  "You don’t seem to have an email address. Please use <a href=\"%s\" "
541
  "target=\"_blank\">this form</a> to sign up."
542
  msgstr ""
543
 
544
+ #: ../admin/includes/class-notices.php:385
545
  msgid "How embarrassing. The email server seems to be down. Please try again later."
546
  msgstr ""
547
 
548
+ #: ../admin/includes/class-notices.php:390
549
  #, php-format
550
  msgid ""
551
  "Please check your email (%s) for the confirmation message. If you didn’t "
609
 
610
  #: ../admin/includes/class-overview-widgets.php:92 ../admin/includes/notices.php:
611
  #: 35 ../admin/views/intro.php:73 ../admin/views/notices/inline.php:3 ..
612
+ #: admin/views/notices/subscribe.php:3
613
  msgid "Subscribe me now"
614
  msgstr ""
615
 
717
  msgstr ""
718
 
719
  #: ../admin/includes/class-overview-widgets.php:188
 
 
 
 
720
  msgid "group stats by day, week or month"
721
  msgstr ""
722
 
723
+ #: ../admin/includes/class-overview-widgets.php:190
724
  msgid "Get the Tracking add-on"
725
  msgstr ""
726
 
727
+ #: ../admin/includes/class-overview-widgets.php:198
728
  msgid "Display ads based on the size of your visitor’s browser or device."
729
  msgstr ""
730
 
731
+ #: ../admin/includes/class-overview-widgets.php:199
732
  msgid "set a range (from … to …) pixels for the browser size"
733
  msgstr ""
734
 
735
+ #: ../admin/includes/class-overview-widgets.php:200
736
  msgid "set custom sizes for AdSense responsive ads"
737
  msgstr ""
738
 
739
+ #: ../admin/includes/class-overview-widgets.php:201
740
  msgid "list all ads by their responsive settings"
741
  msgstr ""
742
 
743
+ #: ../admin/includes/class-overview-widgets.php:203
744
  msgid "Get the Responsive add-on"
745
  msgstr ""
746
 
747
+ #: ../admin/includes/class-overview-widgets.php:211
748
  msgid "Target visitors by their geo location."
749
  msgstr ""
750
 
751
+ #: ../admin/includes/class-overview-widgets.php:213
752
  msgid "Get the Geo Targeting add-on"
753
  msgstr ""
754
 
755
+ #: ../admin/includes/class-overview-widgets.php:221 ../admin/views/ad-info-top.
756
  #: php:30
757
  msgid ""
758
  "Fix ads to the browser while users are scrolling and create best performing "
759
  "anchor ads."
760
  msgstr ""
761
 
762
+ #: ../admin/includes/class-overview-widgets.php:222
763
  msgid "position ads that don’t scroll with the screen"
764
  msgstr ""
765
 
766
+ #: ../admin/includes/class-overview-widgets.php:223
767
  msgid "build anchor ads not only on mobile devices"
768
  msgstr ""
769
 
770
+ #: ../admin/includes/class-overview-widgets.php:225 ../admin/views/ad-info-top.
771
  #: php:32
772
  msgid "Get the Sticky add-on"
773
  msgstr ""
774
 
775
+ #: ../admin/includes/class-overview-widgets.php:233 ../admin/views/ad-info-top.
776
  #: php:37
777
  msgid "Display content and ads in layers and popups on custom events."
778
  msgstr ""
779
 
780
+ #: ../admin/includes/class-overview-widgets.php:234
781
  msgid "display a popup after a user interaction like scrolling"
782
  msgstr ""
783
 
784
+ #: ../admin/includes/class-overview-widgets.php:235
785
  msgid "optional background overlay"
786
  msgstr ""
787
 
788
+ #: ../admin/includes/class-overview-widgets.php:236
789
  msgid "allow users to close the popup"
790
  msgstr ""
791
 
792
+ #: ../admin/includes/class-overview-widgets.php:238 ../admin/views/ad-info-top.
793
  #: php:39
794
  msgid "Get the PopUp and Layer add-on"
795
  msgstr ""
796
 
797
+ #: ../admin/includes/class-overview-widgets.php:246
798
  msgid "Create a beautiful and simple slider from your ads."
799
  msgstr ""
800
 
801
+ #: ../admin/includes/class-overview-widgets.php:248
802
  msgid "Get the Slider add-on"
803
  msgstr ""
804
 
839
  "and Advanced Ads from my dedicated newsletter."
840
  msgstr ""
841
 
842
+ #: ../admin/includes/notices.php:61
843
  msgid ""
844
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
845
  "missing</strong>."
846
  msgstr ""
847
 
848
+ #: ../admin/includes/notices.php:61
849
  #, php-format
850
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
851
  msgstr ""
852
 
853
+ #: ../admin/includes/notices.php:67
854
  #, php-format
855
  msgid ""
856
  "One or more licenses for your <strong>Advanced Ads add-ons are expiring "
859
  "target=\"_blank\">the add-on page</a>."
860
  msgstr ""
861
 
862
+ #: ../admin/includes/notices.php:73 ../admin/views/support.php:28
863
  #, php-format
864
  msgid ""
865
  "<strong>Advanced Ads</strong> license(s) expired. Support and updates are "
867
  "information."
868
  msgstr ""
869
 
870
+ #: ../admin/includes/notices.php:79
871
  #, php-format
872
  msgid ""
873
  "<img src=\"%3$s\" alt=\"Thomas\" width=\"80\" height=\"115\" class=\"advads-review-"
894
  msgid "Cancel"
895
  msgstr ""
896
 
897
+ #: ../admin/views/ad-display-metabox.php:6
898
+ msgid "Set Display Conditions to allow or hide the ad on specific pages."
899
  msgstr ""
900
 
901
+ #: ../admin/views/ad-display-metabox.php:6 ../admin/views/ad-visitor-metabox.php:4
902
+ msgid "Manual"
 
 
 
 
903
  msgstr ""
904
 
905
+ #: ../admin/views/ad-display-metabox.php:37
906
  msgid "If you want to display the ad everywhere, don't do anything here. "
907
  msgstr ""
908
 
909
+ #: ../admin/views/ad-display-metabox.php:40 ../admin/views/ad-visitor-metabox.php:
910
+ #: 34
911
+ msgid "New condition"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
912
  msgstr ""
913
 
914
+ #: ../admin/views/ad-display-metabox.php:43 ../admin/views/ad-visitor-metabox.php:
915
+ #: 41
916
+ msgid "-- choose a condition --"
917
  msgstr ""
918
 
919
+ #: ../admin/views/ad-display-metabox.php:48 ../admin/views/ad-visitor-metabox.php:
920
+ #: 46
921
+ msgid "add"
922
  msgstr ""
923
 
924
  #: ../admin/views/ad-group-edit.php:14
961
  msgstr ""
962
 
963
  #: ../admin/views/ad-group-list-form-row.php:7 ../admin/views/placements.php:23 ..
964
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:48
965
  msgid "Type"
966
  msgstr ""
967
 
996
  msgstr ""
997
 
998
  #: ../admin/views/ad-group-list-row.php:8 ../admin/views/ad-group.php:63 ..
999
+ #: admin/views/ad-info.php:3 ../admin/views/placements.php:58
1000
  msgid "shortcode"
1001
  msgstr ""
1002
 
1003
  #: ../admin/views/ad-group-list-row.php:11 ../admin/views/ad-group.php:66 ..
1004
+ #: admin/views/placements.php:61
1005
  msgid "template"
1006
  msgstr ""
1007
 
1266
  "with a space"
1267
  msgstr ""
1268
 
1269
+ #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:55
1270
  msgid "size:"
1271
  msgstr ""
1272
 
1273
+ #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:56
1274
  msgid "width"
1275
  msgstr ""
1276
 
1277
+ #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:57
1278
  msgid "height"
1279
  msgstr ""
1280
 
1281
+ #: ../admin/views/ad-submitbox-meta.php:6
1282
  msgid "Set expiry date"
1283
  msgstr ""
1284
 
1285
+ #: ../admin/views/ad-submitbox-meta.php:12
1286
  msgid "Month"
1287
  msgstr ""
1288
 
1289
+ #: ../admin/views/ad-submitbox-meta.php:16
1290
  #, php-format
1291
  msgctxt "1: month number (01, 02, etc.), 2: month abbreviation"
1292
  msgid "%1$s-%2$s"
1293
  msgstr ""
1294
 
1295
+ #: ../admin/views/ad-submitbox-meta.php:21
1296
  msgid "Day"
1297
  msgstr ""
1298
 
1299
+ #: ../admin/views/ad-submitbox-meta.php:22
1300
  msgid "Year"
1301
  msgstr ""
1302
 
1303
+ #: ../admin/views/ad-submitbox-meta.php:23
1304
  msgid "Hour"
1305
  msgstr ""
1306
 
1307
+ #: ../admin/views/ad-submitbox-meta.php:24
1308
  msgid "Minute"
1309
  msgstr ""
1310
 
1311
+ #: ../admin/views/ad-submitbox-meta.php:29
1312
  #, php-format
1313
  msgctxt "order of expiry date fields 1: month, 2: day, 3: year, 4: hour, 5: minute"
1314
  msgid "%1$s %2$s, %3$s @ %4$s %5$s"
1320
  "websites."
1321
  msgstr ""
1322
 
 
 
 
 
1323
  #: ../admin/views/ad-visitor-metabox.php:28
1324
  msgid ""
1325
  "Visitor conditions limit the number of users who can see your ad. There is "
1333
  "if dynamic features get cached."
1334
  msgstr ""
1335
 
 
 
 
 
1336
  #: ../admin/views/ad-visitor-metabox.php:37
1337
  msgctxt "visitor condition connector"
1338
  msgid "and"
1343
  msgid "or"
1344
  msgstr ""
1345
 
1346
+ #: ../admin/views/ad-visitor-metabox.php:51
 
 
 
 
 
 
 
 
1347
  #, php-format
1348
  msgid ""
1349
  "Define the exact browser width for which an ad should be visible using the "
1350
  "<a href=\"%s\" target=\"_blank\">Responsive add-on</a>."
1351
  msgstr ""
1352
 
1353
+ #: ../admin/views/ad-visitor-metabox.php:112
1354
  msgid ""
1355
  "The visitor conditions below are deprecated. Please use the new version of "
1356
  "visitor conditions to replace it."
1357
  msgstr ""
1358
 
1359
+ #: ../admin/views/ad-visitor-metabox.php:118
1360
  msgid "Display on all devices"
1361
  msgstr ""
1362
 
1363
+ #: ../admin/views/ad-visitor-metabox.php:122
1364
  msgid "only on mobile devices"
1365
  msgstr ""
1366
 
1367
+ #: ../admin/views/ad-visitor-metabox.php:126
1368
  msgid "not on mobile devices"
1369
  msgstr ""
1370
 
1749
  msgid "the company behind Advanced Ads"
1750
  msgstr ""
1751
 
1752
+ #: ../admin/views/support.php:8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1753
  msgid "Possible Issues"
1754
  msgstr ""
1755
 
1756
+ #: ../admin/views/support.php:9
1757
  msgid ""
1758
  "Please fix the red highlighted issues on this page or try to understand "
1759
  "their consequences before contacting support."
1760
  msgstr ""
1761
 
1762
+ #: ../admin/views/support.php:13
1763
  #, php-format
1764
  msgid ""
1765
  "Your <strong>PHP version (%s) is too low</strong>. Advanced Ads is built for "
1767
  "Please ask your hosting provider for more information."
1768
  msgstr ""
1769
 
1770
+ #: ../admin/views/support.php:16
1771
  #, php-format
1772
  msgid ""
1773
  "Your <strong>website uses cache</strong>. Some dynamic features like ad "
1776
  "ads dynamically."
1777
  msgstr ""
1778
 
1779
+ #: ../admin/views/support.php:19
1780
  msgid "There is a <strong>new WordPress version available</strong>. Please update."
1781
  msgstr ""
1782
 
1783
+ #: ../admin/views/support.php:22
1784
  msgid "There are <strong>plugin updates available</strong>. Please update."
1785
  msgstr ""
1786
 
1787
+ #: ../admin/views/support.php:25
1788
  #, php-format
1789
  msgid ""
1790
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
1791
  "missing</strong>. Please add valid license keys <a href=\"%s\">here</a>."
1792
  msgstr ""
1793
 
1794
+ #: ../admin/views/support.php:31
1795
  #, php-format
1796
  msgid ""
1797
  "<strong>Autoptimize plugin detected</strong>. While this plugin is great for "
1800
  "support for Autoptimize."
1801
  msgstr ""
1802
 
1803
+ #: ../admin/views/support.php:34
1804
  #, php-format
1805
  msgid ""
1806
  "Plugins that are known to cause (partial) problems: <strong>%1$s</strong>. "
1807
  "<a href=\"%2$s\" target=\"_blank\">Learn more</a>."
1808
  msgstr ""
1809
 
1810
+ #: ../admin/views/support.php:38
1811
  #, php-format
1812
  msgid ""
1813
  "Ads are disabled for all or some pages. See \"disabled ads\" in <a "
1814
  "href=\"%s\">settings</a>."
1815
  msgstr ""
1816
 
1817
+ #: ../admin/views/support.php:49
1818
+ msgid "Search"
1819
+ msgstr ""
1820
+
1821
+ #: ../admin/views/support.php:50
1822
+ msgid ""
1823
+ "Use the following form to search for solutions in the manual on "
1824
+ "wpadvancedads.com"
1825
+ msgstr ""
1826
+
1827
+ #: ../admin/views/support.php:53
1828
+ msgid "search"
1829
+ msgstr ""
1830
+
1831
+ #: ../admin/views/support.php:55
1832
  msgid "Contact"
1833
  msgstr ""
1834
 
1835
+ #: ../admin/views/support.php:56
1836
  #, php-format
1837
  msgid ""
1838
  "Please search the manual for a solution and take a look at <a href=\"%s\" "
1839
  "target=\"_blank\">Ads not showing up?</a> before contacting me for help."
1840
  msgstr ""
1841
 
1842
+ #: ../admin/views/support.php:58
1843
+ msgid "Email was successfully sent."
1844
+ msgstr ""
1845
+
1846
+ #: ../admin/views/support.php:67
1847
  msgid "your email"
1848
  msgstr ""
1849
 
1850
+ #: ../admin/views/support.php:71
1851
  msgid "your name"
1852
  msgstr ""
1853
 
1854
+ #: ../admin/views/support.php:75
1855
  msgid "your message"
1856
  msgstr ""
1857
 
1858
+ #: ../admin/views/support.php:80
1859
  msgid "send"
1860
  msgstr ""
1861
 
1865
  "ad setup."
1866
  msgstr ""
1867
 
1868
+ #: ../admin/views/notices/jqueryui_error.php:2
1869
+ #, php-format
1870
+ msgid ""
1871
+ "There might be a problem with layouts and scripts in your dashboard. Please "
1872
+ "check <a href=\"%s\" target=\"_blank\">this article to learn more</a>."
1873
+ msgstr ""
1874
+
1875
  #: ../classes/ad_placements.php:31
1876
  msgid "Manual Placement"
1877
  msgstr ""
2024
  "misfortunate formats in forms, but should not damage features."
2025
  msgstr ""
2026
 
2027
+ #: ../classes/display-conditions.php:47
2028
+ msgid "post type"
2029
+ msgstr ""
2030
+
2031
+ #: ../classes/display-conditions.php:48 ../includes/array_ad_conditions.php:40
2032
+ msgid "Choose the public post types on which to display the ad."
2033
+ msgstr ""
2034
+
2035
+ #: ../classes/display-conditions.php:54
2036
+ msgid "specific pages"
2037
+ msgstr ""
2038
+
2039
+ #: ../classes/display-conditions.php:55 ../includes/array_ad_conditions.php:58
2040
+ msgid ""
2041
+ "Choose on which individual posts, pages and public post type pages you want "
2042
+ "to display or hide ads."
2043
+ msgstr ""
2044
+
2045
+ #: ../classes/display-conditions.php:60
2046
+ msgid "general conditions"
2047
+ msgstr ""
2048
+
2049
+ #: ../classes/display-conditions.php:66
2050
+ msgid "author"
2051
+ msgstr ""
2052
+
2053
+ #: ../classes/display-conditions.php:91
2054
+ #, php-format
2055
+ msgid "archive: %s"
2056
+ msgstr ""
2057
+
2058
+ #: ../classes/display-conditions.php:205 ../classes/display-conditions.php:258 ..
2059
+ #: classes/display-conditions.php:333
2060
+ msgid "show"
2061
+ msgstr ""
2062
+
2063
+ #: ../classes/display-conditions.php:206 ../classes/display-conditions.php:259 ..
2064
+ #: classes/display-conditions.php:334
2065
+ msgid "hide"
2066
+ msgstr ""
2067
+
2068
+ #: ../classes/display-conditions.php:298
2069
+ msgctxt "display the terms search field on ad edit page"
2070
+ msgid "add more terms"
2071
+ msgstr ""
2072
+
2073
+ #: ../classes/display-conditions.php:299
2074
+ msgid "add more terms"
2075
+ msgstr ""
2076
+
2077
+ #: ../classes/display-conditions.php:301
2078
+ msgid "term name or id"
2079
+ msgstr ""
2080
+
2081
+ #: ../classes/display-conditions.php:362
2082
+ msgid "post or page title"
2083
+ msgstr ""
2084
+
2085
+ #: ../classes/display-conditions.php:407 ../includes/array_ad_conditions.php:63
2086
+ msgid "Home Page"
2087
+ msgstr ""
2088
+
2089
+ #: ../classes/display-conditions.php:408 ../includes/array_ad_conditions.php:64
2090
+ msgid "show on Home page"
2091
+ msgstr ""
2092
+
2093
+ #: ../classes/display-conditions.php:412 ../includes/array_ad_conditions.php:68
2094
+ msgid "Singular Pages"
2095
+ msgstr ""
2096
+
2097
+ #: ../classes/display-conditions.php:413 ../includes/array_ad_conditions.php:69
2098
+ msgid "show on singular pages/posts"
2099
+ msgstr ""
2100
+
2101
+ #: ../classes/display-conditions.php:417 ../includes/array_ad_conditions.php:73
2102
+ msgid "Archive Pages"
2103
+ msgstr ""
2104
+
2105
+ #: ../classes/display-conditions.php:418 ../includes/array_ad_conditions.php:74
2106
+ msgid "show on any type of archive page (category, tag, author and date)"
2107
+ msgstr ""
2108
+
2109
+ #: ../classes/display-conditions.php:422 ../includes/array_ad_conditions.php:78
2110
+ msgid "Search Results"
2111
+ msgstr ""
2112
+
2113
+ #: ../classes/display-conditions.php:423 ../includes/array_ad_conditions.php:79
2114
+ msgid "show on search result pages"
2115
+ msgstr ""
2116
+
2117
+ #: ../classes/display-conditions.php:427 ../includes/array_ad_conditions.php:83
2118
+ msgid "404 Page"
2119
+ msgstr ""
2120
+
2121
+ #: ../classes/display-conditions.php:428 ../includes/array_ad_conditions.php:84
2122
+ msgid "show on 404 error page"
2123
+ msgstr ""
2124
+
2125
+ #: ../classes/display-conditions.php:432 ../includes/array_ad_conditions.php:88
2126
+ msgid "Attachment Pages"
2127
+ msgstr ""
2128
+
2129
+ #: ../classes/display-conditions.php:433 ../includes/array_ad_conditions.php:89
2130
+ msgid "show on attachment pages"
2131
+ msgstr ""
2132
+
2133
+ #: ../classes/display-conditions.php:437 ../includes/array_ad_conditions.php:93
2134
+ msgid "Secondary Queries"
2135
+ msgstr ""
2136
+
2137
+ #: ../classes/display-conditions.php:438 ../includes/array_ad_conditions.php:94
2138
+ msgid "allow ads in secondary queries"
2139
+ msgstr ""
2140
+
2141
  #: ../classes/EDD_SL_Plugin_Updater.php:177
2142
  #, php-format
2143
  msgid ""
2256
  msgid "Title:"
2257
  msgstr ""
2258
 
2259
+ #: ../includes/array_ad_conditions.php:39
2260
  msgid "Post Types"
2261
  msgstr ""
2262
 
2263
+ #: ../includes/array_ad_conditions.php:45
2264
  msgid "Categories, Tags and Taxonomies"
2265
  msgstr ""
2266
 
2267
+ #: ../includes/array_ad_conditions.php:46
2268
  msgid ""
2269
  "Choose terms from public category, tag and other taxonomies a post must "
2270
  "belong to in order to have ads."
2271
  msgstr ""
2272
 
2273
+ #: ../includes/array_ad_conditions.php:51
2274
  msgid "Category Archives"
2275
  msgstr ""
2276
 
2277
+ #: ../includes/array_ad_conditions.php:52
2278
  msgid "comma seperated IDs of category archives"
2279
  msgstr ""
2280
 
2281
+ #: ../includes/array_ad_conditions.php:57
2282
  msgid "Individual Posts, Pages and Public Post Types"
2283
  msgstr ""
2284
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2285
  #: ../modules/ad-blocker/admin/admin.php:133
2286
  msgid "The asset folder was rebuilt successfully"
2287
  msgstr ""
modules/display-by-query/config.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
-
3
- // module configuration
4
-
5
- $path = dirname( __FILE__ );
6
-
7
- return array(
8
- 'classmap' => array(
9
- 'Advanced_Ads_Module_Display_By_Query' => $path . '/display-by-query.class.php',
10
- ),
11
- 'textdomain' => null,
12
- );
 
 
 
 
 
 
 
 
 
 
 
 
modules/display-by-query/display-by-query.class.php DELETED
@@ -1,289 +0,0 @@
1
- <?php
2
-
3
- class Advanced_Ads_Module_Display_By_Query {
4
-
5
- protected $query_var_keys = array(
6
- 'is_single',
7
- 'is_archive',
8
- 'is_search',
9
- 'is_home',
10
- 'is_404',
11
- 'is_attachment',
12
- 'is_singular',
13
- 'is_front_page',
14
- );
15
-
16
- public function __construct() {
17
- // register filter
18
- add_filter( 'advanced-ads-ad-select-args', array( $this, 'ad_select_args_callback' ) );
19
- add_filter( 'advanced-ads-can-display', array( $this, 'can_display' ), 10, 2 );
20
- }
21
-
22
- /**
23
- * On demand provide current query arguments to ads.
24
- *
25
- * Existing arguments must not be overridden.
26
- * Some arguments might be cachable.
27
- *
28
- * @param array $args
29
- *
30
- * @return array
31
- */
32
- public function ad_select_args_callback( $args ) {
33
- global $post, $wp_the_query, $wp_query;
34
-
35
- if ( isset( $post ) ) {
36
- if ( ! isset( $args['post'] ) ) {
37
- $args['post'] = array();
38
- }
39
- if ( ! isset( $args['post']['id'] ) ) {
40
- $args['post']['id'] = $post->ID;
41
- }
42
- if ( ! isset( $args['post']['post_type'] ) ) {
43
- $args['post']['post_type'] = $post->post_type;
44
- }
45
- }
46
-
47
- // pass query arguments
48
- if ( isset( $wp_the_query ) ) {
49
- if ( ! isset( $args['wp_the_query'] ) ) {
50
- $args['wp_the_query'] = array();
51
- }
52
- $query = $wp_the_query->get_queried_object();
53
- // term_id exists only for taxonomy archive pages
54
- if ( ! isset( $args['wp_the_query']['term_id'] ) && $query ) {
55
- $args['wp_the_query']['term_id'] = isset( $query->term_id ) ? $query->term_id : '';
56
- }
57
-
58
- // query type/ context
59
- if ( ! isset( $args['wp_the_query']['is_main_query'] )) {
60
- $args['wp_the_query']['is_main_query'] = $wp_query->is_main_query();
61
- }
62
-
63
- // query vars
64
- foreach ($this->query_var_keys as $key) {
65
- if ( ! isset( $args['wp_the_query'][ $key ] ) ) {
66
- $args['wp_the_query'][ $key ] = $wp_the_query->$key();
67
- }
68
- }
69
- }
70
-
71
- return $args;
72
- }
73
-
74
- /**
75
- *
76
- * @param mixed $id scalar (key) or array of keys as needle
77
- * @param array $ids haystack
78
- *
79
- * @return boolean void if either argument is empty
80
- */
81
- protected function in_array( $id, $ids ) {
82
- // empty?
83
- if ( ! isset( $id ) || $id === array() ) {
84
- return ;
85
- }
86
-
87
- // need to explode?
88
- if ( is_string( $ids) ) {
89
- $ids = explode( ',', $ids );
90
- }
91
-
92
- // invalid?
93
- if ( ! is_array( $ids ) ) {
94
- return ;
95
- }
96
-
97
- return is_array( $id ) ? array_intersect( $id, $ids ) !== array() : in_array( $id, $ids );
98
- }
99
-
100
- protected function can_display_postids( $post, $_cond_value ) {
101
- // this check is deprecated
102
- if ( ! $this->can_display_ids( $post, $_cond_value ) ) {
103
- return false;
104
- }
105
-
106
- // included posts
107
- if ( isset( $_cond_value['method'] ) && isset( $_cond_value['ids'] ) && is_array( $_cond_value['ids'] ) ) {
108
- switch ( $_cond_value['method'] ) {
109
- case 'include' :
110
- if ( $this->in_array( $post, $_cond_value['ids'] ) === false ) {
111
- return false;
112
- }
113
- break;
114
-
115
- case 'exclude' :
116
- if ( $this->in_array( $post, $_cond_value['ids'] ) === true ) {
117
- return false;
118
- }
119
- break ;
120
- }
121
- }
122
-
123
- return true;
124
- }
125
-
126
- protected function can_display_categoryids( $post, $post_type, $_cond_value ) {
127
- // get all taxonomies of the post
128
- $term_ids = $this->get_object_terms( $post, $post_type );
129
-
130
- return $this->can_display_ids( $term_ids, $_cond_value );
131
- }
132
-
133
- /**
134
- * get all terms of a specific post or post type
135
- *
136
- * @param int $post id of the post
137
- * @param string $post_type name of the post type
138
- *
139
- * @return arr $out ids of terms this post belongs to
140
- */
141
- protected function get_object_terms( $post, $post_type ) {
142
-
143
- $post = (int) $post;
144
- if ( ! $post ) {
145
- return array();
146
- }
147
-
148
- // get post type taxonomies
149
- $taxonomies = get_object_taxonomies( $post_type, 'objects' );
150
-
151
- $term_ids = array();
152
- foreach ( array_keys( $taxonomies ) as $taxonomy_slug ){
153
-
154
- // get the terms related to post
155
- $terms = get_the_terms( $post, $taxonomy_slug );
156
-
157
- if ( ! empty( $terms ) ) {
158
- foreach ( $terms as $term ) {
159
- $term_ids[] = $term->term_id;
160
- }
161
- }
162
- }
163
-
164
- return $term_ids;
165
- }
166
-
167
- protected function can_display_ids( $ids, $_cond_value ) {
168
- if ( isset( $_cond_value['include'] ) && ! empty( $_cond_value['include'] ) && $this->in_array( $ids, $_cond_value['include'] ) === false ){
169
- return false;
170
- }
171
-
172
- if ( isset( $_cond_value['exclude'] ) && ! empty( $_cond_value['exclude'] ) && $this->in_array( $ids, $_cond_value['exclude'] ) === true ){
173
- return false;
174
- }
175
-
176
- return true;
177
- }
178
-
179
- /**
180
- * check display conditions
181
- *
182
- * @since 1.1.0 moved here from can_display()
183
- * @return bool $can_display true if can be displayed in frontend
184
- */
185
- public function can_display( $can_display, $ad ) {
186
- if ( ! $can_display ) {
187
- return false;
188
- }
189
-
190
- $options = $ad->options();
191
- if (
192
- // test if anything is to be limited at all
193
- ! isset( $options['conditions'] )
194
- || ! is_array( $options['conditions'] )
195
- // query arguments required
196
- || ! isset( $options['wp_the_query'] )
197
- // display ad if conditions are explicitely disabled
198
- || ( isset( $options['conditions']['enabled'] ) && ! $options['conditions']['enabled'] )
199
- ) {
200
- return true;
201
- }
202
- $conditions = $options['conditions'];
203
- $query = $options['wp_the_query'];
204
- $post = isset( $options['post'] ) ? $options['post'] : null;
205
-
206
- foreach ( $conditions as $_cond_key => $_cond_value ) {
207
- $is_not_cond_all = ! isset( $_cond_value['all'] ) || empty( $_cond_value['all'] );
208
- switch ( $_cond_key ){
209
- // check for post ids
210
- case 'postids' :
211
- if (
212
- isset( $post ) && isset( $post['id'] ) && $is_not_cond_all
213
- && isset( $query['is_singular'] ) && $query['is_singular']
214
- && ! $this->can_display_postids( $post['id'], $_cond_value )
215
- ) {
216
- return false;
217
- }
218
- break;
219
-
220
- // check for category ids
221
- case 'categoryids' :
222
- // included
223
- if (
224
- isset( $post ) && isset( $post['id'] ) && $is_not_cond_all
225
- && isset( $query['is_singular'] ) && $query['is_singular']
226
- && ! $this->can_display_categoryids( $post['id'], $post['post_type'], $_cond_value )
227
- ) {
228
- return false;
229
- }
230
- break;
231
-
232
- // check for included category archive ids
233
- // @link http://codex.wordpress.org/Conditional_Tags#A_Category_Page
234
- case 'categoryarchiveids' :
235
- if (
236
- isset( $query['term_id'] ) && $is_not_cond_all
237
- && isset( $query['is_archive'] ) && $query['is_archive']
238
- && ! $this->can_display_ids( $query['term_id'], $_cond_value )
239
- ) {
240
- return false;
241
- }
242
- break;
243
-
244
- // check for included post types
245
- case 'posttypes' :
246
- // display everywhere, if include not set (= all is checked)
247
- $post_type = isset( $post['post_type'] ) ? $post['post_type'] : false;
248
- // TODO remove condition check for string; deprecated since 1.2.2
249
- if ( $is_not_cond_all && ! $this->can_display_ids( $post_type, $_cond_value ) ) {
250
- return false;
251
- }
252
- break;
253
-
254
- // check is_front_page
255
- // @link https://codex.wordpress.org/Conditional_Tags#The_Front_Page
256
- case 'is_front_page' :
257
- // check is_singular
258
- // @link https://codex.wordpress.org/Conditional_Tags#A_Post_Type
259
- case 'is_singular' :
260
- // check is_archive
261
- // @link https://codex.wordpress.org/Conditional_Tags#Any_Archive_Page
262
- case 'is_archive' :
263
- // check is_search
264
- // @link https://codex.wordpress.org/Conditional_Tags#A_Search_Result_Page
265
- case 'is_search' :
266
- // check is_404
267
- // @link https://codex.wordpress.org/Conditional_Tags#A_404_Not_Found_Page
268
- case 'is_404' :
269
- // check is_attachment
270
- // @link https://codex.wordpress.org/Conditional_Tags#An_Attachment
271
- case 'is_attachment' :
272
- if ( $_cond_value == 0 && isset( $query[ $_cond_key ] ) && $query[ $_cond_key ] ) {
273
- return false;
274
- }
275
- break;
276
- // check !is_main_query
277
- // @link https://codex.wordpress.org/Function_Reference/is_main_query
278
- case 'is_main_query' :
279
- // the usage is reversed for this: if this is not main query reject when off
280
- if ( $_cond_value == 0 && isset( $query[ $_cond_key ] ) && ! $query[ $_cond_key ] ) {
281
- return false;
282
- }
283
- break;
284
- }
285
- }
286
-
287
- return true;
288
- }
289
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modules/display-by-query/main.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
-
3
- new Advanced_Ads_Module_Display_By_Query;
 
 
 
readme.txt CHANGED
@@ -1,26 +1,26 @@
1
  === Advanced Ads ===
2
  Contributors: webzunft
3
  Donate link:https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RRRCEBGN3UT2
4
- Tags: ads, ad, adsense, display, banner, advertisements, adverts, advert, monetization
5
  Requires at least: WP 4.2, PHP 5.3
6
  Tested up to: 4.4.2
7
- Stable tag: 1.6.17.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Manage and optimize your ads in WordPress as easy as creating posts. Including support for AdSense, ad injection, ad planning and ad rotation.
12
 
13
  == Description ==
14
 
15
- Advanced Ads is a simple ad manager made by a publisher for publishers. Based on my experience delivering millions of ads per month I built this plugin as a powerful, but light weight solution to not only manage and serve ads in WordPress, but to test and optimize them as well.
16
 
17
  [Full Feature List](https://wpadvancedads.com/features/).
18
 
19
  = create and manage ads =
20
 
21
- * create ads as easy as creating posts
22
  * group ads to create ad rotations
23
- * create drafts or ads only visible to logged in users
24
  * set a date for when to publish the ad
25
  * make internal notes about each ad
26
 
@@ -28,33 +28,34 @@ Advanced Ads is a simple ad manager made by a publisher for publishers. Based on
28
 
29
  choose between different ad types that enable you to:
30
 
31
- * insert code for ad and affiliate networks (e.g., Chitika, Amazon)
32
  * dedicated support for Google AdSense
33
  * display images and image banners
34
- * use shortcodes (to also deliver ads from other ad plugins)
35
- * create content rich ad with the tinymc editor
36
  * flash files including a fallback – included in [Pro](https://wpadvancedads.com/add-ons/advanced-ads-pro/)
37
 
38
  = display ads =
39
 
40
- * auto inject ads (see _ad injection_ below)
41
- * display ad in template files (with functions)
42
- * display ad in post content (with shortcodes)
43
- * widget to display ads in widget areas (sidebars)
44
- * display grouped ads based on customizable ad weight
45
- * use placements in your theme to change ads and groups in template files without coding
46
  * disable all ads on individual single pages
47
- * set start time and expiry date for ads
48
- * display multiple ads from an ad group (ad blocks)
49
  * define the order of ads from an ad group and allow default ads
50
 
51
  = display conditions =
52
 
53
- deliver ads based on conditions like
54
 
55
  * individual posts, pages and other post type
56
  * post type
57
  * posts by category, tags, taxonomies
 
58
  * archive pages by category, tags, taxonomies
59
  * special page types like 404, attachment and front page
60
  * hide ads on secondary queries (e.g. posts in sidebars)
@@ -63,7 +64,7 @@ global conditions
63
 
64
  * disable all ads in the frontend (e.g. when your ad network breaks down)
65
  * disable all ads on 404 pages (e.g. AdSense doesn’t allow that)
66
- * disable all ads on non-singular pages with a single click
67
  * disable all ads in secondary queries
68
  * hide ads from bots and web crawlers
69
 
@@ -71,28 +72,28 @@ global conditions
71
 
72
  display ads by conditions based on the visitor. [List of all visitor conditions](https://wpadvancedads.com/manual/visitor-conditions/)
73
 
74
- * display or hide ads for mobile visitors
75
- * display or hide ads for logged in visitors
76
- * hide all ads from logged in users based on their role
77
  * advanced visitor conditions: previous visited url (referrer), user capability, browser language, browser and device, url parameters included in [Pro](https://wpadvancedads.com/add-ons/advanced-ads-pro/)
78
  * display ads by geo location with the [Geo Targeting add-on](https://wpadvancedads.com/add-ons/geo-targeting/)
79
- * display ads by exact browser width with the [Responsive add-on](https://wpadvancedads.com/add-ons/responsive-ads/)
80
 
81
  = ad injection | placements =
82
 
83
- Placements to inject ads in pre-defined positions in your theme and content. [List of all placements](https://wpadvancedads.com/manual/placements/)
84
 
85
  * ads after any given paragraph or headline in the post content
86
  * ads at the top of the post content
87
  * ads at the bottom of the post content
88
  * ads before closing `</head>` tag
89
- * ads into page footer
90
- * many more with [add-ons](https://wpadvancedads.com/add-ons/)
91
 
92
  = ad networks =
93
 
94
- Advanced Ads is compatible with all ad networks and banners from affiliate programs like Google AdSense, Chitika, Clickbank, Amazon, etc.
95
- You can also use it to add additional ad network tags into header or footer of your site without additional coding)
96
 
97
  = best support for mobile devices =
98
 
@@ -104,7 +105,7 @@ You can also use it to add additional ad network tags into header or footer of y
104
 
105
  * switch sizes of an ad
106
  * switch between normal and responsive ads
107
- * automatic limit 3 AdSense ads according to AdSense terms of service (can be disabled)
108
  * hide AdSense on 404 pages by default (to comply with AdSense terms)
109
  * insert Page-Level ads code globally
110
  * assistant for exact sizes of responsive ads with the [Responsive add-on](https://wpadvancedads.com/add-ons/responsive-ads/)
@@ -195,6 +196,29 @@ There is no revenue share. Advanced Ads doesn’t alter your ad codes in a way t
195
 
196
  == Changelog ==
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  = 1.6.17.1 =
199
 
200
  * fixed complex Visitor Condition chains
1
  === Advanced Ads ===
2
  Contributors: webzunft
3
  Donate link:https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RRRCEBGN3UT2
4
+ Tags: ads, ad, ad inserter, ad injection, ad manager, ads manager, ad widget, adrotate, adsense, advertise, advertisements, advertising, adverts, advert, amazon, banner, banners, buysellads, chitika, clickbank, dfp, doubleclick, geotarget, geolocation, geo location, google dfp, monetization, widget
5
  Requires at least: WP 4.2, PHP 5.3
6
  Tested up to: 4.4.2
7
+ Stable tag: 1.7.0.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ Manage and optimize your ads as easy as creating posts. Including support for AdSense, ad injection, ad planning, ad widget, and ad rotation.
12
 
13
  == Description ==
14
 
15
+ Advanced Ads is a simple ad manager made by a publisher for publishers. Based on my experience delivering millions of ads per month I built this advertising plugin as a powerful, but light weight solution to not only manage and insert banners in WordPress, but to test and optimize them as well.
16
 
17
  [Full Feature List](https://wpadvancedads.com/features/).
18
 
19
  = create and manage ads =
20
 
21
+ * create a banner is as easy as creating a post
22
  * group ads to create ad rotations
23
+ * create drafts or advertising only visible to logged in users
24
  * set a date for when to publish the ad
25
  * make internal notes about each ad
26
 
28
 
29
  choose between different ad types that enable you to:
30
 
31
+ * insert code for ad and affiliate networks (e.g., AdSense, Chitika, Amazon, BuySellAds, DoubleClick)
32
  * dedicated support for Google AdSense
33
  * display images and image banners
34
+ * use shortcodes (to also deliver ads from other ad plugins like AdRotate or Simple Ads Manager)
35
+ * create content rich ads with the tinymc editor
36
  * flash files including a fallback – included in [Pro](https://wpadvancedads.com/add-ons/advanced-ads-pro/)
37
 
38
  = display ads =
39
 
40
+ * auto inject banner (see _ad injection_ below)
41
+ * display advertising in template files (with functions)
42
+ * display advertising in post content (with shortcakes)
43
+ * ad widget for sidebars and widget areas
44
+ * display ad groups based on customizable ad weight
45
+ * use placements in your theme to insert ads and groups in template files without coding
46
  * disable all ads on individual single pages
47
+ * set start time and expiry date for advertising
48
+ * display multiple ads from a banner group (ad blocks)
49
  * define the order of ads from an ad group and allow default ads
50
 
51
  = display conditions =
52
 
53
+ show ads based on conditions like
54
 
55
  * individual posts, pages and other post type
56
  * post type
57
  * posts by category, tags, taxonomies
58
+ * author
59
  * archive pages by category, tags, taxonomies
60
  * special page types like 404, attachment and front page
61
  * hide ads on secondary queries (e.g. posts in sidebars)
64
 
65
  * disable all ads in the frontend (e.g. when your ad network breaks down)
66
  * disable all ads on 404 pages (e.g. AdSense doesn’t allow that)
67
+ * disable all ads on non-singular pages
68
  * disable all ads in secondary queries
69
  * hide ads from bots and web crawlers
70
 
72
 
73
  display ads by conditions based on the visitor. [List of all visitor conditions](https://wpadvancedads.com/manual/visitor-conditions/)
74
 
75
+ * display or hide a banner for mobile visitors
76
+ * display or hide a banner for logged in visitors
77
+ * hide advertising from logged in users based on their role
78
  * advanced visitor conditions: previous visited url (referrer), user capability, browser language, browser and device, url parameters included in [Pro](https://wpadvancedads.com/add-ons/advanced-ads-pro/)
79
  * display ads by geo location with the [Geo Targeting add-on](https://wpadvancedads.com/add-ons/geo-targeting/)
80
+ * display ads by browser width with the [Responsive add-on](https://wpadvancedads.com/add-ons/responsive-ads/)
81
 
82
  = ad injection | placements =
83
 
84
+ Placements to insert ads in pre-defined positions in your theme and content. [List of all placements](https://wpadvancedads.com/manual/placements/)
85
 
86
  * ads after any given paragraph or headline in the post content
87
  * ads at the top of the post content
88
  * ads at the bottom of the post content
89
  * ads before closing `</head>` tag
90
+ * ads page footer
91
+ * many more ad inserters with [add-ons](https://wpadvancedads.com/add-ons/)
92
 
93
  = ad networks =
94
 
95
+ Advanced Ads is compatible with all ad networks and banners from affiliate programs like Google AdSense, Chitika, Clickbank, Amazon, and also Google DoubleClick (DFP).
96
+ You can also use it to insert additional ad network tags into header or footer of your site without additional coding.
97
 
98
  = best support for mobile devices =
99
 
105
 
106
  * switch sizes of an ad
107
  * switch between normal and responsive ads
108
+ * automatic limit to 3 AdSense banners according to AdSense terms of service (can be disabled)
109
  * hide AdSense on 404 pages by default (to comply with AdSense terms)
110
  * insert Page-Level ads code globally
111
  * assistant for exact sizes of responsive ads with the [Responsive add-on](https://wpadvancedads.com/add-ons/responsive-ads/)
196
 
197
  == Changelog ==
198
 
199
+ = 1.7.0.1 =
200
+
201
+ * hotfix for missing get_current_screen issue
202
+
203
+ = 1.7 =
204
+
205
+ * rewritten Display Conditions interface and logic, see [manual](http://wpadvancedads.com/manual/display-conditions/)
206
+ * rich content ads now render oembed links
207
+ * added author display condition
208
+ * added link to Visitor Conditions manual
209
+ * added incompatibility warning for Q2W3 plugin
210
+ * home page display condition honored also on static pages
211
+ * single post display condition honored also on archive pages
212
+ * prevent ads from being loaded in wp_head when they are not a header placement
213
+ * optimized support form and added feedback messages
214
+ * fixed general secondary query setting
215
+ * fixes for jQuery issues and message for solutions
216
+ * fix error when editor role is missing
217
+
218
+ = 1.6.17.2 =
219
+
220
+ * hotfix for default time zones and expiry dates
221
+
222
  = 1.6.17.1 =
223
 
224
  * fixed complex Visitor Condition chains
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInita3996bab00651d25655716eb164356ba::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitd27a6ff3b938123f5de12ad9c7d1dc16::getLoader();
vendor/composer/LICENSE CHANGED
File without changes
vendor/composer/autoload_classmap.php CHANGED
@@ -18,7 +18,7 @@ return array(
18
  'Advanced_Ads_Admin_Notices' => $baseDir . '/admin/includes/class-notices.php',
19
  'Advanced_Ads_Ajax' => $baseDir . '/classes/ad-ajax.php',
20
  'Advanced_Ads_Checks' => $baseDir . '/classes/checks.php',
21
- 'Advanced_Ads_Display_Condition_Callbacks' => $baseDir . '/admin/includes/class-display-condition-callbacks.php',
22
  'Advanced_Ads_Group' => $baseDir . '/classes/ad_group.php',
23
  'Advanced_Ads_Groups_List' => $baseDir . '/admin/includes/class-ad-groups-list.php',
24
  'Advanced_Ads_Model' => $baseDir . '/classes/ad-model.php',
@@ -27,66 +27,8 @@ return array(
27
  'Advanced_Ads_Plugin' => $baseDir . '/classes/plugin.php',
28
  'Advanced_Ads_Select' => $baseDir . '/classes/ad-select.php',
29
  'Advanced_Ads_Shortcode_Creator' => $baseDir . '/admin/includes/class-shortcode-creator.php',
 
30
  'Advanced_Ads_Visitor_Conditions' => $baseDir . '/classes/visitor-conditions.php',
31
  'Advanced_Ads_Widget' => $baseDir . '/classes/widget.php',
32
- 'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php',
33
- 'Composer\\Installers\\AimeosInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AimeosInstaller.php',
34
- 'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
35
- 'Composer\\Installers\\AsgardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AsgardInstaller.php',
36
- 'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
37
- 'Composer\\Installers\\BitrixInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BitrixInstaller.php',
38
- 'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
39
- 'Composer\\Installers\\ChefInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ChefInstaller.php',
40
- 'Composer\\Installers\\ClanCatsFrameworkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php',
41
- 'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
42
- 'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
43
- 'Composer\\Installers\\CraftInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
44
- 'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
45
- 'Composer\\Installers\\DokuWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php',
46
- 'Composer\\Installers\\DolibarrInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php',
47
- 'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
48
- 'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
49
- 'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
50
- 'Composer\\Installers\\FuelphpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php',
51
- 'Composer\\Installers\\GravInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php',
52
- 'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
53
- 'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php',
54
- 'Composer\\Installers\\JoomlaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
55
- 'Composer\\Installers\\KirbyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KirbyInstaller.php',
56
- 'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
57
- 'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
58
- 'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
59
- 'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
60
- 'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
61
- 'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
62
- 'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
63
- 'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
64
- 'Composer\\Installers\\MicroweberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php',
65
- 'Composer\\Installers\\MoodleInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MoodleInstaller.php',
66
- 'Composer\\Installers\\OctoberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OctoberInstaller.php',
67
- 'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
68
- 'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
69
- 'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
70
- 'Composer\\Installers\\PimcoreInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
71
- 'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
72
- 'Composer\\Installers\\PrestashopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php',
73
- 'Composer\\Installers\\PuppetInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PuppetInstaller.php',
74
- 'Composer\\Installers\\RedaxoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php',
75
- 'Composer\\Installers\\RoundcubeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php',
76
- 'Composer\\Installers\\SMFInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SMFInstaller.php',
77
- 'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
78
- 'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
79
- 'Composer\\Installers\\Symfony1Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
80
- 'Composer\\Installers\\TYPO3CmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
81
- 'Composer\\Installers\\TYPO3FlowInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
82
- 'Composer\\Installers\\TheliaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TheliaInstaller.php',
83
- 'Composer\\Installers\\TuskInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TuskInstaller.php',
84
- 'Composer\\Installers\\WHMCSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php',
85
- 'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
86
- 'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
87
- 'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
88
- 'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
89
  'EDD_SL_Plugin_Updater' => $baseDir . '/classes/EDD_SL_Plugin_Updater.php',
90
- 'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
91
- 'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
92
  );
18
  'Advanced_Ads_Admin_Notices' => $baseDir . '/admin/includes/class-notices.php',
19
  'Advanced_Ads_Ajax' => $baseDir . '/classes/ad-ajax.php',
20
  'Advanced_Ads_Checks' => $baseDir . '/classes/checks.php',
21
+ 'Advanced_Ads_Display_Conditions' => $baseDir . '/classes/display-conditions.php',
22
  'Advanced_Ads_Group' => $baseDir . '/classes/ad_group.php',
23
  'Advanced_Ads_Groups_List' => $baseDir . '/admin/includes/class-ad-groups-list.php',
24
  'Advanced_Ads_Model' => $baseDir . '/classes/ad-model.php',
27
  'Advanced_Ads_Plugin' => $baseDir . '/classes/plugin.php',
28
  'Advanced_Ads_Select' => $baseDir . '/classes/ad-select.php',
29
  'Advanced_Ads_Shortcode_Creator' => $baseDir . '/admin/includes/class-shortcode-creator.php',
30
+ 'Advanced_Ads_Upgrades' => $baseDir . '/classes/upgrades.php',
31
  'Advanced_Ads_Visitor_Conditions' => $baseDir . '/classes/visitor-conditions.php',
32
  'Advanced_Ads_Widget' => $baseDir . '/classes/widget.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  'EDD_SL_Plugin_Updater' => $baseDir . '/classes/EDD_SL_Plugin_Updater.php',
 
 
34
  );
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInita3996bab00651d25655716eb164356ba {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInita3996bab00651d25655716eb164356ba {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInita3996bab00651d25655716eb164356ba', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInita3996bab00651d25655716eb164356ba', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInitd27a6ff3b938123f5de12ad9c7d1dc16 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitd27a6ff3b938123f5de12ad9c7d1dc16', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitd27a6ff3b938123f5de12ad9c7d1dc16', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -1,19 +1,56 @@
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "composer/installers",
4
- "version": "v1.0.21",
5
- "version_normalized": "1.0.21.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/composer/installers.git",
9
- "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
14
- "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
15
  "shasum": ""
16
  },
 
 
 
17
  "replace": {
18
  "roundcube/plugin-installer": "*",
19
  "shama/baton": "*"
@@ -22,10 +59,10 @@
22
  "composer/composer": "1.0.*@dev",
23
  "phpunit/phpunit": "4.1.*"
24
  },
25
- "time": "2015-02-18 17:17:01",
26
- "type": "composer-installer",
27
  "extra": {
28
- "class": "Composer\\Installers\\Installer",
29
  "branch-alias": {
30
  "dev-master": "1.0-dev"
31
  }
@@ -95,39 +132,5 @@
95
  "zend",
96
  "zikula"
97
  ]
98
- },
99
- {
100
- "name": "xrstf/composer-php52",
101
- "version": "v1.0.19",
102
- "version_normalized": "1.0.19.0",
103
- "source": {
104
- "type": "hg",
105
- "url": "https://bitbucket.org/xrstf/composer-php52",
106
- "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e"
107
- },
108
- "dist": {
109
- "type": "zip",
110
- "url": "https://bitbucket.org/xrstf/composer-php52/get/9a4a9c46d0347b39bf9159815301dc66fc25324e.zip",
111
- "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e",
112
- "shasum": ""
113
- },
114
- "time": "2015-10-01 14:11:58",
115
- "type": "library",
116
- "extra": {
117
- "branch-alias": {
118
- "dev-default": "1.x-dev"
119
- }
120
- },
121
- "installation-source": "dist",
122
- "autoload": {
123
- "psr-0": {
124
- "xrstf\\Composer52": "lib/"
125
- }
126
- },
127
- "notification-url": "https://packagist.org/downloads/",
128
- "license": [
129
- "MIT"
130
- ],
131
- "homepage": "http://www.xrstf.de/"
132
  }
133
  ]
1
  [
2
+ {
3
+ "name": "xrstf/composer-php52",
4
+ "version": "v1.0.19",
5
+ "version_normalized": "1.0.19.0",
6
+ "source": {
7
+ "type": "hg",
8
+ "url": "https://bitbucket.org/xrstf/composer-php52",
9
+ "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e"
10
+ },
11
+ "dist": {
12
+ "type": "zip",
13
+ "url": "https://bitbucket.org/xrstf/composer-php52/get/9a4a9c46d0347b39bf9159815301dc66fc25324e.zip",
14
+ "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e",
15
+ "shasum": ""
16
+ },
17
+ "time": "2015-10-01 14:11:58",
18
+ "type": "library",
19
+ "extra": {
20
+ "branch-alias": {
21
+ "dev-default": "1.x-dev"
22
+ }
23
+ },
24
+ "installation-source": "dist",
25
+ "autoload": {
26
+ "psr-0": {
27
+ "xrstf\\Composer52": "lib/"
28
+ }
29
+ },
30
+ "notification-url": "https://packagist.org/downloads/",
31
+ "license": [
32
+ "MIT"
33
+ ],
34
+ "homepage": "http://www.xrstf.de/"
35
+ },
36
  {
37
  "name": "composer/installers",
38
+ "version": "v1.0.23",
39
+ "version_normalized": "1.0.23.0",
40
  "source": {
41
  "type": "git",
42
  "url": "https://github.com/composer/installers.git",
43
+ "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e"
44
  },
45
  "dist": {
46
  "type": "zip",
47
+ "url": "https://api.github.com/repos/composer/installers/zipball/6213d900e92647831f7a406d5c530ea1f3d4360e",
48
+ "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e",
49
  "shasum": ""
50
  },
51
+ "require": {
52
+ "composer-plugin-api": "^1.0"
53
+ },
54
  "replace": {
55
  "roundcube/plugin-installer": "*",
56
  "shama/baton": "*"
59
  "composer/composer": "1.0.*@dev",
60
  "phpunit/phpunit": "4.1.*"
61
  },
62
+ "time": "2016-01-27 12:54:22",
63
+ "type": "composer-plugin",
64
  "extra": {
65
+ "class": "Composer\\Installers\\Plugin",
66
  "branch-alias": {
67
  "dev-master": "1.0-dev"
68
  }
132
  "zend",
133
  "zikula"
134
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  }
136
  ]
vendor/composer/installers/.travis.yml CHANGED
@@ -5,10 +5,17 @@ php:
5
  - 5.4
6
  - 5.5
7
  - 5.6
 
8
  - hhvm
9
 
10
- before_script:
11
- - curl -s http://getcomposer.org/installer | php -- --quiet
12
- - php composer.phar install --dev
 
13
 
14
- script: phpunit
 
 
 
 
 
5
  - 5.4
6
  - 5.5
7
  - 5.6
8
+ - 7.0
9
  - hhvm
10
 
11
+ matrix:
12
+ fast_finish: true
13
+ allow_failures:
14
+ - php: 7.0
15
 
16
+ before_script:
17
+ - composer self-update
18
+ - composer install
19
+
20
+ script:
21
+ - phpunit
vendor/composer/installers/README.md CHANGED
@@ -36,6 +36,7 @@ is not needed to install packages with these frameworks:
36
  | Aimeos | `aimeos-extension`
37
  | Asgard | `asgard-module`<br>`asgard-theme`
38
  | AGL | `agl-module`
 
39
  | AnnotateCms | `annotatecms-module`<br>`annotatecms-component`<br>`annotatecms-service`
40
  | Bitrix | `bitrix-module`<br>`bitrix-component`<br>`bitrix-theme`
41
  | CakePHP 2+ | **`cakephp-plugin`**
@@ -55,6 +56,7 @@ is not needed to install packages with these frameworks:
55
  | Hurad | `hurad-plugin`<br>`hurad-theme`
56
  | Joomla | `joomla-component`<br>`joomla-module`<br>`joomla-template`<br>`joomla-plugin`<br>`joomla-library`
57
  | Kirby | **`kirby-plugin`**
 
58
  | Kohana | **`kohana-module`**
59
  | Laravel | `laravel-library`
60
  | Lithium | **`lithium-library`<br>`lithium-source`**
@@ -166,8 +168,8 @@ not be inflected.
166
  ## Contribute!
167
 
168
  * [Fork and clone](https://help.github.com/articles/fork-a-repo).
169
- * Run the command `php composer.phar install --dev` to install the dev
170
- dependencies. See [Composer](https://github.com/composer/composer#installation--usage).
171
  * Use the command `phpunit` to run the tests. See [PHPUnit](http://phpunit.de).
172
  * Create a branch, commit, push and send us a
173
  [pull request](https://help.github.com/articles/using-pull-requests).
36
  | Aimeos | `aimeos-extension`
37
  | Asgard | `asgard-module`<br>`asgard-theme`
38
  | AGL | `agl-module`
39
+ | Bonefish | `bonefish-package`
40
  | AnnotateCms | `annotatecms-module`<br>`annotatecms-component`<br>`annotatecms-service`
41
  | Bitrix | `bitrix-module`<br>`bitrix-component`<br>`bitrix-theme`
42
  | CakePHP 2+ | **`cakephp-plugin`**
56
  | Hurad | `hurad-plugin`<br>`hurad-theme`
57
  | Joomla | `joomla-component`<br>`joomla-module`<br>`joomla-template`<br>`joomla-plugin`<br>`joomla-library`
58
  | Kirby | **`kirby-plugin`**
59
+ | KodiCMS | `kodicms-plugin`<br>`kodicms-media`
60
  | Kohana | **`kohana-module`**
61
  | Laravel | `laravel-library`
62
  | Lithium | **`lithium-library`<br>`lithium-source`**
168
  ## Contribute!
169
 
170
  * [Fork and clone](https://help.github.com/articles/fork-a-repo).
171
+ * Run the command `php composer.phar install` to install the dependencies.
172
+ This will also install the dev dependencies. See [Composer](https://getcomposer.org/doc/03-cli.md#install).
173
  * Use the command `phpunit` to run the tests. See [PHPUnit](http://phpunit.de).
174
  * Create a branch, commit, push and send us a
175
  [pull request](https://help.github.com/articles/using-pull-requests).
vendor/composer/installers/composer.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "composer/installers",
3
- "type": "composer-installer",
4
  "license": "MIT",
5
  "description": "A multi-framework Composer library installer",
6
  "keywords": [
@@ -61,7 +61,7 @@
61
  "psr-0": { "Composer\\Installers\\": "src/" }
62
  },
63
  "extra": {
64
- "class": "Composer\\Installers\\Installer",
65
  "branch-alias": {
66
  "dev-master": "1.0-dev"
67
  }
@@ -70,6 +70,9 @@
70
  "shama/baton": "*",
71
  "roundcube/plugin-installer": "*"
72
  },
 
 
 
73
  "require-dev": {
74
  "composer/composer": "1.0.*@dev",
75
  "phpunit/phpunit": "4.1.*"
1
  {
2
  "name": "composer/installers",
3
+ "type": "composer-plugin",
4
  "license": "MIT",
5
  "description": "A multi-framework Composer library installer",
6
  "keywords": [
61
  "psr-0": { "Composer\\Installers\\": "src/" }
62
  },
63
  "extra": {
64
+ "class": "Composer\\Installers\\Plugin",
65
  "branch-alias": {
66
  "dev-master": "1.0-dev"
67
  }
70
  "shama/baton": "*",
71
  "roundcube/plugin-installer": "*"
72
  },
73
+ "require": {
74
+ "composer-plugin-api": "^1.0"
75
+ },
76
  "require-dev": {
77
  "composer/composer": "1.0.*@dev",
78
  "phpunit/phpunit": "4.1.*"
vendor/composer/installers/src/Composer/Installers/BaseInstaller.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  namespace Composer\Installers;
3
 
 
4
  use Composer\Composer;
5
  use Composer\Package\PackageInterface;
6
 
@@ -9,17 +10,20 @@ abstract class BaseInstaller
9
  protected $locations = array();
10
  protected $composer;
11
  protected $package;
 
12
 
13
  /**
14
  * Initializes base installer.
15
  *
16
  * @param PackageInterface $package
17
  * @param Composer $composer
 
18
  */
19
- public function __construct(PackageInterface $package = null, Composer $composer = null)
20
  {
21
  $this->composer = $composer;
22
  $this->package = $package;
 
23
  }
24
 
25
  /**
1
  <?php
2
  namespace Composer\Installers;
3
 
4
+ use Composer\IO\IOInterface;
5
  use Composer\Composer;
6
  use Composer\Package\PackageInterface;
7
 
10
  protected $locations = array();
11
  protected $composer;
12
  protected $package;
13
+ protected $io;
14
 
15
  /**
16
  * Initializes base installer.
17
  *
18
  * @param PackageInterface $package
19
  * @param Composer $composer
20
+ * @param IOInterface $io
21
  */
22
+ public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
23
  {
24
  $this->composer = $composer;
25
  $this->package = $package;
26
+ $this->io = $io;
27
  }
28
 
29
  /**
vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php CHANGED
@@ -1,11 +1,89 @@
1
  <?php
2
  namespace Composer\Installers;
3
 
 
 
 
 
 
 
 
 
4
  class BitrixInstaller extends BaseInstaller
5
  {
6
  protected $locations = array(
7
- 'module' => 'local/modules/{$name}/',
8
- 'component' => 'local/components/{$name}/',
9
- 'theme' => 'local/templates/{$name}/'
10
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
1
  <?php
2
  namespace Composer\Installers;
3
 
4
+ use Composer\Util\Filesystem;
5
+
6
+ /**
7
+ * Installer for Bitrix Framework
8
+ *
9
+ * @author Nik Samokhvalov <nik@samokhvalov.info>
10
+ * @author Denis Kulichkin <onexhovia@gmail.com>
11
+ */
12
  class BitrixInstaller extends BaseInstaller
13
  {
14
  protected $locations = array(
15
+ 'module' => 'bitrix/modules/{$name}/',
16
+ 'component' => 'bitrix/components/{$name}/',
17
+ 'theme' => 'bitrix/templates/{$name}/',
18
  );
19
+
20
+ /**
21
+ * @var array Storage for informations about duplicates at all the time of installation packages
22
+ */
23
+ private static $checkedDuplicates = array();
24
+
25
+ /**
26
+ * {@inheritdoc}
27
+ */
28
+ protected function templatePath($path, array $vars = array())
29
+ {
30
+ $templatePath = parent::templatePath($path, $vars);
31
+ $this->checkDuplicates($templatePath, $vars);
32
+
33
+ return $templatePath;
34
+ }
35
+
36
+ /**
37
+ * Duplicates search packages
38
+ *
39
+ * @param string $templatePath
40
+ * @param array $vars
41
+ */
42
+ protected function checkDuplicates($templatePath, array $vars = array())
43
+ {
44
+ /**
45
+ * Incorrect paths for backward compatibility
46
+ */
47
+ $oldLocations = array(
48
+ 'module' => 'local/modules/{$name}/',
49
+ 'component' => 'local/components/{$name}/',
50
+ 'theme' => 'local/templates/{$name}/'
51
+ );
52
+
53
+ $packageType = substr($vars['type'], strlen('bitrix') + 1);
54
+ $oldLocation = str_replace('{$name}', $vars['name'], $oldLocations[$packageType]);
55
+
56
+ if (in_array($oldLocation, static::$checkedDuplicates)) {
57
+ return;
58
+ }
59
+
60
+ if ($oldLocation !== $templatePath && file_exists($oldLocation) && $this->io && $this->io->isInteractive()) {
61
+
62
+ $this->io->writeError(' <error>Duplication of packages:</error>');
63
+ $this->io->writeError(' <info>Package ' . $oldLocation . ' will be called instead package ' . $templatePath . '</info>');
64
+
65
+ while (true) {
66
+ switch ($this->io->ask(' <info>Delete ' . $oldLocation . ' [y,n,?]?</info> ', '?')) {
67
+ case 'y':
68
+ $fs = new Filesystem();
69
+ $fs->removeDirectory($oldLocation);
70
+ break 2;
71
+
72
+ case 'n':
73
+ break 2;
74
+
75
+ case '?':
76
+ default:
77
+ $this->io->writeError(array(
78
+ ' y - delete package ' . $oldLocation . ' and to continue with the installation',
79
+ ' n - don\'t delete and to continue with the installation',
80
+ ));
81
+ $this->io->writeError(' ? - print help');
82
+ break;
83
+ }
84
+ }
85
+ }
86
+
87
+ static::$checkedDuplicates[] = $oldLocation;
88
+ }
89
  }
vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class BonefishInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'Packages/{$vendor}/{$name}/'
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php CHANGED
@@ -3,8 +3,6 @@ namespace Composer\Installers;
3
 
4
  use Composer\DependencyResolver\Pool;
5
  use Composer\Package\PackageInterface;
6
- use Composer\Package\LinkConstraint\MultiConstraint;
7
- use Composer\Package\LinkConstraint\VersionConstraint;
8
 
9
  class CakePHPInstaller extends BaseInstaller
10
  {
@@ -52,21 +50,29 @@ class CakePHPInstaller extends BaseInstaller
52
  */
53
  protected function matchesCakeVersion($matcher, $version)
54
  {
 
 
 
 
 
 
 
 
55
  $repositoryManager = $this->composer->getRepositoryManager();
56
  if ($repositoryManager) {
57
  $repos = $repositoryManager->getLocalRepository();
58
  if (!$repos) {
59
  return false;
60
  }
61
- $cake3 = new MultiConstraint(array(
62
- new VersionConstraint($matcher, $version),
63
- new VersionConstraint('!=', '9999999-dev'),
64
  ));
65
  $pool = new Pool('dev');
66
  $pool->addRepository($repos);
67
  $packages = $pool->whatProvides('cakephp/cakephp');
68
  foreach ($packages as $package) {
69
- $installed = new VersionConstraint('=', $package->getVersion());
70
  if ($cake3->matches($installed)) {
71
  return true;
72
  break;
3
 
4
  use Composer\DependencyResolver\Pool;
5
  use Composer\Package\PackageInterface;
 
 
6
 
7
  class CakePHPInstaller extends BaseInstaller
8
  {
50
  */
51
  protected function matchesCakeVersion($matcher, $version)
52
  {
53
+ if (class_exists('Composer\Semver\Constraint\MultiConstraint')) {
54
+ $multiClass = 'Composer\Semver\Constraint\MultiConstraint';
55
+ $constraintClass = 'Composer\Semver\Constraint\Constraint';
56
+ } else {
57
+ $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
58
+ $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
59
+ }
60
+
61
  $repositoryManager = $this->composer->getRepositoryManager();
62
  if ($repositoryManager) {
63
  $repos = $repositoryManager->getLocalRepository();
64
  if (!$repos) {
65
  return false;
66
  }
67
+ $cake3 = new $multiClass(array(
68
+ new $constraintClass($matcher, $version),
69
+ new $constraintClass('!=', '9999999-dev'),
70
  ));
71
  $pool = new Pool('dev');
72
  $pool->addRepository($repos);
73
  $packages = $pool->whatProvides('cakephp/cakephp');
74
  foreach ($packages as $package) {
75
+ $installed = new $constraintClass('=', $package->getVersion());
76
  if ($cake3->matches($installed)) {
77
  return true;
78
  break;
vendor/composer/installers/src/Composer/Installers/CraftInstaller.php CHANGED
@@ -1,9 +1,35 @@
1
  <?php
2
  namespace Composer\Installers;
3
 
 
 
 
4
  class CraftInstaller extends BaseInstaller
5
  {
 
 
 
6
  protected $locations = array(
7
  'plugin' => 'craft/plugins/{$name}/',
8
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  }
1
  <?php
2
  namespace Composer\Installers;
3
 
4
+ /**
5
+ * Installer for Craft Plugins
6
+ */
7
  class CraftInstaller extends BaseInstaller
8
  {
9
+ const NAME_PREFIX = 'craft';
10
+ const NAME_SUFFIX = 'plugin';
11
+
12
  protected $locations = array(
13
  'plugin' => 'craft/plugins/{$name}/',
14
  );
15
+
16
+ /**
17
+ * Strip `craft-` prefix and/or `-plugin` suffix from package names
18
+ *
19
+ * @param array $vars
20
+ *
21
+ * @return array
22
+ */
23
+ final public function inflectPackageVars($vars)
24
+ {
25
+ return $this->inflectPluginVars($vars);
26
+ }
27
+
28
+ private function inflectPluginVars($vars)
29
+ {
30
+ $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
31
+ $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
32
+
33
+ return $vars;
34
+ }
35
  }
vendor/composer/installers/src/Composer/Installers/Installer.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  namespace Composer\Installers;
3
 
 
4
  use Composer\Installer\LibraryInstaller;
5
  use Composer\Package\PackageInterface;
6
  use Composer\Repository\InstalledRepositoryInterface;
@@ -18,6 +19,7 @@ class Installer extends LibraryInstaller
18
  'agl' => 'AglInstaller',
19
  'annotatecms' => 'AnnotateCmsInstaller',
20
  'bitrix' => 'BitrixInstaller',
 
21
  'cakephp' => 'CakePHPInstaller',
22
  'chef' => 'ChefInstaller',
23
  'ccframework' => 'ClanCatsFrameworkInstaller',
@@ -35,6 +37,7 @@ class Installer extends LibraryInstaller
35
  'hurad' => 'HuradInstaller',
36
  'joomla' => 'JoomlaInstaller',
37
  'kirby' => 'KirbyInstaller',
 
38
  'kohana' => 'KohanaInstaller',
39
  'laravel' => 'LaravelInstaller',
40
  'lithium' => 'LithiumInstaller',
@@ -67,7 +70,7 @@ class Installer extends LibraryInstaller
67
  'wordpress' => 'WordPressInstaller',
68
  'zend' => 'ZendInstaller',
69
  'zikula' => 'ZikulaInstaller',
70
- 'prestashop' => 'PrestashopInstaller',
71
  );
72
 
73
  /**
@@ -85,7 +88,7 @@ class Installer extends LibraryInstaller
85
  }
86
 
87
  $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
88
- $installer = new $class($package, $this->composer);
89
 
90
  return $installer->getInstallPath($package, $frameworkType);
91
  }
@@ -153,11 +156,21 @@ class Installer extends LibraryInstaller
153
  if (!empty($this->supportedTypes[$frameworkType])) {
154
  $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
155
  /** @var BaseInstaller $framework */
156
- $framework = new $frameworkClass(null, $this->composer);
157
  $locations = array_keys($framework->getLocations());
158
  $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
159
  }
160
 
161
  return $pattern ? : '(\w+)';
162
  }
 
 
 
 
 
 
 
 
 
 
163
  }
1
  <?php
2
  namespace Composer\Installers;
3
 
4
+ use Composer\IO\IOInterface;
5
  use Composer\Installer\LibraryInstaller;
6
  use Composer\Package\PackageInterface;
7
  use Composer\Repository\InstalledRepositoryInterface;
19
  'agl' => 'AglInstaller',
20
  'annotatecms' => 'AnnotateCmsInstaller',
21
  'bitrix' => 'BitrixInstaller',
22
+ 'bonefish' => 'BonefishInstaller',
23
  'cakephp' => 'CakePHPInstaller',
24
  'chef' => 'ChefInstaller',
25
  'ccframework' => 'ClanCatsFrameworkInstaller',
37
  'hurad' => 'HuradInstaller',
38
  'joomla' => 'JoomlaInstaller',
39
  'kirby' => 'KirbyInstaller',
40
+ 'kodicms' => 'KodiCMSInstaller',
41
  'kohana' => 'KohanaInstaller',
42
  'laravel' => 'LaravelInstaller',
43
  'lithium' => 'LithiumInstaller',
70
  'wordpress' => 'WordPressInstaller',
71
  'zend' => 'ZendInstaller',
72
  'zikula' => 'ZikulaInstaller',
73
+ 'prestashop' => 'PrestashopInstaller'
74
  );
75
 
76
  /**
88
  }
89
 
90
  $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
91
+ $installer = new $class($package, $this->composer, $this->getIO());
92
 
93
  return $installer->getInstallPath($package, $frameworkType);
94
  }
156
  if (!empty($this->supportedTypes[$frameworkType])) {
157
  $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
158
  /** @var BaseInstaller $framework */
159
+ $framework = new $frameworkClass(null, $this->composer, $this->getIO());
160
  $locations = array_keys($framework->getLocations());
161
  $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
162
  }
163
 
164
  return $pattern ? : '(\w+)';
165
  }
166
+
167
+ /**
168
+ * Get I/O object
169
+ *
170
+ * @return IOInterface
171
+ */
172
+ private function getIO()
173
+ {
174
+ return $this->io;
175
+ }
176
  }
vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KodiCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'cms/plugins/{$name}/',
8
+ 'media' => 'cms/media/vendor/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php CHANGED
@@ -6,6 +6,7 @@ class MoodleInstaller extends BaseInstaller
6
  protected $locations = array(
7
  'mod' => 'mod/{$name}/',
8
  'admin_report' => 'admin/report/{$name}/',
 
9
  'tool' => 'admin/tool/{$name}/',
10
  'assignment' => 'mod/assignment/type/{$name}/',
11
  'assignsubmission' => 'mod/assign/submission/{$name}/',
@@ -13,6 +14,9 @@ class MoodleInstaller extends BaseInstaller
13
  'auth' => 'auth/{$name}/',
14
  'availability' => 'availability/condition/{$name}/',
15
  'block' => 'blocks/{$name}/',
 
 
 
16
  'calendartype' => 'calendar/type/{$name}/',
17
  'format' => 'course/format/{$name}/',
18
  'coursereport' => 'course/report/{$name}/',
@@ -26,7 +30,11 @@ class MoodleInstaller extends BaseInstaller
26
  'gradereport' => 'grade/report/{$name}/',
27
  'gradingform' => 'grade/grading/form/{$name}/',
28
  'local' => 'local/{$name}/',
 
 
 
29
  'message' => 'message/output/{$name}/',
 
30
  'plagiarism' => 'plagiarism/{$name}/',
31
  'portfolio' => 'portfolio/{$name}/',
32
  'qbehaviour' => 'question/behaviour/{$name}/',
@@ -38,6 +46,7 @@ class MoodleInstaller extends BaseInstaller
38
  'repository' => 'repository/{$name}/',
39
  'scormreport' => 'mod/scorm/report/{$name}/',
40
  'theme' => 'theme/{$name}/',
 
41
  'profilefield' => 'user/profile/field/{$name}/',
42
  'webservice' => 'webservice/{$name}/',
43
  'workshopallocation' => 'mod/workshop/allocation/{$name}/',
6
  protected $locations = array(
7
  'mod' => 'mod/{$name}/',
8
  'admin_report' => 'admin/report/{$name}/',
9
+ 'atto' => 'lib/editor/atto/plugins/{$name}/',
10
  'tool' => 'admin/tool/{$name}/',
11
  'assignment' => 'mod/assignment/type/{$name}/',
12
  'assignsubmission' => 'mod/assign/submission/{$name}/',
14
  'auth' => 'auth/{$name}/',
15
  'availability' => 'availability/condition/{$name}/',
16
  'block' => 'blocks/{$name}/',
17
+ 'booktool' => 'mod/book/tool/{$name}/',
18
+ 'cachestore' => 'cache/stores/{$name}/',
19
+ 'cachelock' => 'cache/locks/{$name}/',
20
  'calendartype' => 'calendar/type/{$name}/',
21
  'format' => 'course/format/{$name}/',
22
  'coursereport' => 'course/report/{$name}/',
30
  'gradereport' => 'grade/report/{$name}/',
31
  'gradingform' => 'grade/grading/form/{$name}/',
32
  'local' => 'local/{$name}/',
33
+ 'logstore' => 'admin/tool/log/store/{$name}/',
34
+ 'ltisource' => 'mod/lti/source/{$name}/',
35
+ 'ltiservice' => 'mod/lti/service/{$name}/',
36
  'message' => 'message/output/{$name}/',
37
+ 'mnetservice' => 'mnet/service/{$name}/',
38
  'plagiarism' => 'plagiarism/{$name}/',
39
  'portfolio' => 'portfolio/{$name}/',
40
  'qbehaviour' => 'question/behaviour/{$name}/',
46
  'repository' => 'repository/{$name}/',
47
  'scormreport' => 'mod/scorm/report/{$name}/',
48
  'theme' => 'theme/{$name}/',
49
+ 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/',
50
  'profilefield' => 'user/profile/field/{$name}/',
51
  'webservice' => 'webservice/{$name}/',
52
  'workshopallocation' => 'mod/workshop/allocation/{$name}/',
vendor/composer/installers/src/Composer/Installers/OxidInstaller.php CHANGED
@@ -1,11 +1,59 @@
1
  <?php
2
  namespace Composer\Installers;
3
 
 
 
4
  class OxidInstaller extends BaseInstaller
5
  {
 
 
6
  protected $locations = array(
7
  'module' => 'modules/{$name}/',
8
  'theme' => 'application/views/{$name}/',
9
  'out' => 'out/{$name}/',
10
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
1
  <?php
2
  namespace Composer\Installers;
3
 
4
+ use Composer\Package\PackageInterface;
5
+
6
  class OxidInstaller extends BaseInstaller
7
  {
8
+ const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
9
+
10
  protected $locations = array(
11
  'module' => 'modules/{$name}/',
12
  'theme' => 'application/views/{$name}/',
13
  'out' => 'out/{$name}/',
14
  );
15
+
16
+ /**
17
+ * getInstallPath
18
+ *
19
+ * @param PackageInterface $package
20
+ * @param string $frameworkType
21
+ * @return void
22
+ */
23
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
+ {
25
+ $installPath = parent::getInstallPath($package, $frameworkType);
26
+ $type = $this->package->getType();
27
+ if ($type === 'oxid-module') {
28
+ $this->prepareVendorDirectory($installPath);
29
+ }
30
+ return $installPath;
31
+ }
32
+
33
+ /**
34
+ * prepareVendorDirectory
35
+ *
36
+ * Makes sure there is a vendormetadata.php file inside
37
+ * the vendor folder if there is a vendor folder.
38
+ *
39
+ * @param string $installPath
40
+ * @return void
41
+ */
42
+ protected function prepareVendorDirectory($installPath)
43
+ {
44
+ $matches = '';
45
+ $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
46
+ if (!$hasVendorDirectory) {
47
+ return;
48
+ }
49
+
50
+ $vendorDirectory = $matches['vendor'];
51
+ $vendorPath = getcwd() . '/modules/' . $vendorDirectory;
52
+ if (!file_exists($vendorPath)) {
53
+ mkdir($vendorPath, 0755, true);
54
+ }
55
+
56
+ $vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
57
+ touch($vendorMetaDataPath);
58
+ }
59
  }
vendor/composer/installers/src/Composer/Installers/Plugin.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Composer;
6
+ use Composer\IO\IOInterface;
7
+ use Composer\Plugin\PluginInterface;
8
+
9
+ class Plugin implements PluginInterface
10
+ {
11
+
12
+ public function activate(Composer $composer, IOInterface $io)
13
+ {
14
+ $installer = new Installer($io, $composer);
15
+ $composer->getInstallationManager()->addInstaller($installer);
16
+ }
17
+ }
vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php CHANGED
@@ -100,7 +100,7 @@ class CakePHPInstallerTest extends TestCase
100
 
101
  $this->setCakephpVersion($rm, '~8.8');
102
  $result = $installer->getLocations();
103
- $this->assertEquals('vendor/{$vendor}/{$name}/', $result['plugin']);
104
  }
105
 
106
  protected function setCakephpVersion($rm, $version) {
100
 
101
  $this->setCakephpVersion($rm, '~8.8');
102
  $result = $installer->getLocations();
103
+ $this->assertContains('vendor/{$vendor}/{$name}/', $result['plugin']);
104
  }
105
 
106
  protected function setCakephpVersion($rm, $version) {
vendor/composer/installers/tests/Composer/Installers/Test/CraftInstallerTest.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers\Test;
4
+
5
+ use Composer\Installers\CraftInstaller;
6
+
7
+ /**
8
+ * Tests for the CraftInstaller Class
9
+ *
10
+ * @coversDefaultClass Composer\Installers\CraftInstaller
11
+ */
12
+ class CraftInstallerTest extends TestCase
13
+ {
14
+ /** @var CraftInstaller */
15
+ private $installer;
16
+
17
+ /**
18
+ * Sets up the fixture, for example, instantiate the class-under-test.
19
+ *
20
+ * This method is called before a test is executed.
21
+ */
22
+ final public function setup()
23
+ {
24
+ $this->installer = new CraftInstaller();
25
+ }
26
+
27
+ /**
28
+ * @param string $packageName
29
+ * @param string $expectedName
30
+ *
31
+ * @covers ::inflectPackageVars
32
+ *
33
+ * @dataProvider provideExpectedInflectionResults
34
+ */
35
+ final public function testInflectPackageVars($packageName, $expectedName)
36
+ {
37
+ $installer = $this->installer;
38
+
39
+ $vars = array('name' => $packageName);
40
+ $expected = array('name' => $expectedName);
41
+
42
+ $actual = $installer->inflectPackageVars($vars);
43
+
44
+ $this->assertEquals($actual, $expected);
45
+ }
46
+
47
+ /**
48
+ * Provides various names for packages and the expected result after inflection
49
+ *
50
+ * @return array
51
+ */
52
+ final public function provideExpectedInflectionResults()
53
+ {
54
+ return array(
55
+ // lowercase
56
+ array('foo', 'foo'),
57
+ array('craftfoo', 'craftfoo'),
58
+ array('fooplugin', 'fooplugin'),
59
+ array('craftfooplugin', 'craftfooplugin'),
60
+ // lowercase - dash
61
+ array('craft-foo', 'foo'),
62
+ array('foo-plugin', 'foo'),
63
+ array('craft-foo-plugin', 'foo'),
64
+ // lowercase - underscore
65
+ array('craft_foo', 'craft_foo'),
66
+ array('foo_plugin', 'foo_plugin'),
67
+ array('craft_foo_plugin', 'craft_foo_plugin'),
68
+ // CamelCase
69
+ array('Foo', 'Foo'),
70
+ array('CraftFoo', 'CraftFoo'),
71
+ array('FooPlugin', 'FooPlugin'),
72
+ array('CraftFooPlugin', 'CraftFooPlugin'),
73
+ // CamelCase - Dash
74
+ array('Craft-Foo', 'Foo'),
75
+ array('Foo-Plugin', 'Foo'),
76
+ array('Craft-Foo-Plugin', 'Foo'),
77
+ // CamelCase - underscore
78
+ array('Craft_Foo', 'Craft_Foo'),
79
+ array('Foo_Plugin', 'Foo_Plugin'),
80
+ array('Craft_Foo_Plugin', 'Craft_Foo_Plugin'),
81
+ );
82
+ }
83
+ }
vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php CHANGED
@@ -92,6 +92,7 @@ class InstallerTest extends TestCase
92
  array('bitrix-module', true),
93
  array('bitrix-component', true),
94
  array('bitrix-theme', true),
 
95
  array('cakephp', false),
96
  array('cakephp-', false),
97
  array('cakephp-app', false),
@@ -173,6 +174,8 @@ class InstallerTest extends TestCase
173
  array('zend-library', true),
174
  array('zikula-module', true),
175
  array('zikula-theme', true),
 
 
176
  );
177
  }
178
 
@@ -202,9 +205,10 @@ class InstallerTest extends TestCase
202
  array('annotatecms-module', 'addons/modules/my_module/', 'vysinsky/my_module'),
203
  array('annotatecms-component', 'addons/components/my_component/', 'vysinsky/my_component'),
204
  array('annotatecms-service', 'addons/services/my_service/', 'vysinsky/my_service'),
205
- array('bitrix-module', 'local/modules/my_module/', 'author/my_module'),
206
- array('bitrix-component', 'local/components/my_component/', 'author/my_component'),
207
- array('bitrix-theme', 'local/templates/my_theme/', 'author/my_theme'),
 
208
  array('cakephp-plugin', 'Plugin/Ftp/', 'shama/ftp'),
209
  array('chef-cookbook', 'Chef/mre/my_cookbook/', 'mre/my_cookbook'),
210
  array('chef-role', 'Chef/roles/my_role/', 'mre/my_role'),
@@ -297,6 +301,8 @@ class InstallerTest extends TestCase
297
  array('zend-extra', 'extras/library/zend_test/', 'shama/zend_test'),
298
  array('zikula-module', 'modules/my-test_module/', 'my/test_module'),
299
  array('zikula-theme', 'themes/my-test_theme/', 'my/test_theme'),
 
 
300
  );
301
  }
302
 
92
  array('bitrix-module', true),
93
  array('bitrix-component', true),
94
  array('bitrix-theme', true),
95
+ array('bonefish-package', true),
96
  array('cakephp', false),
97
  array('cakephp-', false),
98
  array('cakephp-app', false),
174
  array('zend-library', true),
175
  array('zikula-module', true),
176
  array('zikula-theme', true),
177
+ array('kodicms-plugin', true),
178
+ array('kodicms-media', true),
179
  );
180
  }
181
 
205
  array('annotatecms-module', 'addons/modules/my_module/', 'vysinsky/my_module'),
206
  array('annotatecms-component', 'addons/components/my_component/', 'vysinsky/my_component'),
207
  array('annotatecms-service', 'addons/services/my_service/', 'vysinsky/my_service'),
208
+ array('bitrix-module', 'bitrix/modules/my_module/', 'author/my_module'),
209
+ array('bitrix-component', 'bitrix/components/my_component/', 'author/my_component'),
210
+ array('bitrix-theme', 'bitrix/templates/my_theme/', 'author/my_theme'),
211
+ array('bonefish-package', 'Packages/bonefish/package/', 'bonefish/package'),
212
  array('cakephp-plugin', 'Plugin/Ftp/', 'shama/ftp'),
213
  array('chef-cookbook', 'Chef/mre/my_cookbook/', 'mre/my_cookbook'),
214
  array('chef-role', 'Chef/roles/my_role/', 'mre/my_role'),
301
  array('zend-extra', 'extras/library/zend_test/', 'shama/zend_test'),
302
  array('zikula-module', 'modules/my-test_module/', 'my/test_module'),
303
  array('zikula-theme', 'themes/my-test_theme/', 'my/test_theme'),
304
+ array('kodicms-media', 'cms/media/vendor/my_media/', 'shama/my_media'),
305
+ array('kodicms-plugin', 'cms/plugins/my_plugin/', 'shama/my_plugin'),
306
  );
307
  }
308