Tracking Code Manager - Version 2.0.2

Version Description

Release Date - 2021-06-17

  • IWP-225 Fix PHP 8 Warning
Download this release

Release Info

Developer IntellyWP
Plugin Icon 128x128 Tracking Code Manager
Version 2.0.2
Comparing to
See all releases

Code changes from version 2.0.1 to 2.0.2

includes/admin/manager.php CHANGED
@@ -39,9 +39,9 @@ function tcmp_ui_manager() {
39
  if ($tcmp->Manager->remove($id)) {
40
  $tcmp->Options->pushSuccessMessage('CodeDeleteNotice', $id, $snippet['name']);
41
  }
42
- } else if($id!='') {
43
- $snippet=$tcmp->Manager->get($id);
44
- if($tcmp->Utils->is('action', 'toggle') && $id>0 && wp_verify_nonce(TCMP_QS('tcmp_nonce'), 'tcmp_toggle')) {
45
  $snippet['active']=($snippet['active']==0 ? 1 : 0);
46
  $tcmp->Manager->put($snippet['id'], $snippet);
47
  }
39
  if ($tcmp->Manager->remove($id)) {
40
  $tcmp->Options->pushSuccessMessage('CodeDeleteNotice', $id, $snippet['name']);
41
  }
42
+ } else if ($id != '' && $id != 0) {
43
+ $snippet = $tcmp->Manager->get($id);
44
+ if ($tcmp->Utils->is('action', 'toggle') && $id>0 && wp_verify_nonce(TCMP_QS('tcmp_nonce'), 'tcmp_toggle')) {
45
  $snippet['active']=($snippet['active']==0 ? 1 : 0);
46
  $tcmp->Manager->put($snippet['id'], $snippet);
47
  }
includes/classes/ui/Form.php CHANGED
@@ -1,486 +1,486 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) exit;
4
-
5
- class TCMP_Form {
6
- var $prefix='Form';
7
- var $labels=TRUE;
8
- var $leftLabels=TRUE;
9
- var $newline;
10
-
11
- var $tags=TRUE;
12
- var $onlyPremium=TRUE;
13
- var $leftTags=FALSE;
14
- var $premium=FALSE;
15
- var $tagNew=FALSE;
16
-
17
- public function __construct() {
18
- }
19
-
20
- //args can be a string or an associative array if you want
21
- private function getTextArgs($args, $defaults, $excludes=array()) {
22
- $result=$args;
23
- if(is_array($result) && count($result)>0) {
24
- $result='';
25
- foreach($args as $k=>$v) {
26
- if(count($excludes)==0 || !in_array($k, $excludes)) {
27
- $result.=' '.$k.'="'.$v.'"';
28
- }
29
- }
30
- } elseif(!$args) {
31
- $result='';
32
- }
33
- if(is_array($defaults) && count($defaults)>0) {
34
- foreach($defaults as $k=>$v) {
35
- if(count($excludes)==0 || !in_array($k, $excludes)) {
36
- if(stripos($result, $k.'=')===FALSE) {
37
- $result.=' '.$k.'="'.$v.'"';
38
- }
39
- }
40
- }
41
- }
42
- return $result;
43
- }
44
-
45
- public function tag($overridePremium=FALSE) {
46
- global $tcmp;
47
- /*
48
- $premium=($overridePremium || $this->premium);
49
- if((!$overridePremium && !$this->tags) || $tcmp->License->hasPremium() || ($this->onlyPremium && !$premium)) return;
50
-
51
- $tagClass='tcmp-tag-free';
52
- $tagText='FREE';
53
- if($premium) {
54
- $tagClass='tcmp-tag-premium';
55
- $tagText='<a href="'.TCMP_PAGE_PREMIUM.'" target="_new">PRO</a>';
56
- }
57
- */
58
- if(!$this->tags || !$this->tagNew) {
59
- return;
60
- }
61
-
62
- $tagClass='tcmp-tag-free';
63
- $tagText='NEW!';
64
- ?>
65
- <div style="float:left;" class="tcmp-tag <?php echo $tagClass?>"><?php echo $tagText?></div>
66
- <?php
67
- }
68
-
69
- public function label($name, $options='') {
70
- global $tcmp;
71
- $defaults=array('class'=>'');
72
- $otherText=$this->getTextArgs($options, $defaults, array('label', 'id'));
73
-
74
- $k=$this->prefix.'.'.$name;
75
- if(!is_array($options)) {
76
- $options=array();
77
- }
78
- if(isset($options['label']) && $options['label']) {
79
- $k=$options['label'];
80
- }
81
-
82
- $label=$tcmp->Lang->L($k);
83
- $for=(isset($options['id']) ? $options['id'] : $name);
84
-
85
- //check if is a mandatory field by checking the .txt language file
86
- $k=$this->prefix.'.'.$name.'.check';
87
- if($tcmp->Lang->H($k)) {
88
- $label.=' (*)';
89
- }
90
-
91
- $aClass='';
92
- /*
93
- if($this->premium && !$tcmp->License->hasPremium()) {
94
- $aClass='tcmp-label-disabled';
95
- }
96
- */
97
- ?>
98
- <label for="<?php echo $for?>" <?php echo $otherText?> >
99
- <?php if($this->leftTags) {
100
- $this->tag();
101
- }?>
102
- <span style="float:left; margin-right:5px;" class="<?php echo $aClass?>"><?php echo $label?></span>
103
- <?php if(!$this->leftTags) {
104
- $this->tag();
105
- }?>
106
- </label>
107
- <?php }
108
-
109
- public function leftInput($name, $options='') {
110
- if(!$this->labels) return;
111
- if($this->leftLabels) {
112
- $this->label($name, $options);
113
- }
114
-
115
- if($this->newline) {
116
- $this->newline();
117
- }
118
- }
119
-
120
- public function newline() {
121
- ?><div class="tcmp-form-newline"></div><?php
122
- }
123
-
124
- public function rightInput($name, $args='') {
125
- if(!$this->labels) return;
126
- if (!$this->leftLabels) {
127
- $this->label($name, $args);
128
- }
129
- $this->newline();
130
- }
131
-
132
- public function formStarts($method='post', $action='', $args=NULL) {
133
- //$this->tags=FALSE;
134
- //$this->premium=FALSE;
135
-
136
- //$defaults=array('style'=>'margin:1em 0; padding:1px 1em; background:#fff; border:1px solid #ccc;'
137
- $defaults=array('class'=>'tcmp-form');
138
- $other=$this->getTextArgs($args, $defaults);
139
- ?>
140
- <form method="<?php echo $method?>" action="<?php echo $action?>" <?php echo $other?> >
141
- <?php }
142
-
143
- public function formEnds() { ?>
144
- </form>
145
- <?php }
146
-
147
- public function divStarts($args=array()) {
148
- $defaults=array();
149
- $other=$this->getTextArgs($args, $defaults);
150
- ?>
151
- <div <?php echo $other?>>
152
- <?php }
153
- public function divEnds() { ?>
154
- </div>
155
- <div style="clear:both;"></div>
156
- <?php }
157
-
158
- public function p($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
159
- global $tcmp;
160
- ?>
161
- <p style="font-weight:bold;">
162
- <?php
163
- $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);
164
- if($tcmp->Lang->H($message.'Subtitle')) { ?>
165
- <br/>
166
- <span style="font-weight:normal;">
167
- <?php $tcmp->Lang->P($message.'Subtitle', $v1, $v2, $v3, $v4, $v5)?>
168
- </span>
169
- <?php } ?>
170
- </p>
171
- <?php }
172
- public function i($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
173
- global $tcmp;
174
- ?>
175
- <i><?php $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);?></i>
176
- <?php }
177
-
178
- var $_aceEditorUsed=FALSE;
179
- public function editor($name, $value='', $options=NULL) {
180
- global $tcmp;
181
-
182
- $defaults=array(
183
- 'editor'=>'html'
184
- , 'theme'=>'monokai'
185
- , 'ui-visible'=>''
186
- , 'height'=>350
187
- , 'width'=>700
188
- );
189
- $options=$tcmp->Utils->parseArgs($options, $defaults);
190
- $value=$tcmp->Utils->get($value, $name , $value);
191
-
192
- $args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
193
- $this->newline=TRUE;
194
- $this->leftInput($name, $args);
195
-
196
- $id=$name;
197
- switch ($options['editor']) {
198
- case 'wp':
199
- case 'wordpress':
200
- $settings=array(
201
- 'wpautop'=>TRUE
202
- , 'media_buttons'=>TRUE
203
- , 'drag_drop_upload'=>FALSE
204
- , 'editor_height'=>$options['height']
205
- );
206
- wp_editor($value, $id, $settings);
207
- ?>
208
- <script>
209
- jQuery('#<?php echo $id?>').attr('ui-visible', '<?php echo $options['ui-visible']?>');
210
- </script>
211
- <?php
212
- break;
213
- case 'html':
214
- case 'text':
215
- case 'javascript':
216
- case 'css':
217
- if(!$this->_aceEditorUsed) { ?>
218
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js" type="text/javascript" charset="utf-8"></script>
219
- <?php $this->_aceEditorUsed=TRUE;
220
- }
221
-
222
- $ace='ACE_'.$id;
223
- $text=$value;
224
- //$text=str_replace('&amp;', '&', $text);
225
- $text=str_replace('<', '&lt;', $text);
226
- $text=str_replace('>', '&gt;', $text);
227
- ?>
228
- <div id="<?php echo $id?>Ace" style="height:<?php echo $options['height']+50?>px; width: <?php echo $options['width']?>px;"><?php echo $text?></div>
229
- <textarea id="<?php echo $id?>" name="<?php echo $id?>" ui-visible="<?php echo $options['ui-visible']?>" style="display: none;"></textarea>
230
- <script>
231
- jQuery.noConflict()(function($){
232
- var text=$('#<?php echo $id?>Ace').html();
233
- text=TCMP.replace(text, '&lt;', '<');
234
- text=TCMP.replace(text, '&gt;', '>');
235
- text=TCMP.replace(text, '&amp;', '&');
236
-
237
- var <?php echo $ace?>=ace.edit("<?php echo $id?>Ace");
238
- <?php echo $ace?>.renderer.setShowGutter(false);
239
- <?php echo $ace?>.setTheme("ace/theme/<?php echo $options['theme']?>");
240
- <?php echo $ace?>.getSession().setMode("ace/mode/<?php echo $options['editor']?>");
241
- <?php echo $ace?>.getSession().setUseSoftTabs(true);
242
- <?php echo $ace?>.getSession().setUseWrapMode(true);
243
- <?php echo $ace?>.session.setUseWorker(false)
244
- <?php echo $ace?>.setValue(text);
245
-
246
- $('#<?php echo $id?>Ace').focusout(function() {
247
- var $hidden=$('#<?php echo $id?>');
248
- var code=<?php echo $ace?>.getValue();
249
- $hidden.val(code);
250
- });
251
- $('#<?php echo $id?>Ace').trigger('focusout');
252
- });
253
- </script>
254
- <?php
255
- break;
256
- }
257
- $this->newline=FALSE;
258
- $this->rightInput($name, $args);
259
- }
260
-
261
- public function textarea($name, $value='', $args=NULL) {
262
- if(is_array($value) && isset($value[$name])) {
263
- $value=$value[$name];
264
- }
265
- $defaults=array('rows'=>10, 'class'=>'tcmp-textarea');
266
- $other=$this->getTextArgs($args, $defaults);
267
-
268
- $args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
269
- $this->newline=TRUE;
270
- $this->leftInput($name, $args);
271
- ?>
272
- <textarea dir="ltr" dirname="ltr" id="<?php echo $name ?>" name="<?php echo $name?>" <?php echo $other?> ><?php echo $value ?></textarea>
273
- <?php
274
- $this->newline=FALSE;
275
- $this->rightInput($name, $args);
276
- }
277
-
278
- public function text($name, $value='', $options=NULL) {
279
- if(is_array($value) && isset($value[$name])) {
280
- $value=$value[$name];
281
- }
282
- $defaults=array('class'=>'tcmp-text');
283
- $other=$this->getTextArgs($options, $defaults);
284
-
285
- $options=array('class'=>'tcmp-label');
286
- $this->leftInput($name, $options);
287
- ?>
288
- <input type="text" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
289
- <?php
290
- $this->rightInput($name, $options);
291
- }
292
-
293
- public function hidden($name, $value='', $args=NULL) {
294
- if(is_array($value) && isset($value[$name])) {
295
- $value=$value[$name];
296
- }
297
- $defaults=array();
298
- $other=$this->getTextArgs($args, $defaults);
299
- ?>
300
- <input type="hidden" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
301
- <?php }
302
-
303
- public function nonce($action=-1, $name='_wpnonce', $referer=true, $echo=true) {
304
- wp_nonce_field($action, $name, $referer, $echo);
305
- }
306
-
307
- public function dropdown($name, $value, $options, $multiple=FALSE, $args=NULL) {
308
- global $tcmp;
309
- if(is_array($value) && isset($value[$name])) {
310
- $value=$value[$name];
311
- }
312
- $defaults=array('class'=>'tcmp-select tcmTags tcmp-dropdown');
313
- $other=$this->getTextArgs($args, $defaults);
314
-
315
- if(!is_array($value)) {
316
- $value=array($value);
317
- }
318
- if(is_string($options)) {
319
- $options=explode(',', $options);
320
- }
321
- if(is_array($options) && count($options)>0) {
322
- if(!isset($options[0]['id'])) {
323
- //this is a normal array so I use the values for "id" field and the "name" into the txt file
324
- $temp=array();
325
- foreach($options as $v) {
326
- $temp[]=array('id'=>$v, 'name'=>$tcmp->Lang->L($this->prefix.'.'.$name.'.'.$v));
327
- }
328
- $options=$temp;
329
- }
330
- }
331
-
332
- echo "<div id=\"$name-box\">";
333
- $args=array('class'=>'tcmp-label');
334
- $this->leftInput($name, $args);
335
- ?>
336
- <select id="<?php echo $name ?>" name="<?php echo $name?><?php echo ($multiple ? '[]' : '')?>" <?php echo ($multiple ? 'multiple' : '')?> <?php echo $other?> >
337
- <?php
338
- foreach($options as $v) {
339
- $selected='';
340
- if(in_array($v['id'], $value)) {
341
- $selected=' selected="selected"';
342
- }
343
- ?>
344
- <option value="<?php echo $v['id']?>" <?php echo $selected?>><?php echo $v['name']?></option>
345
- <?php } ?>
346
- </select>
347
- <?php
348
- $this->rightInput($name, $args);
349
- echo '</div>';
350
- }
351
-
352
- public function br() { ?>
353
- <br/>
354
- <?php }
355
-
356
- public function submit($value='', $args=NULL) {
357
- global $tcmp;
358
- $defaults=array();
359
- $other=$this->getTextArgs($args, $defaults);
360
- if($value=='') {
361
- $value='Send';
362
- }
363
- $this->newline();
364
- ?>
365
- <input type="submit" class="button-primary tcmp-button tcmp-submit" value="<?php $tcmp->Lang->P($value)?>" <?php echo $other?>/>
366
- <?php }
367
-
368
- public function delete($id, $action='delete', $args=NULL) {
369
- global $tcmp;
370
- $defaults=array();
371
- $other=$this->getTextArgs($args, $defaults);
372
- ?>
373
- <input type="button" class="button tcmp-button" value="<?php $tcmp->Lang->P('Delete?')?>" onclick="if (confirm('<?php $tcmp->Lang->P('Question.DeleteQuestion')?>') ) window.location='<?php echo TCMP_TAB_MANAGER_URI?>&action=<?php echo $action?>&id=<?php echo $id ?>&amp;tcmp_nonce=<?php echo esc_attr(wp_create_nonce('tcmp_delete')); ?>';" <?php echo $other?> />
374
- &nbsp;
375
- <?php
376
- }
377
-
378
- public function radio($name, $current=1, $value=1, $options=NULL) {
379
- if(!is_array($options)) {
380
- $options=array();
381
- }
382
- $options['radio']=TRUE;
383
- $options['id']=$name.'_'.$value;
384
- return $this->checkbox($name, $current, $value, $options);
385
- }
386
- public function checkbox($name, $current=1, $value=1, $options=NULL) {
387
- global $tcmp;
388
- if(is_array($current) && isset($current[$name])) {
389
- $current=$current[$name];
390
- }
391
-
392
- /*
393
- $defaults=array('class'=>'tcmp-checkbox', 'style'=>'margin:0px; margin-right:4px;');
394
- if($this->premium && !$tcmp->License->hasPremium()) {
395
- $defaults['disabled']='disabled';
396
- $value='';
397
- }
398
- */
399
- if(!is_array($options)) {
400
- $options=array();
401
- }
402
-
403
- $label=$name;
404
- $type='checkbox';
405
- if(isset($options['radio']) && $options['radio']) {
406
- $type='radio';
407
- $label.='_'.$value;
408
- }
409
-
410
- $defaults=array(
411
- 'class'=>'tcmp-checkbox'
412
- , 'style'=>'margin:0px; margin-right:4px;'
413
- , 'id'=>$name
414
- );
415
- $other=$this->getTextArgs($options, $defaults, array('radio', 'label'));
416
- $prev=$this->leftLabels;
417
- $this->leftLabels=FALSE;
418
-
419
- $label=(isset($options['label']) ? $options['label'] : $this->prefix.'.'.$label);
420
- $id=(isset($options['id']) ? $options['id'] : $name);
421
- $options=array(
422
- 'class'=>''
423
- , 'style'=>'margin-top:-1px;'
424
- , 'label'=>$label
425
- , 'id'=>$id
426
- );
427
- $this->leftInput($name, $options);
428
- ?>
429
- <input type="<?php echo $type ?>" name="<?php echo $name?>" value="<?php echo $value?>" <?php echo($current==$value ? 'checked="checked"' : '') ?> <?php echo $other?> >
430
- <?php
431
- $this->rightInput($name, $options);
432
- $this->leftLabels=$prev;
433
- }
434
-
435
- public function checkText($nameActive, $nameText, $value) {
436
- global $tcmp;
437
-
438
- $args=array('class'=>'tcmp-hideShow tcmp-checkbox'
439
- , 'tcmp-hideIfTrue'=>'false'
440
- , 'tcmp-hideShow'=>$nameText.'Text');
441
- $this->checkbox($nameActive, $value, 1, $args);
442
- if($this->premium) {
443
- return;
444
- }
445
- ?>
446
- <div id="<?php echo $nameText?>Text" style="float:left;">
447
- <?php
448
- $prev=$this->labels;
449
- $this->labels=FALSE;
450
- $args=array();
451
- $this->text($nameText, $value, $args);
452
- $this->labels=$prev;
453
- ?>
454
- </div>
455
- <?php }
456
-
457
- //create a checkbox with a left select visible only when the checkbox is selected
458
- public function checkSelect($nameActive, $nameArray, $value, $values, $options=NULL) {
459
- global $tcmp;
460
- ?>
461
- <div id="<?php echo $nameArray?>Box" style="float:left;">
462
- <?php
463
- $defaults=array(
464
- 'class'=>'tcmp-hideShow tcmp-checkbox'
465
- , 'tcmp-hideIfTrue'=>'false'
466
- , 'tcmp-hideShow'=>$nameArray.'Tags'
467
- );
468
- $options=$tcmp->Utils->parseArgs($options, $defaults);
469
- $this->checkbox($nameActive, $value, 1, $options);
470
- /*if(!$this->premium || $tcmp->License->hasPremium()) { ?>*/
471
- if(TRUE) { ?>
472
- <div id="<?php echo $nameArray?>Tags" style="float:left;">
473
- <?php
474
- $prev=$this->labels;
475
- $this->labels=FALSE;
476
- $options=array('class'=>'tcmp-select tcmLineTags');
477
- $this->dropdown($nameArray, $value, $values, TRUE, $options);
478
- $this->labels=$prev;
479
- ?>
480
- </div>
481
- <?php } ?>
482
- </div>
483
- <?php
484
- $this->newline();
485
- }
486
  }
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ class TCMP_Form {
6
+ var $prefix='Form';
7
+ var $labels=TRUE;
8
+ var $leftLabels=TRUE;
9
+ var $newline;
10
+
11
+ var $tags=TRUE;
12
+ var $onlyPremium=TRUE;
13
+ var $leftTags=FALSE;
14
+ var $premium=FALSE;
15
+ var $tagNew=FALSE;
16
+
17
+ public function __construct() {
18
+ }
19
+
20
+ //args can be a string or an associative array if you want
21
+ private function getTextArgs($args, $defaults, $excludes=array()) {
22
+ $result=$args;
23
+ if(is_array($result) && count($result)>0) {
24
+ $result='';
25
+ foreach($args as $k=>$v) {
26
+ if(count($excludes)==0 || !in_array($k, $excludes)) {
27
+ $result.=' '.$k.'="'.$v.'"';
28
+ }
29
+ }
30
+ } elseif(!$args) {
31
+ $result='';
32
+ }
33
+ if(is_array($defaults) && count($defaults)>0) {
34
+ foreach($defaults as $k=>$v) {
35
+ if(count($excludes)==0 || !in_array($k, $excludes)) {
36
+ if(stripos($result, $k.'=')===FALSE) {
37
+ $result.=' '.$k.'="'.$v.'"';
38
+ }
39
+ }
40
+ }
41
+ }
42
+ return $result;
43
+ }
44
+
45
+ public function tag($overridePremium=FALSE) {
46
+ global $tcmp;
47
+ /*
48
+ $premium=($overridePremium || $this->premium);
49
+ if((!$overridePremium && !$this->tags) || $tcmp->License->hasPremium() || ($this->onlyPremium && !$premium)) return;
50
+
51
+ $tagClass='tcmp-tag-free';
52
+ $tagText='FREE';
53
+ if($premium) {
54
+ $tagClass='tcmp-tag-premium';
55
+ $tagText='<a href="'.TCMP_PAGE_PREMIUM.'" target="_new">PRO</a>';
56
+ }
57
+ */
58
+ if(!$this->tags || !$this->tagNew) {
59
+ return;
60
+ }
61
+
62
+ $tagClass='tcmp-tag-free';
63
+ $tagText='NEW!';
64
+ ?>
65
+ <div style="float:left;" class="tcmp-tag <?php echo $tagClass?>"><?php echo $tagText?></div>
66
+ <?php
67
+ }
68
+
69
+ public function label($name, $options='') {
70
+ global $tcmp;
71
+ $defaults=array('class'=>'');
72
+ $otherText=$this->getTextArgs($options, $defaults, array('label', 'id'));
73
+
74
+ $k=$this->prefix.'.'.$name;
75
+ if(!is_array($options)) {
76
+ $options=array();
77
+ }
78
+ if(isset($options['label']) && $options['label']) {
79
+ $k=$options['label'];
80
+ }
81
+
82
+ $label=$tcmp->Lang->L($k);
83
+ $for=(isset($options['id']) ? $options['id'] : $name);
84
+
85
+ //check if is a mandatory field by checking the .txt language file
86
+ $k=$this->prefix.'.'.$name.'.check';
87
+ if($tcmp->Lang->H($k)) {
88
+ $label.=' (*)';
89
+ }
90
+
91
+ $aClass='';
92
+ /*
93
+ if($this->premium && !$tcmp->License->hasPremium()) {
94
+ $aClass='tcmp-label-disabled';
95
+ }
96
+ */
97
+ ?>
98
+ <label for="<?php echo $for?>" <?php echo $otherText?> >
99
+ <?php if($this->leftTags) {
100
+ $this->tag();
101
+ }?>
102
+ <span style="float:left; margin-right:5px;" class="<?php echo $aClass?>"><?php echo $label?></span>
103
+ <?php if(!$this->leftTags) {
104
+ $this->tag();
105
+ }?>
106
+ </label>
107
+ <?php }
108
+
109
+ public function leftInput($name, $options='') {
110
+ if(!$this->labels) return;
111
+ if($this->leftLabels) {
112
+ $this->label($name, $options);
113
+ }
114
+
115
+ if($this->newline) {
116
+ $this->newline();
117
+ }
118
+ }
119
+
120
+ public function newline() {
121
+ ?><div class="tcmp-form-newline"></div><?php
122
+ }
123
+
124
+ public function rightInput($name, $args='') {
125
+ if(!$this->labels) return;
126
+ if (!$this->leftLabels) {
127
+ $this->label($name, $args);
128
+ }
129
+ $this->newline();
130
+ }
131
+
132
+ public function formStarts($method='post', $action='', $args=NULL) {
133
+ //$this->tags=FALSE;
134
+ //$this->premium=FALSE;
135
+
136
+ //$defaults=array('style'=>'margin:1em 0; padding:1px 1em; background:#fff; border:1px solid #ccc;'
137
+ $defaults=array('class'=>'tcmp-form');
138
+ $other=$this->getTextArgs($args, $defaults);
139
+ ?>
140
+ <form method="<?php echo $method?>" action="<?php echo $action?>" <?php echo $other?> >
141
+ <?php }
142
+
143
+ public function formEnds() { ?>
144
+ </form>
145
+ <?php }
146
+
147
+ public function divStarts($args=array()) {
148
+ $defaults=array();
149
+ $other=$this->getTextArgs($args, $defaults);
150
+ ?>
151
+ <div <?php echo $other?>>
152
+ <?php }
153
+ public function divEnds() { ?>
154
+ </div>
155
+ <div style="clear:both;"></div>
156
+ <?php }
157
+
158
+ public function p($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
159
+ global $tcmp;
160
+ ?>
161
+ <p style="font-weight:bold;">
162
+ <?php
163
+ $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);
164
+ if($tcmp->Lang->H($message.'Subtitle')) { ?>
165
+ <br/>
166
+ <span style="font-weight:normal;">
167
+ <?php $tcmp->Lang->P($message.'Subtitle', $v1, $v2, $v3, $v4, $v5)?>
168
+ </span>
169
+ <?php } ?>
170
+ </p>
171
+ <?php }
172
+ public function i($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
173
+ global $tcmp;
174
+ ?>
175
+ <i><?php $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);?></i>
176
+ <?php }
177
+
178
+ var $_aceEditorUsed=FALSE;
179
+ public function editor($name, $value='', $options=NULL) {
180
+ global $tcmp;
181
+
182
+ $defaults=array(
183
+ 'editor'=>'html'
184
+ , 'theme'=>'monokai'
185
+ , 'ui-visible'=>''
186
+ , 'height'=>350
187
+ , 'width'=>700
188
+ );
189
+ $options=$tcmp->Utils->parseArgs($options, $defaults);
190
+ $value=$tcmp->Utils->get($value, $name , $value);
191
+
192
+ $args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
193
+ $this->newline=TRUE;
194
+ $this->leftInput($name, $args);
195
+
196
+ $id=$name;
197
+ switch ($options['editor']) {
198
+ case 'wp':
199
+ case 'wordpress':
200
+ $settings=array(
201
+ 'wpautop'=>TRUE
202
+ , 'media_buttons'=>TRUE
203
+ , 'drag_drop_upload'=>FALSE
204
+ , 'editor_height'=>$options['height']
205
+ );
206
+ wp_editor($value, $id, $settings);
207
+ ?>
208
+ <script>
209
+ jQuery('#<?php echo $id?>').attr('ui-visible', '<?php echo $options['ui-visible']?>');
210
+ </script>
211
+ <?php
212
+ break;
213
+ case 'html':
214
+ case 'text':
215
+ case 'javascript':
216
+ case 'css':
217
+ if(!$this->_aceEditorUsed) { ?>
218
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js" type="text/javascript" charset="utf-8"></script>
219
+ <?php $this->_aceEditorUsed=TRUE;
220
+ }
221
+
222
+ $ace='ACE_'.$id;
223
+ $text=$value;
224
+ //$text=str_replace('&amp;', '&', $text);
225
+ $text=str_replace('<', '&lt;', $text);
226
+ $text=str_replace('>', '&gt;', $text);
227
+ ?>
228
+ <div id="<?php echo $id?>Ace" style="height:<?php echo $options['height']+50?>px; width: <?php echo $options['width']?>px;"><?php echo $text?></div>
229
+ <textarea id="<?php echo $id?>" name="<?php echo $id?>" ui-visible="<?php echo $options['ui-visible']?>" style="display: none;"></textarea>
230
+ <script>
231
+ jQuery.noConflict()(function($){
232
+ var text=$('#<?php echo $id?>Ace').html();
233
+ text=TCMP.replace(text, '&lt;', '<');
234
+ text=TCMP.replace(text, '&gt;', '>');
235
+ text=TCMP.replace(text, '&amp;', '&');
236
+
237
+ var <?php echo $ace?>=ace.edit("<?php echo $id?>Ace");
238
+ <?php echo $ace?>.renderer.setShowGutter(false);
239
+ <?php echo $ace?>.setTheme("ace/theme/<?php echo $options['theme']?>");
240
+ <?php echo $ace?>.getSession().setMode("ace/mode/<?php echo $options['editor']?>");
241
+ <?php echo $ace?>.getSession().setUseSoftTabs(true);
242
+ <?php echo $ace?>.getSession().setUseWrapMode(true);
243
+ <?php echo $ace?>.session.setUseWorker(false)
244
+ <?php echo $ace?>.setValue(text);
245
+
246
+ $('#<?php echo $id?>Ace').focusout(function() {
247
+ var $hidden=$('#<?php echo $id?>');
248
+ var code=<?php echo $ace?>.getValue();
249
+ $hidden.val(code);
250
+ });
251
+ $('#<?php echo $id?>Ace').trigger('focusout');
252
+ });
253
+ </script>
254
+ <?php
255
+ break;
256
+ }
257
+ $this->newline=FALSE;
258
+ $this->rightInput($name, $args);
259
+ }
260
+
261
+ public function textarea($name, $value='', $args=NULL) {
262
+ if(is_array($value) && isset($value[$name])) {
263
+ $value=$value[$name];
264
+ }
265
+ $defaults=array('rows'=>10, 'class'=>'tcmp-textarea');
266
+ $other=$this->getTextArgs($args, $defaults);
267
+
268
+ $args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
269
+ $this->newline=TRUE;
270
+ $this->leftInput($name, $args);
271
+ ?>
272
+ <textarea dir="ltr" dirname="ltr" id="<?php echo $name ?>" name="<?php echo $name?>" <?php echo $other?> ><?php echo $value ?></textarea>
273
+ <?php
274
+ $this->newline=FALSE;
275
+ $this->rightInput($name, $args);
276
+ }
277
+
278
+ public function text($name, $value='', $options=NULL) {
279
+ if(is_array($value) && isset($value[$name])) {
280
+ $value=$value[$name];
281
+ }
282
+ $defaults=array('class'=>'tcmp-text');
283
+ $other=$this->getTextArgs($options, $defaults);
284
+
285
+ $options=array('class'=>'tcmp-label');
286
+ $this->leftInput($name, $options);
287
+ ?>
288
+ <input type="text" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
289
+ <?php
290
+ $this->rightInput($name, $options);
291
+ }
292
+
293
+ public function hidden($name, $value='', $args=NULL) {
294
+ if(is_array($value) && isset($value[$name])) {
295
+ $value=$value[$name];
296
+ }
297
+ $defaults=array();
298
+ $other=$this->getTextArgs($args, $defaults);
299
+ ?>
300
+ <input type="hidden" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
301
+ <?php }
302
+
303
+ public function nonce($action=-1, $name='_wpnonce', $referer=true, $echo=true) {
304
+ wp_nonce_field($action, $name, $referer, $echo);
305
+ }
306
+
307
+ public function dropdown($name, $value, $options, $multiple=FALSE, $args=NULL) {
308
+ global $tcmp;
309
+ if(is_array($value) && isset($value[$name])) {
310
+ $value=$value[$name];
311
+ }
312
+ $defaults=array('class'=>'tcmp-select tcmTags tcmp-dropdown');
313
+ $other=$this->getTextArgs($args, $defaults);
314
+
315
+ if(!is_array($value)) {
316
+ $value=array($value);
317
+ }
318
+ if(is_string($options)) {
319
+ $options=explode(',', $options);
320
+ }
321
+ if(is_array($options) && count($options)>0) {
322
+ if(!isset($options[0]['id'])) {
323
+ //this is a normal array so I use the values for "id" field and the "name" into the txt file
324
+ $temp=array();
325
+ foreach($options as $v) {
326
+ $temp[]=array('id'=>$v, 'name'=>$tcmp->Lang->L($this->prefix.'.'.$name.'.'.$v));
327
+ }
328
+ $options=$temp;
329
+ }
330
+ }
331
+
332
+ echo "<div id=\"$name-box\">";
333
+ $args=array('class'=>'tcmp-label');
334
+ $this->leftInput($name, $args);
335
+ ?>
336
+ <select id="<?php echo $name ?>" name="<?php echo $name?><?php echo ($multiple ? '[]' : '')?>" <?php echo ($multiple ? 'multiple' : '')?> <?php echo $other?> >
337
+ <?php
338
+ foreach($options as $v) {
339
+ $selected='';
340
+ if(in_array($v['id'], $value)) {
341
+ $selected=' selected="selected"';
342
+ }
343
+ ?>
344
+ <option value="<?php echo $v['id']?>" <?php echo $selected?>><?php echo $v['name']?></option>
345
+ <?php } ?>
346
+ </select>
347
+ <?php
348
+ $this->rightInput($name, $args);
349
+ echo '</div>';
350
+ }
351
+
352
+ public function br() { ?>
353
+ <br/>
354
+ <?php }
355
+
356
+ public function submit($value='', $args=NULL) {
357
+ global $tcmp;
358
+ $defaults=array();
359
+ $other=$this->getTextArgs($args, $defaults);
360
+ if($value=='') {
361
+ $value='Send';
362
+ }
363
+ $this->newline();
364
+ ?>
365
+ <input type="submit" class="button-primary tcmp-button tcmp-submit" value="<?php $tcmp->Lang->P($value)?>" <?php echo $other?>/>
366
+ <?php }
367
+
368
+ public function delete($id, $action='delete', $args=NULL) {
369
+ global $tcmp;
370
+ $defaults=array();
371
+ $other=$this->getTextArgs($args, $defaults);
372
+ ?>
373
+ <input type="button" class="button tcmp-button" value="<?php $tcmp->Lang->P('Delete?')?>" onclick="if (confirm('<?php $tcmp->Lang->P('Question.DeleteQuestion')?>') ) window.location='<?php echo TCMP_TAB_MANAGER_URI?>&action=<?php echo $action?>&id=<?php echo $id ?>&amp;tcmp_nonce=<?php echo esc_attr(wp_create_nonce('tcmp_delete')); ?>';" <?php echo $other?> />
374
+ &nbsp;
375
+ <?php
376
+ }
377
+
378
+ public function radio($name, $current=1, $value=1, $options=NULL) {
379
+ if(!is_array($options)) {
380
+ $options=array();
381
+ }
382
+ $options['radio']=TRUE;
383
+ $options['id']=$name.'_'.$value;
384
+ return $this->checkbox($name, $current, $value, $options);
385
+ }
386
+ public function checkbox($name, $current=1, $value=1, $options=NULL) {
387
+ global $tcmp;
388
+ if(is_array($current) && isset($current[$name])) {
389
+ $current=$current[$name];
390
+ }
391
+
392
+ /*
393
+ $defaults=array('class'=>'tcmp-checkbox', 'style'=>'margin:0px; margin-right:4px;');
394
+ if($this->premium && !$tcmp->License->hasPremium()) {
395
+ $defaults['disabled']='disabled';
396
+ $value='';
397
+ }
398
+ */
399
+ if(!is_array($options)) {
400
+ $options=array();
401
+ }
402
+
403
+ $label=$name;
404
+ $type='checkbox';
405
+ if(isset($options['radio']) && $options['radio']) {
406
+ $type='radio';
407
+ $label.='_'.$value;
408
+ }
409
+
410
+ $defaults=array(
411
+ 'class'=>'tcmp-checkbox'
412
+ , 'style'=>'margin:0px; margin-right:4px;'
413
+ , 'id'=>$name
414
+ );
415
+ $other=$this->getTextArgs($options, $defaults, array('radio', 'label'));
416
+ $prev=$this->leftLabels;
417
+ $this->leftLabels=FALSE;
418
+
419
+ $label=(isset($options['label']) ? $options['label'] : $this->prefix.'.'.$label);
420
+ $id=(isset($options['id']) ? $options['id'] : $name);
421
+ $options=array(
422
+ 'class'=>''
423
+ , 'style'=>'margin-top:-1px;'
424
+ , 'label'=>$label
425
+ , 'id'=>$id
426
+ );
427
+ $this->leftInput($name, $options);
428
+ ?>
429
+ <input type="<?php echo $type ?>" name="<?php echo $name?>" value="<?php echo $value?>" <?php echo($current==$value ? 'checked="checked"' : '') ?> <?php echo $other?> >
430
+ <?php
431
+ $this->rightInput($name, $options);
432
+ $this->leftLabels=$prev;
433
+ }
434
+
435
+ public function checkText($nameActive, $nameText, $value) {
436
+ global $tcmp;
437
+
438
+ $args=array('class'=>'tcmp-hideShow tcmp-checkbox'
439
+ , 'tcmp-hideIfTrue'=>'false'
440
+ , 'tcmp-hideShow'=>$nameText.'Text');
441
+ $this->checkbox($nameActive, $value, 1, $args);
442
+ if($this->premium) {
443
+ return;
444
+ }
445
+ ?>
446
+ <div id="<?php echo $nameText?>Text" style="float:left;">
447
+ <?php
448
+ $prev=$this->labels;
449
+ $this->labels=FALSE;
450
+ $args=array();
451
+ $this->text($nameText, $value, $args);
452
+ $this->labels=$prev;
453
+ ?>
454
+ </div>
455
+ <?php }
456
+
457
+ //create a checkbox with a left select visible only when the checkbox is selected
458
+ public function checkSelect($nameActive, $nameArray, $value, $values, $options=NULL) {
459
+ global $tcmp;
460
+ ?>
461
+ <div id="<?php echo $nameArray?>Box" style="float:left;">
462
+ <?php
463
+ $defaults=array(
464
+ 'class'=>'tcmp-hideShow tcmp-checkbox'
465
+ , 'tcmp-hideIfTrue'=>'false'
466
+ , 'tcmp-hideShow'=>$nameArray.'Tags'
467
+ );
468
+ $options=$tcmp->Utils->parseArgs($options, $defaults);
469
+ $this->checkbox($nameActive, $value, 1, $options);
470
+ /*if(!$this->premium || $tcmp->License->hasPremium()) { ?>*/
471
+ if(TRUE) { ?>
472
+ <div id="<?php echo $nameArray?>Tags" style="float:left;">
473
+ <?php
474
+ $prev=$this->labels;
475
+ $this->labels=FALSE;
476
+ $options=array('class'=>'tcmp-select tcmLineTags');
477
+ $this->dropdown($nameArray, $value, $values, TRUE, $options);
478
+ $this->labels=$prev;
479
+ ?>
480
+ </div>
481
+ <?php } ?>
482
+ </div>
483
+ <?php
484
+ $this->newline();
485
+ }
486
  }
includes/classes/utils/Ecommerce.php CHANGED
@@ -1,178 +1,178 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit;
3
-
4
- class TCMP_Ecommerce {
5
- var $_orderId;
6
-
7
- function __construct() {
8
- add_action('woocommerce_thankyou', array(&$this, 'wooCommerceThankYou'), -10);
9
- //add_action('woocommerce_thankyou_order_id', array(&$this, 'wooCommerceThankYou'), -10);
10
-
11
- add_action('edd_payment_receipt_after_table', array(&$this, 'eddThankYou'));
12
- add_action('wpsc_transaction_result_cart_item', array(&$this, 'eCommerceThankYou'));
13
- }
14
-
15
- public function getCustomPostType($pluginId) {
16
- $result='';
17
- switch (intval($pluginId)) {
18
- case TCMP_PLUGINS_WOOCOMMERCE:
19
- $result='product';
20
- break;
21
- case TCMP_PLUGINS_EDD:
22
- $result='download';
23
- break;
24
- case TCMP_PLUGINS_WP_ECOMMERCE:
25
- $result='wpsc-product';
26
- break;
27
- }
28
- return $result;
29
- }
30
-
31
- //WPSC_Purchase_Log_Customer_HTML_Notification
32
- function eCommerceThankYou($order) {
33
- global $tcmp;
34
- $purchase=new TCMP_EcommercePurchase();
35
-
36
- $orderId=intval($order['purchase_id']);
37
- $purchase->orderId=$orderId;
38
- $tcmp->Log->debug('Ecommerce: ECOMMERCE THANKYOU');
39
- $tcmp->Log->debug('Ecommerce: NEW ECOMMERCE ORDERID=%s', $orderId);
40
-
41
- $order=new WPSC_Purchase_Log($orderId);
42
- $items=$order->get_cart_contents();
43
- $productsIds=array();
44
- foreach ($items as $v) {
45
- if(isset($v->prodid)) {
46
- $k=intval($v->prodid);
47
- if($k) {
48
- $v=$v->name;
49
- $purchase->products[]=$v;
50
- $productsIds[]=$k;
51
- $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
52
- }
53
- }
54
- }
55
-
56
- $args=array(
57
- 'pluginId'=>TCMP_PLUGINS_WP_ECOMMERCE
58
- , 'productsIds'=>$productsIds
59
- , 'categoriesIds'=>array()
60
- , 'tagsIds'=>array()
61
- );
62
- $tcmp->Options->pushConversionSnippets($args, $purchase);
63
- return '';
64
- }
65
-
66
- function eddThankYou($payment, $edd_receipt_args=NULL) {
67
- global $tcmp;
68
- if(!class_exists('EDD_Customer')) {
69
- return;
70
- }
71
-
72
- /* @var $payment WP_Post */
73
- $purchase=new TCMP_EcommercePurchase();
74
- $purchase->orderId=$tcmp->Utils->get($payment, 'ID');
75
- $purchase->userId=$tcmp->Utils->get($payment, 'post_author', FALSE);
76
-
77
- $settings=edd_get_settings();
78
- if(isset($settings['currency'])) {
79
- $purchase->currency=$settings['currency'];
80
- }
81
-
82
- $tcmp->Log->debug('Ecommerce: EDD THANKYOU');
83
- $tcmp->Log->debug('Ecommerce: NEW EDD ORDERID=%s', $purchase->orderId);
84
- $cart=edd_get_payment_meta_cart_details($purchase->orderId, TRUE);
85
- $productsIds=array();
86
- $purchase->amount=0;
87
- $purchase->total=0;
88
- foreach ($cart as $key=>$item) {
89
- if(isset($item['id'])) {
90
- $k=intval($item['id']);
91
- if($k) {
92
- $v=$item['name'];
93
- $purchase->products[]=$v;
94
- $productsIds[]=$k;
95
- $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
96
- }
97
- }
98
- }
99
-
100
- $args=array(
101
- 'pluginId'=>TCMP_PLUGINS_EDD
102
- , 'productsIds'=>$productsIds
103
- , 'categoriesIds'=>array()
104
- , 'tagsIds'=>array()
105
- );
106
- $tcmp->Options->pushConversionSnippets($args, $purchase);
107
- }
108
- function wooCommerceThankYou($orderId) {
109
- global $tcmp;
110
- if(!$orderId) {
111
- return;
112
- }
113
- if($this->_orderId===$orderId) {
114
- return;
115
- }
116
-
117
- $this->_orderId=$orderId;
118
- $purchase=new TCMP_EcommercePurchase();
119
- $purchase->orderId=$orderId;
120
- $tcmp->Log->debug('Ecommerce: WOOCOMMERCE THANKYOU');
121
-
122
- $order=new WC_Order($orderId);
123
- $purchase->email=$order->get_billing_email();
124
- $purchase->fullname=$order->get_billing_first_name();
125
- if($order->get_billing_last_name()!='') {
126
- $purchase->fullname.=' '.$order->get_billing_last_name();
127
- }
128
-
129
- $items=$order->get_items();
130
- $tcmp->Log->debug('Ecommerce: NEW WOOCOMMERCE ORDERID=%s', $orderId);
131
- $productsIds=array();
132
- foreach($items as $k=>$v) {
133
- $k=intval($v['product_id']);
134
- if($k>0) {
135
- $v=$v['name'];
136
- $purchase->products[]=$v;
137
- $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
138
- $productsIds[]=$k;
139
- }
140
- }
141
-
142
- $args=array(
143
- 'pluginId'=>TCMP_PLUGINS_WOOCOMMERCE
144
- , 'productsIds'=>$productsIds
145
- , 'categoriesIds'=>array()
146
- , 'tagsIds'=>array()
147
- );
148
- $tcmp->Options->pushConversionSnippets($args, $purchase);
149
- }
150
-
151
- function getActivePlugins() {
152
- return $this->getPlugins(TRUE);
153
- }
154
- function getPlugins($onlyActive=TRUE) {
155
- global $tcmp;
156
-
157
- $array=array();
158
- $array[]=TCMP_PLUGINS_WOOCOMMERCE;
159
- $array[]=TCMP_PLUGINS_EDD;
160
- $array[]=TCMP_PLUGINS_WP_ECOMMERCE;
161
- /*
162
- $array[]=TCMP_PLUGINS_WP_SPSC;
163
- $array[]=TCMP_PLUGINS_S2MEMBER;
164
- $array[]=TCMP_PLUGINS_MEMBERS;
165
- $array[]=TCMP_PLUGINS_CART66;
166
- $array[]=TCMP_PLUGINS_ESHOP;
167
- $array[]=TCMP_PLUGINS_JIGOSHOP;
168
- $array[]=TCMP_PLUGINS_MARKETPRESS;
169
- $array[]=TCMP_PLUGINS_SHOPP;
170
- $array[]=TCMP_PLUGINS_SIMPLE_WP_ECOMMERCE;
171
- $array[]=TCMP_PLUGINS_CF7;
172
- $array[]=TCMP_PLUGINS_GRAVITY;
173
- */
174
-
175
- $array=$tcmp->Plugin->getPlugins($array, $onlyActive);
176
- return $array;
177
- }
178
- }
1
+ <?php
2
+ if (!defined('ABSPATH')) exit;
3
+
4
+ class TCMP_Ecommerce {
5
+ var $_orderId;
6
+
7
+ function __construct() {
8
+ add_action('woocommerce_thankyou', array(&$this, 'wooCommerceThankYou'), -10);
9
+ //add_action('woocommerce_thankyou_order_id', array(&$this, 'wooCommerceThankYou'), -10);
10
+
11
+ add_action('edd_payment_receipt_after_table', array(&$this, 'eddThankYou'));
12
+ add_action('wpsc_transaction_result_cart_item', array(&$this, 'eCommerceThankYou'));
13
+ }
14
+
15
+ public function getCustomPostType($pluginId) {
16
+ $result='';
17
+ switch (intval($pluginId)) {
18
+ case TCMP_PLUGINS_WOOCOMMERCE:
19
+ $result='product';
20
+ break;
21
+ case TCMP_PLUGINS_EDD:
22
+ $result='download';
23
+ break;
24
+ case TCMP_PLUGINS_WP_ECOMMERCE:
25
+ $result='wpsc-product';
26
+ break;
27
+ }
28
+ return $result;
29
+ }
30
+
31
+ //WPSC_Purchase_Log_Customer_HTML_Notification
32
+ function eCommerceThankYou($order) {
33
+ global $tcmp;
34
+ $purchase=new TCMP_EcommercePurchase();
35
+
36
+ $orderId=intval($order['purchase_id']);
37
+ $purchase->orderId=$orderId;
38
+ $tcmp->Log->debug('Ecommerce: ECOMMERCE THANKYOU');
39
+ $tcmp->Log->debug('Ecommerce: NEW ECOMMERCE ORDERID=%s', $orderId);
40
+
41
+ $order=new WPSC_Purchase_Log($orderId);
42
+ $items=$order->get_cart_contents();
43
+ $productsIds=array();
44
+ foreach ($items as $v) {
45
+ if(isset($v->prodid)) {
46
+ $k=intval($v->prodid);
47
+ if($k) {
48
+ $v=$v->name;
49
+ $purchase->products[]=$v;
50
+ $productsIds[]=$k;
51
+ $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
52
+ }
53
+ }
54
+ }
55
+
56
+ $args=array(
57
+ 'pluginId'=>TCMP_PLUGINS_WP_ECOMMERCE
58
+ , 'productsIds'=>$productsIds
59
+ , 'categoriesIds'=>array()
60
+ , 'tagsIds'=>array()
61
+ );
62
+ $tcmp->Options->pushConversionSnippets($args, $purchase);
63
+ return '';
64
+ }
65
+
66
+ function eddThankYou($payment, $edd_receipt_args=NULL) {
67
+ global $tcmp;
68
+ if(!class_exists('EDD_Customer')) {
69
+ return;
70
+ }
71
+
72
+ /* @var $payment WP_Post */
73
+ $purchase=new TCMP_EcommercePurchase();
74
+ $purchase->orderId=$tcmp->Utils->get($payment, 'ID');
75
+ $purchase->userId=$tcmp->Utils->get($payment, 'post_author', FALSE);
76
+
77
+ $settings=edd_get_settings();
78
+ if(isset($settings['currency'])) {
79
+ $purchase->currency=$settings['currency'];
80
+ }
81
+
82
+ $tcmp->Log->debug('Ecommerce: EDD THANKYOU');
83
+ $tcmp->Log->debug('Ecommerce: NEW EDD ORDERID=%s', $purchase->orderId);
84
+ $cart=edd_get_payment_meta_cart_details($purchase->orderId, TRUE);
85
+ $productsIds=array();
86
+ $purchase->amount=0;
87
+ $purchase->total=0;
88
+ foreach ($cart as $key=>$item) {
89
+ if(isset($item['id'])) {
90
+ $k=intval($item['id']);
91
+ if($k) {
92
+ $v=$item['name'];
93
+ $purchase->products[]=$v;
94
+ $productsIds[]=$k;
95
+ $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
96
+ }
97
+ }
98
+ }
99
+
100
+ $args=array(
101
+ 'pluginId'=>TCMP_PLUGINS_EDD
102
+ , 'productsIds'=>$productsIds
103
+ , 'categoriesIds'=>array()
104
+ , 'tagsIds'=>array()
105
+ );
106
+ $tcmp->Options->pushConversionSnippets($args, $purchase);
107
+ }
108
+ function wooCommerceThankYou($orderId) {
109
+ global $tcmp;
110
+ if(!$orderId) {
111
+ return;
112
+ }
113
+ if($this->_orderId===$orderId) {
114
+ return;
115
+ }
116
+
117
+ $this->_orderId=$orderId;
118
+ $purchase=new TCMP_EcommercePurchase();
119
+ $purchase->orderId=$orderId;
120
+ $tcmp->Log->debug('Ecommerce: WOOCOMMERCE THANKYOU');
121
+
122
+ $order=new WC_Order($orderId);
123
+ $purchase->email=$order->get_billing_email();
124
+ $purchase->fullname=$order->get_billing_first_name();
125
+ if($order->get_billing_last_name()!='') {
126
+ $purchase->fullname.=' '.$order->get_billing_last_name();
127
+ }
128
+
129
+ $items=$order->get_items();
130
+ $tcmp->Log->debug('Ecommerce: NEW WOOCOMMERCE ORDERID=%s', $orderId);
131
+ $productsIds=array();
132
+ foreach($items as $k=>$v) {
133
+ $k=intval($v['product_id']);
134
+ if($k>0) {
135
+ $v=$v['name'];
136
+ $purchase->products[]=$v;
137
+ $tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
138
+ $productsIds[]=$k;
139
+ }
140
+ }
141
+
142
+ $args=array(
143
+ 'pluginId'=>TCMP_PLUGINS_WOOCOMMERCE
144
+ , 'productsIds'=>$productsIds
145
+ , 'categoriesIds'=>array()
146
+ , 'tagsIds'=>array()
147
+ );
148
+ $tcmp->Options->pushConversionSnippets($args, $purchase);
149
+ }
150
+
151
+ function getActivePlugins() {
152
+ return $this->getPlugins(TRUE);
153
+ }
154
+ function getPlugins($onlyActive=TRUE) {
155
+ global $tcmp;
156
+
157
+ $array=array();
158
+ $array[]=TCMP_PLUGINS_WOOCOMMERCE;
159
+ $array[]=TCMP_PLUGINS_EDD;
160
+ $array[]=TCMP_PLUGINS_WP_ECOMMERCE;
161
+ /*
162
+ $array[]=TCMP_PLUGINS_WP_SPSC;
163
+ $array[]=TCMP_PLUGINS_S2MEMBER;
164
+ $array[]=TCMP_PLUGINS_MEMBERS;
165
+ $array[]=TCMP_PLUGINS_CART66;
166
+ $array[]=TCMP_PLUGINS_ESHOP;
167
+ $array[]=TCMP_PLUGINS_JIGOSHOP;
168
+ $array[]=TCMP_PLUGINS_MARKETPRESS;
169
+ $array[]=TCMP_PLUGINS_SHOPP;
170
+ $array[]=TCMP_PLUGINS_SIMPLE_WP_ECOMMERCE;
171
+ $array[]=TCMP_PLUGINS_CF7;
172
+ $array[]=TCMP_PLUGINS_GRAVITY;
173
+ */
174
+
175
+ $array=$tcmp->Plugin->getPlugins($array, $onlyActive);
176
+ return $array;
177
+ }
178
+ }
index.php CHANGED
@@ -1,122 +1,122 @@
1
- <?php
2
- /*
3
- Plugin Name: Tracking Code Manager
4
- Plugin URI: http://intellywp.com/tracking-code-manager/
5
- Description: A plugin to manage ALL your tracking code and conversion pixels, simply. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, WP eCommerce.
6
- Author: IntellyWP
7
- Author URI: http://intellywp.com/
8
- Email: info@intellywp.com
9
- Version: 2.0.1
10
- WC requires at least: 3.0.0
11
- WC tested up to: 4
12
- */
13
- if(defined('TCMP_PLUGIN_NAME')) {
14
- function tcmp_admin_notices() {
15
- global $tcmp; ?>
16
- <div style="clear:both"></div>
17
- <div class="error iwp" style="padding:10px;">
18
- <?php $tcmp->Lang->P('PluginProAlreadyInstalled'); ?>
19
- </div>
20
- <div style="clear:both"></div>
21
- <?php }
22
- add_action('admin_notices', 'tcmp_admin_notices');
23
- return;
24
- }
25
- define('TCMP_PLUGIN_PREFIX', 'TCMP_');
26
- define('TCMP_PLUGIN_FILE',__FILE__);
27
- define('TCMP_PLUGIN_SLUG', 'tracking-code-manager');
28
- define('TCMP_PLUGIN_NAME', 'Tracking Code Manager');
29
- define('TCMP_PLUGIN_VERSION', '2.0.1');
30
- define('TCMP_PLUGIN_AUTHOR', 'IntellyWP');
31
-
32
- define('TCMP_PLUGIN_DIR', dirname(__FILE__).'/');
33
- define('TCMP_PLUGIN_ASSETS_URI', plugins_url( 'assets/', __FILE__ ));
34
- define('TCMP_PLUGIN_IMAGES_URI', plugins_url( 'assets/images/', __FILE__ ));
35
-
36
- define('TCMP_LOGGER', FALSE);
37
- define('TCMP_AUTOSAVE_LANG', FALSE);
38
-
39
- define('TCMP_QUERY_POSTS_OF_TYPE', 1);
40
- define('TCMP_QUERY_POST_TYPES', 2);
41
- define('TCMP_QUERY_CATEGORIES', 3);
42
- define('TCMP_QUERY_TAGS', 4);
43
- define('TCMP_QUERY_CONVERSION_PLUGINS', 5);
44
- define('TCMP_QUERY_TAXONOMY_TYPES', 6);
45
- define('TCMP_QUERY_TAXONOMIES_OF_TYPE', 7);
46
-
47
- define('TCMP_INTELLYWP_SITE', 'http://www.intellywp.com/');
48
- define('TCMP_INTELLYWP_ENDPOINT', TCMP_INTELLYWP_SITE.'wp-content/plugins/intellywp-manager/data.php');
49
- define('TCMP_PAGE_FAQ', TCMP_INTELLYWP_SITE.'tracking-code-manager');
50
- define('TCMP_PAGE_PREMIUM', TCMP_INTELLYWP_SITE.'tracking-code-manager');
51
- define('TCMP_PAGE_MANAGER', admin_url().'options-general.php?page='.TCMP_PLUGIN_SLUG);
52
- define('TCMP_PLUGIN_URI', plugins_url('/', __FILE__ ));
53
-
54
- define('TCMP_POSITION_HEAD', 0);
55
- define('TCMP_POSITION_BODY', 1);
56
- define('TCMP_POSITION_FOOTER', 2);
57
- define('TCMP_POSITION_CONVERSION', 3);
58
-
59
- define('TCMP_TRACK_MODE_CODE', 0);
60
- define('TCMP_TRACK_PAGE_ALL', 0);
61
- define('TCMP_TRACK_PAGE_SPECIFIC', 1);
62
-
63
- define('TCMP_DEVICE_TYPE_MOBILE', 'mobile');
64
- define('TCMP_DEVICE_TYPE_TABLET', 'tablet');
65
- define('TCMP_DEVICE_TYPE_DESKTOP', 'desktop');
66
- define('TCMP_DEVICE_TYPE_ALL', 'all');
67
-
68
- define('TCMP_TAB_EDITOR', 'editor');
69
- define('TCMP_TAB_EDITOR_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_EDITOR);
70
- define('TCMP_TAB_MANAGER', 'manager');
71
- define('TCMP_TAB_MANAGER_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_MANAGER);
72
- define('TCMP_TAB_SETTINGS', 'settings');
73
- define('TCMP_TAB_SETTINGS_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_SETTINGS);
74
- define('TCMP_TAB_DOCS', 'docs');
75
- define('TCMP_TAB_DOCS_URI', 'http://intellywp.com/docs/category/tracking-code-manager/');
76
- define('TCMP_TAB_DOCS_DCV_URI', 'https://data443.atlassian.net/servicedesk/customer/kb/view/947486813');
77
- define('TCMP_TAB_ABOUT', 'about');
78
- define('TCMP_TAB_ABOUT_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_ABOUT);
79
- define('TCMP_TAB_WHATS_NEW', 'whatsnew');
80
- define('TCMP_TAB_WHATS_NEW_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_WHATS_NEW);
81
-
82
- define('TCMP_SNIPPETS_LIMIT', 6);
83
-
84
- include_once(dirname(__FILE__).'/autoload.php');
85
- tcmp_include_php(dirname(__FILE__).'/includes/');
86
-
87
- global $tcmp;
88
- $tcmp=new TCMP_Singleton();
89
- $tcmp->init();
90
-
91
- function TCMP_QS($name, $default='') {
92
- global $tcmp;
93
- $result=$tcmp->Utils->qs($name, $default);
94
- return $result;
95
- }
96
- //SANITIZED METHODS
97
- function TCMP_SQS($name, $default='') {
98
- $result=TCMP_QS($name, $default);
99
- $result=sanitize_text_field($result);
100
- return $result;
101
- }
102
- function TCMP_ISQS($name, $default=0) {
103
- $result=TCMP_SQS($name, $default);
104
- $result=floatval($result);
105
- return $result;
106
- }
107
- function TCMP_BSQS($name, $default=0) {
108
- global $tcmp;
109
- $result=$tcmp->Utils->bqs($name, $default);
110
- return $result;
111
- }
112
- function TCMP_ASQS($name, $default=array()) {
113
- $result=TCMP_QS($name, $default);
114
- if(is_array($result)) {
115
- foreach ($result as $k=>$v) {
116
- $result[$k]=sanitize_text_field($v);
117
- }
118
- } else {
119
- $result=sanitize_text_field($result);
120
- }
121
- return $result;
122
- }
1
+ <?php
2
+ /*
3
+ Plugin Name: Tracking Code Manager
4
+ Plugin URI: http://intellywp.com/tracking-code-manager/
5
+ Description: A plugin to manage ALL your tracking code and conversion pixels, simply. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, WP eCommerce.
6
+ Author: IntellyWP
7
+ Author URI: http://intellywp.com/
8
+ Email: info@intellywp.com
9
+ Version: 2.0.2
10
+ WC requires at least: 3.0.0
11
+ WC tested up to: 4
12
+ */
13
+ if(defined('TCMP_PLUGIN_NAME')) {
14
+ function tcmp_admin_notices() {
15
+ global $tcmp; ?>
16
+ <div style="clear:both"></div>
17
+ <div class="error iwp" style="padding:10px;">
18
+ <?php $tcmp->Lang->P('PluginProAlreadyInstalled'); ?>
19
+ </div>
20
+ <div style="clear:both"></div>
21
+ <?php }
22
+ add_action('admin_notices', 'tcmp_admin_notices');
23
+ return;
24
+ }
25
+ define('TCMP_PLUGIN_PREFIX', 'TCMP_');
26
+ define('TCMP_PLUGIN_FILE',__FILE__);
27
+ define('TCMP_PLUGIN_SLUG', 'tracking-code-manager');
28
+ define('TCMP_PLUGIN_NAME', 'Tracking Code Manager');
29
+ define('TCMP_PLUGIN_VERSION', '2.0.2');
30
+ define('TCMP_PLUGIN_AUTHOR', 'IntellyWP');
31
+
32
+ define('TCMP_PLUGIN_DIR', dirname(__FILE__).'/');
33
+ define('TCMP_PLUGIN_ASSETS_URI', plugins_url( 'assets/', __FILE__ ));
34
+ define('TCMP_PLUGIN_IMAGES_URI', plugins_url( 'assets/images/', __FILE__ ));
35
+
36
+ define('TCMP_LOGGER', FALSE);
37
+ define('TCMP_AUTOSAVE_LANG', FALSE);
38
+
39
+ define('TCMP_QUERY_POSTS_OF_TYPE', 1);
40
+ define('TCMP_QUERY_POST_TYPES', 2);
41
+ define('TCMP_QUERY_CATEGORIES', 3);
42
+ define('TCMP_QUERY_TAGS', 4);
43
+ define('TCMP_QUERY_CONVERSION_PLUGINS', 5);
44
+ define('TCMP_QUERY_TAXONOMY_TYPES', 6);
45
+ define('TCMP_QUERY_TAXONOMIES_OF_TYPE', 7);
46
+
47
+ define('TCMP_INTELLYWP_SITE', 'http://www.intellywp.com/');
48
+ define('TCMP_INTELLYWP_ENDPOINT', TCMP_INTELLYWP_SITE.'wp-content/plugins/intellywp-manager/data.php');
49
+ define('TCMP_PAGE_FAQ', TCMP_INTELLYWP_SITE.'tracking-code-manager');
50
+ define('TCMP_PAGE_PREMIUM', TCMP_INTELLYWP_SITE.'tracking-code-manager');
51
+ define('TCMP_PAGE_MANAGER', admin_url().'options-general.php?page='.TCMP_PLUGIN_SLUG);
52
+ define('TCMP_PLUGIN_URI', plugins_url('/', __FILE__ ));
53
+
54
+ define('TCMP_POSITION_HEAD', 0);
55
+ define('TCMP_POSITION_BODY', 1);
56
+ define('TCMP_POSITION_FOOTER', 2);
57
+ define('TCMP_POSITION_CONVERSION', 3);
58
+
59
+ define('TCMP_TRACK_MODE_CODE', 0);
60
+ define('TCMP_TRACK_PAGE_ALL', 0);
61
+ define('TCMP_TRACK_PAGE_SPECIFIC', 1);
62
+
63
+ define('TCMP_DEVICE_TYPE_MOBILE', 'mobile');
64
+ define('TCMP_DEVICE_TYPE_TABLET', 'tablet');
65
+ define('TCMP_DEVICE_TYPE_DESKTOP', 'desktop');
66
+ define('TCMP_DEVICE_TYPE_ALL', 'all');
67
+
68
+ define('TCMP_TAB_EDITOR', 'editor');
69
+ define('TCMP_TAB_EDITOR_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_EDITOR);
70
+ define('TCMP_TAB_MANAGER', 'manager');
71
+ define('TCMP_TAB_MANAGER_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_MANAGER);
72
+ define('TCMP_TAB_SETTINGS', 'settings');
73
+ define('TCMP_TAB_SETTINGS_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_SETTINGS);
74
+ define('TCMP_TAB_DOCS', 'docs');
75
+ define('TCMP_TAB_DOCS_URI', 'http://intellywp.com/docs/category/tracking-code-manager/');
76
+ define('TCMP_TAB_DOCS_DCV_URI', 'https://data443.atlassian.net/servicedesk/customer/kb/view/947486813');
77
+ define('TCMP_TAB_ABOUT', 'about');
78
+ define('TCMP_TAB_ABOUT_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_ABOUT);
79
+ define('TCMP_TAB_WHATS_NEW', 'whatsnew');
80
+ define('TCMP_TAB_WHATS_NEW_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_WHATS_NEW);
81
+
82
+ define('TCMP_SNIPPETS_LIMIT', 6);
83
+
84
+ include_once(dirname(__FILE__).'/autoload.php');
85
+ tcmp_include_php(dirname(__FILE__).'/includes/');
86
+
87
+ global $tcmp;
88
+ $tcmp=new TCMP_Singleton();
89
+ $tcmp->init();
90
+
91
+ function TCMP_QS($name, $default='') {
92
+ global $tcmp;
93
+ $result=$tcmp->Utils->qs($name, $default);
94
+ return $result;
95
+ }
96
+ //SANITIZED METHODS
97
+ function TCMP_SQS($name, $default='') {
98
+ $result=TCMP_QS($name, $default);
99
+ $result=sanitize_text_field($result);
100
+ return $result;
101
+ }
102
+ function TCMP_ISQS($name, $default=0) {
103
+ $result=TCMP_SQS($name, $default);
104
+ $result=floatval($result);
105
+ return $result;
106
+ }
107
+ function TCMP_BSQS($name, $default=0) {
108
+ global $tcmp;
109
+ $result=$tcmp->Utils->bqs($name, $default);
110
+ return $result;
111
+ }
112
+ function TCMP_ASQS($name, $default=array()) {
113
+ $result=TCMP_QS($name, $default);
114
+ if(is_array($result)) {
115
+ foreach ($result as $k=>$v) {
116
+ $result[$k]=sanitize_text_field($v);
117
+ }
118
+ } else {
119
+ $result=sanitize_text_field($result);
120
+ }
121
+ return $result;
122
+ }
languages/Lang.txt CHANGED
@@ -1,179 +1,179 @@
1
- AboutNotice=Thank you for trying our amazing plugin. Now you are able to quickly track what you need. Feel free to contact us using our feedback form or our email <a href="mailto:aleste@intellywp.com">aleste@intellywp.com</a>
2
- AboutText1=We are Stefan and Alex, two guys in love with Wordpress, coding and marketing! Our company IntellyWP is an idea to bring Intelly ideas to your Intelly site ;)
3
- AboutText2=Feel free to reach us by the feedback form below.
4
- AboutTitle=We make Intelly plugins for your Intelly site
5
- Actions=
6
- ActivateError=Errors activating key. Network problem or wrong password
7
- ActivateSuccess1=License key "{0}" successfully activated
8
- ActivateSuccess2=CONGRATS...YOU ARE NOW A PREMIUM MEMBER! :)
9
- Active?=
10
- Add New Script=
11
- AddSubtitle=Fill in the information and click "Save"
12
- AddTitle=New tracking code
13
- Button.Add=Add new Tracking Code
14
- Button.BuyPRO=UPGRADE TO PREMIUM NOW ››
15
- CodeAddNotice=Tracking code "#{0} ({1})" successfully added
16
- CodeDeleteNotice=Tracking code "#{0} ({1})" successfully deleted
17
- CodeUpdateNotice=Tracking code "#{0} ({1})" successfully updated
18
- ConversionDynamicFields1=*** PREMIUM FEATURE *** If you need to use dynamic conversion values, to track additional data in your conversions (like in Facebook Ads or Google Adwords), you can check <a href="http://support.intellywp.com/article/28-dynamic-conversion-values?utm_campaign=plugin-editor" target="_blank">this documentation to see how </a>.<br>
19
- ConversionDynamicFields2=See Dynamic conversion values tags below:
20
- ConversionDynamicFields3=<b>@@ORDERID@@</b>: return the order id
21
- ConversionDynamicFields4=<b>@@CURRENCY@@</b>: return the currency
22
- ConversionDynamicFields5=<b>@@PRODUCTS@@</b>: return the products name bought, separated by comma
23
- ConversionDynamicFields6=<b>@@AMOUNT@@</b>: return the amount of the cart payment, tax and shipping cost excluded
24
- ConversionDynamicFields7=<b>@@TAX@@</b>: return the amount of the tax in the purchase
25
- ConversionDynamicFields8=<b>@@TOTAL@@</b>: return the total amount of the purchase, tax included
26
- ConversionProductQuestion=In which products do you want to insert this code (once the order is completed)?
27
- DeactivateError=Errors deactivating key. Network problem??
28
- DeactivateSuccess=License key "{0}" successfully deactivated
29
- Delete?=
30
- DisableAllowTrackingNotice1=Ooops... Seems that you are not allowing us to receive plugin usage information. It allows us to have a BETTER development without collecting any sensitive-data.
31
- DisableAllowTrackingNotice2=Please allow us to receive this information click <a href="{0}">HERE :)</a>
32
- Docs & FAQ=
33
- DynamicFieldsPromo=Are you looking for dynamic conversion values (like price, currency) inside your conversion pixel? Check the DOCS on <a href="{0}" target="_blank">IntellyWP website</a>
34
- Edit=
35
- EditSubtitle=Edit the information that you need and click "Save"
36
- EditTitle=Edit tracking code
37
- Editor.Add=Tracking Code "#{0} ({1})" successfully stored.
38
- Editor.EcommerceCheck=In {0} (v.{1})
39
- Editor.NoEcommerceFound1=No compatible ecommerce found!
40
- Editor.NoEcommerceFound2=Currently we are compatible with <b>{0}</b>
41
- Editor.PositionBlocked=Select [ALL] to track every purchase, or select from the the list if you'd like track sales only of certain products.
42
- Editor.active=Active?
43
- Editor.code=Paste your Tracking Code here
44
- Editor.deviceType=Show only on device
45
- Editor.deviceType.all=[All]
46
- Editor.deviceType.desktop=Desktop
47
- Editor.deviceType.mobile=Mobile
48
- Editor.deviceType.tablet=Tablet
49
- Editor.exceptCategoriesActive=Exclude in posts with specific categories
50
- Editor.exceptPostsOfTypeActive=Exclude posts "<b>{0}</b>"
51
- Editor.exceptTagsActive=Exclude in posts with specific tags
52
- Editor.exceptTermsOfTypeActive=Exclude terms "<b>{0}</b>"
53
- Editor.includeCategoriesActive=Include in posts with specific categories
54
- Editor.includeEverywhereActive=Include in the whole website (pages, posts and archives)
55
- Editor.includeLastPostsActive=Include in latest posts (specify the number of posts)
56
- Editor.includePostsOfTypeActive=Include posts "<b>{0}</b>"
57
- Editor.includeTagsActive=Include in posts with specific tags
58
- Editor.includeTermsOfTypeActive=Include terms "<b>{0}</b>"
59
- Editor.name=Name
60
- Editor.position=Position inside the code
61
- Editor.position.0=Before &lt;/HEAD&gt;
62
- Editor.position.1=After &lt;BODY&gt;
63
- Editor.position.2=Before &lt;/BODY&gt;
64
- Editor.trackMode_0=Standard code tracking in your Wordpress
65
- Editor.trackMode_1=Track conversion in your {0}
66
- Editor.trackPage_0=In the whole website (pages, posts and archives)
67
- Editor.trackPage_1=In specific pages or posts
68
- EmptyTrackingList=Your tracking code list is empty, please <a href="{0}">CLICK HERE</a> to create new ones.
69
- EnableAllowTrackingNotice1=Currently we receive plugin usage information. It allows us to have a BETTER development so many many thanks from the development team.
70
- EnableAllowTrackingNotice2=If you want to stop tracking please click <a href="{0}">HERE :(</a>
71
- Error.ExcludeSelectAtLeastOne=Exclude at least one item of <b>{0}</b>
72
- Error.IncludeExcludeAll=You cannot choose to include/exclude [All] in <b>{0}</b> configuration
73
- Error.IncludeSelectAtLeastOne=Include at least one item of <b>{0}</b> or select [All]
74
- Everywhere=
75
- Faq.Question1=Do you have a video that show me the plugin working?
76
- Faq.Question2=Will this plugin slow my website?
77
- Faq.Question3=Can I put a tracking code or a script in ONE (maybe TWO?) specific page?
78
- Faq.Question4=Can I track conversions?
79
- Faq.Question5=Can I manage Facebook Retargeting and Custom Audiences?
80
- Faq.Question6=Will this plugin interferes with my Google Analytics plugin?
81
- Faq.Question7=Can I use unlimited tracking codes and conversion pixels?
82
- Faq.Question8=How to verify that a tracking code is properly working?
83
- Faq.Response1=Sure! Click on the link <a href="http://intellywp.com/tracking-code-manager/" target="_blank">http://intellywp.com/tracking-code-manager</a> for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to BUY PREMIUM version and have full support.
84
- Faq.Response2=Absolutely not! Since this plugin is built with lightweight code, you won't notice any difference in speed.
85
- Faq.Response3=Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
86
- Faq.Response4=Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
87
- Faq.Response5=Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
88
- Faq.Response6=Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
89
- Faq.Response7=Simply...YES!
90
- Faq.Response8=Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
91
- FaqTitle=F.A.Q. Frequently Asked Question
92
- Feedback.body=Feedback
93
- Feedback.body.check=Please specify your feedback
94
- Feedback.email=Contact email
95
- Feedback.email.check=Please specify a valid email
96
- Feedback.track=Send also track information (this can be very useful for us to solve your issue)
97
- FeedbackError=Errors sending feedback. Please email us at aleste@intellywp.com
98
- FeedbackHeader=Are you looking for new features? Send us a feedback
99
- FeedbackSuccess=Feedback successfully sent. We will reply you ASAP.
100
- FirstTimeActivation=Thank you for activating our plugin. This is the manager where you need to start to configure your tracking codes. Thanks for choosing <a href="http://intellywp.com/" target="_blank">IntellyWP</a>! :)
101
- FreeLicenseReached=You have reached the FREE version limit. Please buy the PREMIUM version or delete unused tracking code and create new ones.
102
- GuruInfo=Below some GURU info (useful to request support at support@intellywp.com)
103
- License.key=Activation key
104
- License.licenseSiteCount=License site count
105
- License.metabox=In "<b>{0}</b>"
106
- LicenseSection=License information
107
- LicenseSectionSubtitle=Insert the activation key received by email in the text below to see all the settings
108
- Manager=
109
- ManagerTitle=Welcome to "<b>Tracking Code Manager</b> (v.{0})", an <a href="https://intellywp.com/" target="_blank"><b>IntellyWP</b></a> plugin.
110
- MetaboxSection=Metabox information
111
- MetaboxSectionSubtitle=Check in which post type do you want integrate our metabox widget
112
- Name=
113
- No=
114
- Notice.ProCTA=Check all premium features now ››
115
- Notice.ProFeature1=Include code in latest posts (usefull for remarketing and Facebook Custom Audience)
116
- Notice.ProFeature2=Include code in your custom post type
117
- Notice.ProFeature3=Include code in specific categories or tags
118
- Notice.ProHeader1=Do you like this plugin?
119
- Notice.ProHeader2=With <b>PREMIUM</b> version you can have <b>UNLIMITED</b> tracking codes and also other awesome features:
120
- Plugin1.Name=Tracking Code Manager PRO
121
- Plugin1.Permalink=https://intellywp.com/tracking-code-manager/?utm_campaign=sidebar
122
- Plugin1.Subtitle=A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads.
123
- Plugin2.Name=Welcome Bar
124
- Plugin2.Permalink=https://wordpress.org/plugins/intelly-welcome-bar/
125
- Plugin2.Subtitle=Increase engagement and drive specific offers to the visitors coming from a specific traffic source. As seen on BetaList and ProductHunt.
126
- Plugin3.Name=Post's Footer Manager
127
- Plugin3.Permalink=https://wordpress.org/plugins/intelly-posts-footer-manager
128
- Plugin3.Subtitle=Clean the mess after your content! Organize your post's footer, insert what you want, order elements, create groups for specific categories.
129
- Plugin4.Name=Evergreen Countdown Timer
130
- Plugin4.Permalink=https://wordpress.org/plugins/intelly-countdown/
131
- Plugin4.Subtitle=Evergreen Countdown is a plugin built for marketers that need a reliable solution to use scarcity on their websites and landing pages.
132
- Plugin5.Name=GDPR Framework
133
- Plugin5.Permalink=https://wordpress.org/plugins/gdpr-framework/
134
- Plugin5.Subtitle=A plugin that gives you a simple and elegant interface to handle Data Subject Access Requests (DSARs) and more.
135
- Plugin6.Name=Inline Related Posts
136
- Plugin6.Permalink=https://wordpress.org/plugins/intelly-related-posts/
137
- Plugin6.Subtitle=Inline Related Posts AUTOMATICALLY inserts related posts INSIDE your content, capturing immediately the reader's attention.
138
- PluginCTA=See more..
139
- PluginFreeAlreadyInstalled=The "Tracking Code Manager" is already installed. Please deactivate this plugin to continue using the "Tracking Code Manager PRO" version. No data will be lost.
140
- PluginLimit.Line1=In this FREE version you can insert up to N.{0} different codes/locations (remaining N.{1})
141
- PluginLimit.Line2=If you need more Tracking Code or more features please buy our PREMIUM version <a href="{0}" target="_blank"><b>HERE</b></a>
142
- PluginProAlreadyInstalled=The "Tracking Code Manager PRO" is already installed. Please deactivate the "Tracking Code Manager FREE" plugin. No data will be lost.
143
- Question.DeleteQuestion=Do you want to delete this code?
144
- QuestionActiveOff=Do you want to deactivate this code?
145
- QuestionActiveOn=Do you want to activate this code?
146
- Rate us=
147
- Settings=
148
- SettingsTitle=Plugin settings
149
- Shortcode=
150
- Sidebar.Title=How to contact us?
151
- Sidebar1.Name=IntellyWP (homepage)
152
- Sidebar1.Url=https://intellywp.com
153
- Sidebar2.Name=Our plugins
154
- Sidebar2.Url=https://intellywp.com/plugins
155
- Sidebar3.Name=Contact support
156
- Sidebar3.Url=https://data443.atlassian.net/servicedesk/customer/portal/17
157
- Sidebar4.Name=Like us on Facebook
158
- Sidebar4.Url=https://www.facebook.com/intellywp/
159
- Sidebar5.Name=Follow us on Twitter
160
- Sidebar5.Url=https://twitter.com/intellywp
161
- Sidebar6.Name=Rate us on Wordpress
162
- Sidebar6.Url=https://wordpress.org/support/plugin/tracking-code-manager/reviews/#postform
163
- SnippetsLimitNotice=You are using {0} slots or {1} available slots in the FREE version. You can unlock this limit visiting this <a href="{2}">LINK</a> (IntellyWP site).
164
- SnippetsLimitReached=You have reached the limit of {0} tracking codes. You can unlock this limit visiting this <a href="{1}">LINK</a> (IntellyWP site).
165
- Specific Pages=
166
- WhatsNewTitle=Introducing Ecommerce Conversion Tracking
167
- Where?=
168
- XdebugException=XdebugException: please contact our support at support@intellywp.com. We will help you, guaranteed :)
169
- Yes=
170
- YouHaveThePremiumVersion1=You have installed the PREMIUM version of this plugin.
171
- YouHaveThePremiumVersion2=Please click <a href="{0}">here</a> to have all the features.
172
- YouHaveThePremiumVersion3=You can deactivate the "<b>Tracking Code Manager</b>" plugin and only still active the "<b>Tracking Code Manager PRO</b>" plugin
173
- YouTubeVideo.Description1=Track Conversion in Woocommerce
174
- YouTubeVideo.Description2=Track Conversion in Easy Digital Download
175
- YouTubeVideo.Description3=Track Conversion in WP eCommerce
176
- YouTubeVideo.Title=Our plugin in few videos..
177
- YouTubeVideo.URL1=TDgoefbdtSI
178
- YouTubeVideo.URL2=jgmmMlerFRg
179
- YouTubeVideo.URL3=vBjDeb4Ej-I
1
+ AboutNotice=Thank you for trying our amazing plugin. Now you are able to quickly track what you need. Feel free to contact us using our feedback form or our email <a href="mailto:aleste@intellywp.com">aleste@intellywp.com</a>
2
+ AboutText1=We are Stefan and Alex, two guys in love with Wordpress, coding and marketing! Our company IntellyWP is an idea to bring Intelly ideas to your Intelly site ;)
3
+ AboutText2=Feel free to reach us by the feedback form below.
4
+ AboutTitle=We make Intelly plugins for your Intelly site
5
+ Actions=
6
+ ActivateError=Errors activating key. Network problem or wrong password
7
+ ActivateSuccess1=License key "{0}" successfully activated
8
+ ActivateSuccess2=CONGRATS...YOU ARE NOW A PREMIUM MEMBER! :)
9
+ Active?=
10
+ Add New Script=
11
+ AddSubtitle=Fill in the information and click "Save"
12
+ AddTitle=New tracking code
13
+ Button.Add=Add new Tracking Code
14
+ Button.BuyPRO=UPGRADE TO PREMIUM NOW ››
15
+ CodeAddNotice=Tracking code "#{0} ({1})" successfully added
16
+ CodeDeleteNotice=Tracking code "#{0} ({1})" successfully deleted
17
+ CodeUpdateNotice=Tracking code "#{0} ({1})" successfully updated
18
+ ConversionDynamicFields1=*** PREMIUM FEATURE *** If you need to use dynamic conversion values, to track additional data in your conversions (like in Facebook Ads or Google Adwords), you can check <a href="http://support.intellywp.com/article/28-dynamic-conversion-values?utm_campaign=plugin-editor" target="_blank">this documentation to see how </a>.<br>
19
+ ConversionDynamicFields2=See Dynamic conversion values tags below:
20
+ ConversionDynamicFields3=<b>@@ORDERID@@</b>: return the order id
21
+ ConversionDynamicFields4=<b>@@CURRENCY@@</b>: return the currency
22
+ ConversionDynamicFields5=<b>@@PRODUCTS@@</b>: return the products name bought, separated by comma
23
+ ConversionDynamicFields6=<b>@@AMOUNT@@</b>: return the amount of the cart payment, tax and shipping cost excluded
24
+ ConversionDynamicFields7=<b>@@TAX@@</b>: return the amount of the tax in the purchase
25
+ ConversionDynamicFields8=<b>@@TOTAL@@</b>: return the total amount of the purchase, tax included
26
+ ConversionProductQuestion=In which products do you want to insert this code (once the order is completed)?
27
+ DeactivateError=Errors deactivating key. Network problem??
28
+ DeactivateSuccess=License key "{0}" successfully deactivated
29
+ Delete?=
30
+ DisableAllowTrackingNotice1=Ooops... Seems that you are not allowing us to receive plugin usage information. It allows us to have a BETTER development without collecting any sensitive-data.
31
+ DisableAllowTrackingNotice2=Please allow us to receive this information click <a href="{0}">HERE :)</a>
32
+ Docs & FAQ=
33
+ DynamicFieldsPromo=Are you looking for dynamic conversion values (like price, currency) inside your conversion pixel? Check the DOCS on <a href="{0}" target="_blank">IntellyWP website</a>
34
+ Edit=
35
+ EditSubtitle=Edit the information that you need and click "Save"
36
+ EditTitle=Edit tracking code
37
+ Editor.Add=Tracking Code "#{0} ({1})" successfully stored.
38
+ Editor.EcommerceCheck=In {0} (v.{1})
39
+ Editor.NoEcommerceFound1=No compatible ecommerce found!
40
+ Editor.NoEcommerceFound2=Currently we are compatible with <b>{0}</b>
41
+ Editor.PositionBlocked=Select [ALL] to track every purchase, or select from the the list if you'd like track sales only of certain products.
42
+ Editor.active=Active?
43
+ Editor.code=Paste your Tracking Code here
44
+ Editor.deviceType=Show only on device
45
+ Editor.deviceType.all=[All]
46
+ Editor.deviceType.desktop=Desktop
47
+ Editor.deviceType.mobile=Mobile
48
+ Editor.deviceType.tablet=Tablet
49
+ Editor.exceptCategoriesActive=Exclude in posts with specific categories
50
+ Editor.exceptPostsOfTypeActive=Exclude posts "<b>{0}</b>"
51
+ Editor.exceptTagsActive=Exclude in posts with specific tags
52
+ Editor.exceptTermsOfTypeActive=Exclude terms "<b>{0}</b>"
53
+ Editor.includeCategoriesActive=Include in posts with specific categories
54
+ Editor.includeEverywhereActive=Include in the whole website (pages, posts and archives)
55
+ Editor.includeLastPostsActive=Include in latest posts (specify the number of posts)
56
+ Editor.includePostsOfTypeActive=Include posts "<b>{0}</b>"
57
+ Editor.includeTagsActive=Include in posts with specific tags
58
+ Editor.includeTermsOfTypeActive=Include terms "<b>{0}</b>"
59
+ Editor.name=Name
60
+ Editor.position=Position inside the code
61
+ Editor.position.0=Before &lt;/HEAD&gt;
62
+ Editor.position.1=After &lt;BODY&gt;
63
+ Editor.position.2=Before &lt;/BODY&gt;
64
+ Editor.trackMode_0=Standard code tracking in your Wordpress
65
+ Editor.trackMode_1=Track conversion in your {0}
66
+ Editor.trackPage_0=In the whole website (pages, posts and archives)
67
+ Editor.trackPage_1=In specific pages or posts
68
+ EmptyTrackingList=Your tracking code list is empty, please <a href="{0}">CLICK HERE</a> to create new ones.
69
+ EnableAllowTrackingNotice1=Currently we receive plugin usage information. It allows us to have a BETTER development so many many thanks from the development team.
70
+ EnableAllowTrackingNotice2=If you want to stop tracking please click <a href="{0}">HERE :(</a>
71
+ Error.ExcludeSelectAtLeastOne=Exclude at least one item of <b>{0}</b>
72
+ Error.IncludeExcludeAll=You cannot choose to include/exclude [All] in <b>{0}</b> configuration
73
+ Error.IncludeSelectAtLeastOne=Include at least one item of <b>{0}</b> or select [All]
74
+ Everywhere=
75
+ Faq.Question1=Do you have a video that show me the plugin working?
76
+ Faq.Question2=Will this plugin slow my website?
77
+ Faq.Question3=Can I put a tracking code or a script in ONE (maybe TWO?) specific page?
78
+ Faq.Question4=Can I track conversions?
79
+ Faq.Question5=Can I manage Facebook Retargeting and Custom Audiences?
80
+ Faq.Question6=Will this plugin interferes with my Google Analytics plugin?
81
+ Faq.Question7=Can I use unlimited tracking codes and conversion pixels?
82
+ Faq.Question8=How to verify that a tracking code is properly working?
83
+ Faq.Response1=Sure! Click on the link <a href="http://intellywp.com/tracking-code-manager/" target="_blank">http://intellywp.com/tracking-code-manager</a> for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to BUY PREMIUM version and have full support.
84
+ Faq.Response2=Absolutely not! Since this plugin is built with lightweight code, you won't notice any difference in speed.
85
+ Faq.Response3=Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
86
+ Faq.Response4=Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
87
+ Faq.Response5=Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
88
+ Faq.Response6=Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
89
+ Faq.Response7=Simply...YES!
90
+ Faq.Response8=Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
91
+ FaqTitle=F.A.Q. Frequently Asked Question
92
+ Feedback.body=Feedback
93
+ Feedback.body.check=Please specify your feedback
94
+ Feedback.email=Contact email
95
+ Feedback.email.check=Please specify a valid email
96
+ Feedback.track=Send also track information (this can be very useful for us to solve your issue)
97
+ FeedbackError=Errors sending feedback. Please email us at aleste@intellywp.com
98
+ FeedbackHeader=Are you looking for new features? Send us a feedback
99
+ FeedbackSuccess=Feedback successfully sent. We will reply you ASAP.
100
+ FirstTimeActivation=Thank you for activating our plugin. This is the manager where you need to start to configure your tracking codes. Thanks for choosing <a href="http://intellywp.com/" target="_blank">IntellyWP</a>! :)
101
+ FreeLicenseReached=You have reached the FREE version limit. Please buy the PREMIUM version or delete unused tracking code and create new ones.
102
+ GuruInfo=Below some GURU info (useful to request support at support@intellywp.com)
103
+ License.key=Activation key
104
+ License.licenseSiteCount=License site count
105
+ License.metabox=In "<b>{0}</b>"
106
+ LicenseSection=License information
107
+ LicenseSectionSubtitle=Insert the activation key received by email in the text below to see all the settings
108
+ Manager=
109
+ ManagerTitle=Welcome to "<b>Tracking Code Manager</b> (v.{0})", an <a href="https://intellywp.com/" target="_blank"><b>IntellyWP</b></a> plugin.
110
+ MetaboxSection=Metabox information
111
+ MetaboxSectionSubtitle=Check in which post type do you want integrate our metabox widget
112
+ Name=
113
+ No=
114
+ Notice.ProCTA=Check all premium features now ››
115
+ Notice.ProFeature1=Include code in latest posts (usefull for remarketing and Facebook Custom Audience)
116
+ Notice.ProFeature2=Include code in your custom post type
117
+ Notice.ProFeature3=Include code in specific categories or tags
118
+ Notice.ProHeader1=Do you like this plugin?
119
+ Notice.ProHeader2=With <b>PREMIUM</b> version you can have <b>UNLIMITED</b> tracking codes and also other awesome features:
120
+ Plugin1.Name=Tracking Code Manager PRO
121
+ Plugin1.Permalink=https://intellywp.com/tracking-code-manager/?utm_campaign=sidebar
122
+ Plugin1.Subtitle=A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads.
123
+ Plugin2.Name=Welcome Bar
124
+ Plugin2.Permalink=https://wordpress.org/plugins/intelly-welcome-bar/
125
+ Plugin2.Subtitle=Increase engagement and drive specific offers to the visitors coming from a specific traffic source. As seen on BetaList and ProductHunt.
126
+ Plugin3.Name=Post's Footer Manager
127
+ Plugin3.Permalink=https://wordpress.org/plugins/intelly-posts-footer-manager
128
+ Plugin3.Subtitle=Clean the mess after your content! Organize your post's footer, insert what you want, order elements, create groups for specific categories.
129
+ Plugin4.Name=Evergreen Countdown Timer
130
+ Plugin4.Permalink=https://wordpress.org/plugins/intelly-countdown/
131
+ Plugin4.Subtitle=Evergreen Countdown is a plugin built for marketers that need a reliable solution to use scarcity on their websites and landing pages.
132
+ Plugin5.Name=GDPR Framework
133
+ Plugin5.Permalink=https://wordpress.org/plugins/gdpr-framework/
134
+ Plugin5.Subtitle=A plugin that gives you a simple and elegant interface to handle Data Subject Access Requests (DSARs) and more.
135
+ Plugin6.Name=Inline Related Posts
136
+ Plugin6.Permalink=https://wordpress.org/plugins/intelly-related-posts/
137
+ Plugin6.Subtitle=Inline Related Posts AUTOMATICALLY inserts related posts INSIDE your content, capturing immediately the reader's attention.
138
+ PluginCTA=See more..
139
+ PluginFreeAlreadyInstalled=The "Tracking Code Manager" is already installed. Please deactivate this plugin to continue using the "Tracking Code Manager PRO" version. No data will be lost.
140
+ PluginLimit.Line1=In this FREE version you can insert up to N.{0} different codes/locations (remaining N.{1})
141
+ PluginLimit.Line2=If you need more Tracking Code or more features please buy our PREMIUM version <a href="{0}" target="_blank"><b>HERE</b></a>
142
+ PluginProAlreadyInstalled=The "Tracking Code Manager PRO" is already installed. Please deactivate the "Tracking Code Manager FREE" plugin. No data will be lost.
143
+ Question.DeleteQuestion=Do you want to delete this code?
144
+ QuestionActiveOff=Do you want to deactivate this code?
145
+ QuestionActiveOn=Do you want to activate this code?
146
+ Rate us=
147
+ Settings=
148
+ SettingsTitle=Plugin settings
149
+ Shortcode=
150
+ Sidebar.Title=How to contact us?
151
+ Sidebar1.Name=IntellyWP (homepage)
152
+ Sidebar1.Url=https://intellywp.com
153
+ Sidebar2.Name=Our plugins
154
+ Sidebar2.Url=https://intellywp.com/plugins
155
+ Sidebar3.Name=Contact support
156
+ Sidebar3.Url=https://data443.atlassian.net/servicedesk/customer/portal/17
157
+ Sidebar4.Name=Like us on Facebook
158
+ Sidebar4.Url=https://www.facebook.com/intellywp/
159
+ Sidebar5.Name=Follow us on Twitter
160
+ Sidebar5.Url=https://twitter.com/intellywp
161
+ Sidebar6.Name=Rate us on Wordpress
162
+ Sidebar6.Url=https://wordpress.org/support/plugin/tracking-code-manager/reviews/#postform
163
+ SnippetsLimitNotice=You are using {0} slots or {1} available slots in the FREE version. You can unlock this limit visiting this <a href="{2}">LINK</a> (IntellyWP site).
164
+ SnippetsLimitReached=You have reached the limit of {0} tracking codes. You can unlock this limit visiting this <a href="{1}">LINK</a> (IntellyWP site).
165
+ Specific Pages=
166
+ WhatsNewTitle=Introducing Ecommerce Conversion Tracking
167
+ Where?=
168
+ XdebugException=XdebugException: please contact our support at support@intellywp.com. We will help you, guaranteed :)
169
+ Yes=
170
+ YouHaveThePremiumVersion1=You have installed the PREMIUM version of this plugin.
171
+ YouHaveThePremiumVersion2=Please click <a href="{0}">here</a> to have all the features.
172
+ YouHaveThePremiumVersion3=You can deactivate the "<b>Tracking Code Manager</b>" plugin and only still active the "<b>Tracking Code Manager PRO</b>" plugin
173
+ YouTubeVideo.Description1=Track Conversion in Woocommerce
174
+ YouTubeVideo.Description2=Track Conversion in Easy Digital Download
175
+ YouTubeVideo.Description3=Track Conversion in WP eCommerce
176
+ YouTubeVideo.Title=Our plugin in few videos..
177
+ YouTubeVideo.URL1=TDgoefbdtSI
178
+ YouTubeVideo.URL2=jgmmMlerFRg
179
+ YouTubeVideo.URL3=vBjDeb4Ej-I
readme.txt CHANGED
@@ -1,229 +1,234 @@
1
- === Tracking Code Manager ===
2
- Contributors: IntellyWP, data443
3
- Tags: adwords remarketing,analytics conversion tracking,conversion pixel,conversion tracking,conversion tracking adwords,conversion tracking pixel,conversion tracking script,Facebook Ads,facebook conversion pixel,facebook custom audience,facebook retargeting,google adwords,google analytics web tracking code,google tag manager,html snippet,html snippets,html tracking code,javascript snippet,javascript snippets,header and footer,pay per click tracking,pixel tracking code,remarketing,retargeting,snippets,Tag Management,track conversion,track conversions,tracking code,tracking codes,tracking script,woocommerce,edd,easy digital downloads,wp ecommerce,wp e-commerce
4
- Requires at least: 2.7
5
- Tested up to: 5.7
6
-
7
- A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, ..
8
-
9
- == Description ==
10
-
11
- **Tracking Code manager is a plugin that give you the ability to manage ALL your tracking code and scripts in one single page.**
12
-
13
- <p>This plugin is a service of <a href="https://www.data443.com" rel="nofollow ugc">Data443.com</a>.</p>
14
-
15
- <p>Data443 is a Data Security and Privacy Compliance company that is publicly traded <a href="https://finance.yahoo.com/quote/ATDS?p=ATD" rel="nofollow ugc">ATDS</a>. We have been providing leading GDPR compliance products such as <a href="https://wordpress.org/plugins/gdpr-framework/" rel="nofollow ugc">WordPress GDPR Framework</a> and <a href="https://www.data443.com/classidocs-home/" rel="nofollow ugc">ClassiDocs</a>, Blockchain privacy, and enterprise cloud eDiscovery tools.</p>
16
-
17
-
18
- It doesn’t matter the place where you want to put your code, because with Tracking Code Manager you can put it wherever you want, with no restrictions.
19
-
20
- Let’s say you are using on your website Google Analytics, Facebook Custom Audiences, Facebook Retargeting, Google Remarketing, Zendesk, a Live Chat tool, eye tracking analytics, popups, affiliate tracking pixels and so on...
21
-
22
- For every single service you use, you’ll have to put a script or a tracking pixel in the &lt;head&gt; or &lt;body&gt; tag of your WordPress site OR in some of its pages.
23
-
24
- Tracking Code Manager plugin allows you to gather EVERY code and snippet displaying them exactly where you want, whether in the whole site or in specific pages and posts.
25
-
26
- > <strong>TRACK CONVERSION ON YOUR E-COMMERCE PLUGIN</strong><br>
27
- > When it comes to track conversions on a wordpress page it’s easy… but if it’s a "dynamic thank you page" is a big problem.<br><br>
28
- > Tracking Code Manager plugin DETECT AUTOMATICALLY your e-commerce plugin (WooCommerce, Easy Digital Downloads or WP eCommerce) and let you put the conversion pixels every time someone completes a sale on your store.<br>
29
- > In addition you also have the ability to track a single product at time ;)<br>
30
- > <a href="https://wordpress.org/plugins/tracking-code-manager/screenshots/">Check some screenshots here.</a>
31
-
32
- = THE REAL PROBLEM =
33
-
34
- We are living in the SaaS era, where online services manage all kind of software, analysis and advanced tools. Since every one of them needs a script or a tracking code, why don’t we take it easy with the fast Tracking Code Manager plugin?
35
-
36
- = FORGET THE UPDATING PROBLEM =
37
-
38
- Putting the tracking code directly in the theme files, you risk to lose important trackings or external service integrations when it will be updated.
39
-
40
- With Tracking Code Manager you can forget about this problem also if you will change your theme in the future.
41
-
42
- [youtube https://www.youtube.com/watch?v=shJG7Vf1nMg]
43
-
44
- [youtube https://www.youtube.com/watch?v=TDgoefbdtSI]
45
-
46
- > <strong>Premium version</strong><br>
47
- > If you need more advanced feature you can also try our PREMIUM version available in the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM). This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
48
-
49
- == Installation ==
50
-
51
- 1. Download
52
- 2. Upload to your /wp-contents/plugins/ directory.
53
- 3. Activate the plugin through the 'Plugins' menu in WordPress.
54
- 4. Put your tracking code, script or iframe in the plugin by going to the Settings =&gt; Tracking Code Manager menu
55
-
56
- You can also click on this link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) to see a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
57
-
58
- == Frequently Asked Questions ==
59
-
60
- > <strong>Bug Reports</strong><br>
61
- > Feel free to reach us by email for any problem you have with our plugins.
62
- > Describe the steps to reproduce the bug and we will be happy to help!<br>
63
- > To report a bug use the form at http://intellywp.com/report-a-bug/
64
-
65
- = Do you have a video that show me the plugin working? =
66
-
67
- Sure! Click on the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
68
-
69
- = Will this plugin slow my website? =
70
-
71
- Absolutely not! Since this plugin is built with lightweight code, you won’t notice any difference in speed.
72
-
73
- = Can I put a tracking code or a script in ONE (maybe TWO?) specific page? =
74
-
75
- Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
76
-
77
- = Can I track conversions? =
78
-
79
- Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
80
-
81
- = Can I manage Facebook Retargeting and Custom Audiences? =
82
-
83
- Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
84
-
85
- = Will this plugin interferes with my Google Analytics plugin? =
86
-
87
- Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
88
-
89
- = Can I use unlimited tracking codes and conversion pixels? =
90
-
91
- You have 6 slots to use. Which means six different locations with unlimited tracking codes (enough for 99% of users).
92
-
93
- = How to verify that a tracking code is properly working? =
94
-
95
- Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
96
-
97
- == Screenshots ==
98
-
99
- 1. New tracking code scripts
100
- 2. Include tracking code in specific page
101
- 3. Choose easly by typing the page title
102
- 4. Include also [All] posts or pages without selecting all one-by-one
103
- 5. List your tracking codes defined
104
- 6. Tracking code manager is also as a metabox in your posts/pages (you can remove by settings)
105
-
106
- == Changelog ==
107
-
108
- = 2.0.1 =
109
- *Release Date - 2021-03-10*
110
-
111
- * Links Update
112
- * Tested with WP 5.7 Plugin updated and supported.
113
-
114
- = 2.0.0 =
115
- *Release Date - 2021-01-19*
116
-
117
- * Tested with WP 5.6 Plugin updated and supported.
118
-
119
- =1.8.2 =
120
- *Release Date - 10/17/2020*
121
-
122
- * Branding Update Only
123
-
124
- = 1.8.1 =
125
- *Release Date - 13/09/2015*
126
-
127
- * [Bugfixes] Fix bugs with "metabox" integration
128
-
129
- = 1.8.0 =
130
- *Release Date - 27/08/2015*
131
-
132
- * [Improvements] Not the TCM menu is accessible only at user with "manager_options" permission
133
- * [Bugfixes] Minor bugfixes
134
-
135
- = 1.7.2 =
136
- *Release Date - 23/08/2015*
137
-
138
- * [Improvement] Various fixes
139
-
140
- = 1.7.1 =
141
- *Release Date - 16/08/2015*
142
-
143
- * [Bugfix] Corrected warning in EDD conversion
144
- * [Improvement] Improvement in License authentication
145
-
146
- = 1.6.8 =
147
- *Release Date - 12/06/2015*
148
-
149
- * [Bugfix] Corrected errors in categories filter
150
-
151
- = 1.6.6 =
152
- *Release Date - 03/06/2015*
153
-
154
- * [Bugfix, thanks Jose] Wrong inclusion on EDD_SL_Plugin_Updater class
155
-
156
- = 1.6.5 =
157
- *Release Date - 30/05/2015*
158
-
159
- * Added Conversion Tracking for WooCommerce, Easy Digital Download and WP eCommerce
160
- * Added Whats new page
161
- * Added videos for a better explanation
162
- * Minor bugfixes
163
-
164
- = 1.5.5 =
165
- *Release Date - 18/05/2015*
166
-
167
- * Some translations corrected
168
- * Added Tab "FAQ" with some FAQ
169
- * Removed Feedback from Manager Tab, now only in About Tab
170
- * Minor bugfixes
171
-
172
- = 1.5.4 =
173
- *Release Date - 09/05/2015*
174
-
175
- * [Bugfix, thanks Bradon] Tracking code with "+" (plus) symbol will be changed without this symbol so they don't works properly
176
- * [Bugfix, thanks JS,Dale] Now we are compatible with wpMandrill and all other plugins that needs to redefine the wp_mail function
177
- * Minor bugfixes
178
-
179
- = 1.5.3 =
180
- *Release Date - 25/04/2015*
181
-
182
- * [Bugfix, thanks AlfonsBerger] Undefined index: post_type in metabox.php on line 92
183
- * [Bugfix, thanks Stefan,Eldi] {PREMIUM} Corrected a bug that can cause script missing into HTML using some configuration
184
- * Minor bugfixes
185
-
186
- = 1.5.2 =
187
- *Release Date - 24/04/2015*
188
-
189
- * FULLY COMPATIBLE WITH WORDPRESS 4.2
190
- * [Bugfix, thanks boz71] compatible with multisite installation (Network Activation)
191
- * [Bugfix, thanks AlfonsBerger] Fixed Trying to get property of non-object in ..core.php on line 8
192
- * [Bugfix, thanks AlfonsBerger] Undefined index: includePostsOfType_product_Active in ..Manager.php on line 155
193
-
194
- = 1.5.1 =
195
- *Release Date - 19/04/2015*
196
-
197
- * FULLY COMPATIBLE WITH WORDPRESS 4.2 RC1 :)
198
- * [Bugfix] in metabox widget
199
- * [Bugfix] in redirect function causing temporary "header already sent" error
200
- * [Bugfix] rate us now load from https:// its star image
201
- * Some translations corrected
202
- * Minor bugfixes
203
-
204
- = 1.5 =
205
- *Release Date - 13/04/2015*
206
-
207
- * Insert a non-intrusive rate-us button (top-right of the screen)
208
- * Bugfix in metabox widget
209
- * Some translations corrected
210
- * Minor bugfixes
211
-
212
- = 1.4 =
213
- *Release Date - 06/04/2015*
214
-
215
- * Created the FREE version following Wordpress specs. Branching the PRO version available to buy using website http://www.intellywp.com/tracking-code-manager
216
-
217
- = 1.3 =
218
- *Release Date - 02/04/2015*
219
-
220
- * Fixed a bug that caused the hidden of "Save" button when the license if FREE
221
-
222
- = 1.2 =
223
- * Introduced new "Except" feature
224
-
225
- = 1.1 =
226
- * Introduced new "Custom Post type" feature
227
-
228
- = 1.0 =
229
- * First release
 
 
 
 
 
1
+ === Tracking Code Manager ===
2
+ Contributors: IntellyWP, data443
3
+ Tags: adwords remarketing,analytics conversion tracking,conversion pixel,conversion tracking,conversion tracking adwords,conversion tracking pixel,conversion tracking script,Facebook Ads,facebook conversion pixel,facebook custom audience,facebook retargeting,google adwords,google analytics web tracking code,google tag manager,html snippet,html snippets,html tracking code,javascript snippet,javascript snippets,header and footer,pay per click tracking,pixel tracking code,remarketing,retargeting,snippets,Tag Management,track conversion,track conversions,tracking code,tracking codes,tracking script,woocommerce,edd,easy digital downloads,wp ecommerce,wp e-commerce
4
+ Requires at least: 2.7
5
+ Tested up to: 5.7
6
+
7
+ A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, ..
8
+
9
+ == Description ==
10
+
11
+ **Tracking Code manager is a plugin that give you the ability to manage ALL your tracking code and scripts in one single page.**
12
+
13
+ <p>This plugin is a service of <a href="https://www.data443.com" rel="nofollow ugc">Data443.com</a>.</p>
14
+
15
+ <p>Data443 is a Data Security and Privacy Compliance company that is publicly traded <a href="https://finance.yahoo.com/quote/ATDS?p=ATD" rel="nofollow ugc">ATDS</a>. We have been providing leading GDPR compliance products such as <a href="https://wordpress.org/plugins/gdpr-framework/" rel="nofollow ugc">WordPress GDPR Framework</a> and <a href="https://www.data443.com/classidocs-home/" rel="nofollow ugc">ClassiDocs</a>, Blockchain privacy, and enterprise cloud eDiscovery tools.</p>
16
+
17
+
18
+ It doesn’t matter the place where you want to put your code, because with Tracking Code Manager you can put it wherever you want, with no restrictions.
19
+
20
+ Let’s say you are using on your website Google Analytics, Facebook Custom Audiences, Facebook Retargeting, Google Remarketing, Zendesk, a Live Chat tool, eye tracking analytics, popups, affiliate tracking pixels and so on...
21
+
22
+ For every single service you use, you’ll have to put a script or a tracking pixel in the &lt;head&gt; or &lt;body&gt; tag of your WordPress site OR in some of its pages.
23
+
24
+ Tracking Code Manager plugin allows you to gather EVERY code and snippet displaying them exactly where you want, whether in the whole site or in specific pages and posts.
25
+
26
+ > <strong>TRACK CONVERSION ON YOUR E-COMMERCE PLUGIN</strong><br>
27
+ > When it comes to track conversions on a wordpress page it’s easy… but if it’s a "dynamic thank you page" is a big problem.<br><br>
28
+ > Tracking Code Manager plugin DETECT AUTOMATICALLY your e-commerce plugin (WooCommerce, Easy Digital Downloads or WP eCommerce) and let you put the conversion pixels every time someone completes a sale on your store.<br>
29
+ > In addition you also have the ability to track a single product at time ;)<br>
30
+ > <a href="https://wordpress.org/plugins/tracking-code-manager/screenshots/">Check some screenshots here.</a>
31
+
32
+ = THE REAL PROBLEM =
33
+
34
+ We are living in the SaaS era, where online services manage all kind of software, analysis and advanced tools. Since every one of them needs a script or a tracking code, why don’t we take it easy with the fast Tracking Code Manager plugin?
35
+
36
+ = FORGET THE UPDATING PROBLEM =
37
+
38
+ Putting the tracking code directly in the theme files, you risk to lose important trackings or external service integrations when it will be updated.
39
+
40
+ With Tracking Code Manager you can forget about this problem also if you will change your theme in the future.
41
+
42
+ [youtube https://www.youtube.com/watch?v=shJG7Vf1nMg]
43
+
44
+ [youtube https://www.youtube.com/watch?v=TDgoefbdtSI]
45
+
46
+ > <strong>Premium version</strong><br>
47
+ > If you need more advanced feature you can also try our PREMIUM version available in the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM). This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
48
+
49
+ == Installation ==
50
+
51
+ 1. Download
52
+ 2. Upload to your /wp-contents/plugins/ directory.
53
+ 3. Activate the plugin through the 'Plugins' menu in WordPress.
54
+ 4. Put your tracking code, script or iframe in the plugin by going to the Settings =&gt; Tracking Code Manager menu
55
+
56
+ You can also click on this link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) to see a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
57
+
58
+ == Frequently Asked Questions ==
59
+
60
+ > <strong>Bug Reports</strong><br>
61
+ > Feel free to reach us by email for any problem you have with our plugins.
62
+ > Describe the steps to reproduce the bug and we will be happy to help!<br>
63
+ > To report a bug use the form at http://intellywp.com/report-a-bug/
64
+
65
+ = Do you have a video that show me the plugin working? =
66
+
67
+ Sure! Click on the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
68
+
69
+ = Will this plugin slow my website? =
70
+
71
+ Absolutely not! Since this plugin is built with lightweight code, you won’t notice any difference in speed.
72
+
73
+ = Can I put a tracking code or a script in ONE (maybe TWO?) specific page? =
74
+
75
+ Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
76
+
77
+ = Can I track conversions? =
78
+
79
+ Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
80
+
81
+ = Can I manage Facebook Retargeting and Custom Audiences? =
82
+
83
+ Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
84
+
85
+ = Will this plugin interferes with my Google Analytics plugin? =
86
+
87
+ Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
88
+
89
+ = Can I use unlimited tracking codes and conversion pixels? =
90
+
91
+ You have 6 slots to use. Which means six different locations with unlimited tracking codes (enough for 99% of users).
92
+
93
+ = How to verify that a tracking code is properly working? =
94
+
95
+ Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
96
+
97
+ == Screenshots ==
98
+
99
+ 1. New tracking code scripts
100
+ 2. Include tracking code in specific page
101
+ 3. Choose easly by typing the page title
102
+ 4. Include also [All] posts or pages without selecting all one-by-one
103
+ 5. List your tracking codes defined
104
+ 6. Tracking code manager is also as a metabox in your posts/pages (you can remove by settings)
105
+
106
+ == Changelog ==
107
+
108
+ = 2.0.2 =
109
+ *Release Date - 2021-06-17*
110
+
111
+ * IWP-225 Fix PHP 8 Warning
112
+
113
+ = 2.0.1 =
114
+ *Release Date - 2021-03-10*
115
+
116
+ * Links Update
117
+ * Tested with WP 5.7 Plugin updated and supported.
118
+
119
+ = 2.0.0 =
120
+ *Release Date - 2021-01-19*
121
+
122
+ * Tested with WP 5.6 Plugin updated and supported.
123
+
124
+ =1.8.2 =
125
+ *Release Date - 10/17/2020*
126
+
127
+ * Branding Update Only
128
+
129
+ = 1.8.1 =
130
+ *Release Date - 13/09/2015*
131
+
132
+ * [Bugfixes] Fix bugs with "metabox" integration
133
+
134
+ = 1.8.0 =
135
+ *Release Date - 27/08/2015*
136
+
137
+ * [Improvements] Not the TCM menu is accessible only at user with "manager_options" permission
138
+ * [Bugfixes] Minor bugfixes
139
+
140
+ = 1.7.2 =
141
+ *Release Date - 23/08/2015*
142
+
143
+ * [Improvement] Various fixes
144
+
145
+ = 1.7.1 =
146
+ *Release Date - 16/08/2015*
147
+
148
+ * [Bugfix] Corrected warning in EDD conversion
149
+ * [Improvement] Improvement in License authentication
150
+
151
+ = 1.6.8 =
152
+ *Release Date - 12/06/2015*
153
+
154
+ * [Bugfix] Corrected errors in categories filter
155
+
156
+ = 1.6.6 =
157
+ *Release Date - 03/06/2015*
158
+
159
+ * [Bugfix, thanks Jose] Wrong inclusion on EDD_SL_Plugin_Updater class
160
+
161
+ = 1.6.5 =
162
+ *Release Date - 30/05/2015*
163
+
164
+ * Added Conversion Tracking for WooCommerce, Easy Digital Download and WP eCommerce
165
+ * Added Whats new page
166
+ * Added videos for a better explanation
167
+ * Minor bugfixes
168
+
169
+ = 1.5.5 =
170
+ *Release Date - 18/05/2015*
171
+
172
+ * Some translations corrected
173
+ * Added Tab "FAQ" with some FAQ
174
+ * Removed Feedback from Manager Tab, now only in About Tab
175
+ * Minor bugfixes
176
+
177
+ = 1.5.4 =
178
+ *Release Date - 09/05/2015*
179
+
180
+ * [Bugfix, thanks Bradon] Tracking code with "+" (plus) symbol will be changed without this symbol so they don't works properly
181
+ * [Bugfix, thanks JS,Dale] Now we are compatible with wpMandrill and all other plugins that needs to redefine the wp_mail function
182
+ * Minor bugfixes
183
+
184
+ = 1.5.3 =
185
+ *Release Date - 25/04/2015*
186
+
187
+ * [Bugfix, thanks AlfonsBerger] Undefined index: post_type in metabox.php on line 92
188
+ * [Bugfix, thanks Stefan,Eldi] {PREMIUM} Corrected a bug that can cause script missing into HTML using some configuration
189
+ * Minor bugfixes
190
+
191
+ = 1.5.2 =
192
+ *Release Date - 24/04/2015*
193
+
194
+ * FULLY COMPATIBLE WITH WORDPRESS 4.2
195
+ * [Bugfix, thanks boz71] compatible with multisite installation (Network Activation)
196
+ * [Bugfix, thanks AlfonsBerger] Fixed Trying to get property of non-object in ..core.php on line 8
197
+ * [Bugfix, thanks AlfonsBerger] Undefined index: includePostsOfType_product_Active in ..Manager.php on line 155
198
+
199
+ = 1.5.1 =
200
+ *Release Date - 19/04/2015*
201
+
202
+ * FULLY COMPATIBLE WITH WORDPRESS 4.2 RC1 :)
203
+ * [Bugfix] in metabox widget
204
+ * [Bugfix] in redirect function causing temporary "header already sent" error
205
+ * [Bugfix] rate us now load from https:// its star image
206
+ * Some translations corrected
207
+ * Minor bugfixes
208
+
209
+ = 1.5 =
210
+ *Release Date - 13/04/2015*
211
+
212
+ * Insert a non-intrusive rate-us button (top-right of the screen)
213
+ * Bugfix in metabox widget
214
+ * Some translations corrected
215
+ * Minor bugfixes
216
+
217
+ = 1.4 =
218
+ *Release Date - 06/04/2015*
219
+
220
+ * Created the FREE version following Wordpress specs. Branching the PRO version available to buy using website http://www.intellywp.com/tracking-code-manager
221
+
222
+ = 1.3 =
223
+ *Release Date - 02/04/2015*
224
+
225
+ * Fixed a bug that caused the hidden of "Save" button when the license if FREE
226
+
227
+ = 1.2 =
228
+ * Introduced new "Except" feature
229
+
230
+ = 1.1 =
231
+ * Introduced new "Custom Post type" feature
232
+
233
+ = 1.0 =
234
+ * First release