Easy Plugin for AdSense - Version 8.08

Version Description

Documentation and usability enhancements.

Download this release

Release Info

Developer manojtd
Plugin Icon 128x128 Easy Plugin for AdSense
Version 8.08
Comparing to
See all releases

Code changes from version 7.61 to 8.08

Files changed (95) hide show
  1. EZWP.php +147 -0
  2. EzAdmin.php +0 -591
  3. EzGA.php +996 -0
  4. EzGAPro.php +56 -0
  5. EzOptions.php +0 -745
  6. EzTran.php +1 -1
  7. EzWidget.php +65 -0
  8. admin.php +0 -328
  9. admin/Migrator.php +218 -0
  10. admin/Updater.php +135 -0
  11. admin/ajax/categories.php +28 -0
  12. admin/ajax/options-suspend-ads.php +16 -0
  13. admin/ajax/options.php +5 -0
  14. admin/ajax/pages.php +32 -0
  15. admin/ajax/posts.php +28 -0
  16. admin/ajax/success.php +26 -0
  17. admin/ajax/update.php +114 -0
  18. admin/box-ad-alignment-options.php +38 -0
  19. admin/box-ad-alignment.php +27 -0
  20. admin/box-more-info.php +41 -0
  21. admin/box-optionset.php +14 -0
  22. admin/box-suppressing-ads-options.php +41 -0
  23. admin/box-suppressing-ads.php +45 -0
  24. admin/css/bootstrap-cerulean.min.css +7 -0
  25. admin/css/bootstrap-colorpicker.min.css +9 -0
  26. admin/css/bootstrap-editable.css +663 -0
  27. admin/css/bootstrap-tour.min.css +19 -0
  28. admin/css/charisma-app.css +658 -0
  29. admin/css/ez-admin.css +20 -0
  30. admin/css/fileinput.min.css +11 -0
  31. admin/css/font-awesome.min.css +4 -0
  32. admin/easy-adsense-admin.php +381 -0
  33. admin/easy-adsense-intro.php +68 -0
  34. admin/easy-adsense-options.php +225 -0
  35. admin/fonts/fontawesome-webfont.eot +0 -0
  36. admin/fonts/fontawesome-webfont.svg +520 -0
  37. admin/fonts/fontawesome-webfont.ttf +0 -0
  38. admin/fonts/fontawesome-webfont.woff +0 -0
  39. admin/fonts/glyphicons-halflings-regular.eot +0 -0
  40. admin/fonts/glyphicons-halflings-regular.svg +229 -0
  41. admin/fonts/glyphicons-halflings-regular.ttf +0 -0
  42. admin/fonts/glyphicons-halflings-regular.woff +0 -0
  43. admin/footer.php +44 -0
  44. admin/header.php +278 -0
  45. admin/i18n.php +22 -0
  46. admin/img/ads-ez.png +0 -0
  47. admin/img/bootstrap-colorpicker/alpha-horizontal.png +0 -0
  48. admin/img/bootstrap-colorpicker/alpha.png +0 -0
  49. admin/img/bootstrap-colorpicker/hue-horizontal.png +0 -0
  50. admin/img/bootstrap-colorpicker/hue.png +0 -0
  51. admin/img/bootstrap-colorpicker/saturation.png +0 -0
  52. google-dark.gif → admin/img/google-dark.gif +0 -0
  53. google-light.gif → admin/img/google-light.gif +0 -0
  54. admin/img/paypal-partner.png +0 -0
  55. admin/img/svcs/300x250-00.jpg +0 -0
  56. admin/img/svcs/300x250-01.jpg +0 -0
  57. admin/img/svcs/300x250-02.jpg +0 -0
  58. admin/img/svcs/300x250-03.jpg +0 -0
  59. admin/img/svcs/300x250-04.jpg +0 -0
  60. admin/index.php +26 -0
  61. admin/js/bootbox.min.js +6 -0
  62. admin/js/bootstrap-colorpicker.min.js +1 -0
  63. admin/js/bootstrap-editable.min.js +7 -0
  64. admin/js/bootstrap-tour.min.js +19 -0
  65. admin/js/bootstrap.min.js +6 -0
  66. admin/js/charisma.js +418 -0
  67. admin/js/ez-admin.js +116 -0
  68. admin/js/fileinput.min.js +6 -0
  69. admin/js/tooltip.js +457 -0
  70. admin/lock.php +15 -0
  71. admin/migrate.php +28 -0
  72. admin/options.php +39 -0
  73. admin/pro-options.php +0 -0
  74. admin/promo.php +70 -0
  75. admin/support.php +23 -0
  76. admin/tour.php +141 -0
  77. admin/update.php +212 -0
  78. arvixe.gif +0 -0
  79. debug.php +42 -0
  80. easy-adsense-frontend.php +237 -0
  81. easy-adsense-lite.php +0 -1066
  82. easy-adsense-widget.php +166 -0
  83. easy-adsense.php +30 -0
  84. english.gif +0 -0
  85. ezDenyLite.php +0 -40
  86. ezKillLite.php +120 -0
  87. ezpaypal.png +0 -0
  88. ezsupport.png +0 -0
  89. head-text.php +0 -30
  90. invite.gif +0 -0
  91. lang/ar_MA.mo +0 -0
  92. lang/ar_MA.po +0 -413
  93. lang/ar_MA_easy-common.mo +0 -0
  94. lang/by_BY.mo +0 -0
  95. lang/by_BY.po +0 -205
EZWP.php ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!class_exists('EZWP')) {
4
+
5
+ require_once 'EzGAPro.php';
6
+
7
+ class EZWP extends EzGAPro {
8
+
9
+ static $isPro = false;
10
+ static $strPro = 'Lite';
11
+ static $pluginModes = array('adsense-now' => 'AdSense Now!',
12
+ 'google-adsense' => 'Google AdSense',
13
+ 'easy-adsense' => 'Easy AdSense');
14
+
15
+ static function isPro() {
16
+ $file = dirname(__FILE__) . "/admin/pro.php";
17
+ self::$isPro = file_exists($file);
18
+ return self::$isPro;
19
+ }
20
+
21
+ static function getPlgMode($dir = "") {
22
+ $pluginModes = self::$pluginModes;
23
+ foreach ($pluginModes as $p => $name) {
24
+ if (strpos(__FILE__, $p) !== false) {
25
+ $mode = $p;
26
+ break;
27
+ }
28
+ }
29
+ $required = array('../%s-frontend.php', '%s-admin.php', '%s-options.php');
30
+ $pwd = getcwd();
31
+ if (empty($dir)) {
32
+ $dir = dirname(__FILE__) . "/admin";
33
+ }
34
+ chdir($dir);
35
+ foreach ($required as $format) {
36
+ $file = sprintf($format, $mode);
37
+ if (!file_exists($file)) {
38
+ trigger_error("stack trace");
39
+ die("Required file <code>{$file}</code> not found in <code>$dir</code>.<br> Please reinstall the plugin.");
40
+ }
41
+ }
42
+ if ($mode == 'google-adsense') {
43
+ $ultra = true;
44
+ foreach ($pluginModes as $p => $name) {
45
+ foreach ($required as $format) {
46
+ $file = sprintf($format, $p);
47
+ if (!file_exists($file)) {
48
+ $ultra = false;
49
+ break 2;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ else {
55
+ $ultra = false;
56
+ }
57
+ if ($ultra) {
58
+ $mode = 'google-adsense-ultra';
59
+ }
60
+ chdir($pwd);
61
+ return $mode;
62
+ }
63
+
64
+ static function getPlgName($dir = "") {
65
+ $mode = self::getPlgMode($dir);
66
+ if ($mode == 'google-adsense-ultra') {
67
+ self::$strPro = 'Ultra';
68
+ $name = 'Google AdSense Ultra';
69
+ }
70
+ else {
71
+ $name = self::$pluginModes[$mode];
72
+ if (self::isPro()) {
73
+ self::$strPro = 'Pro';
74
+ $name .= ' Pro';
75
+ }
76
+ else {
77
+ self::$strPro = 'Lite';
78
+ $name .= ' Lite';
79
+ }
80
+ }
81
+ return $name;
82
+ }
83
+
84
+ static function getProName($dir = "") {
85
+ $mode = self::getPlgMode($dir);
86
+ $proNames = array('adsense-now' => 'AdSense Now! Pro',
87
+ 'google-adsense' => 'Google AdSense Ultra',
88
+ 'easy-adsense' => 'Easy AdSense Pro');
89
+ if (!empty($proNames[$mode])) {
90
+ return $proNames[$mode];
91
+ }
92
+ else {
93
+ return 'Google AdSense Ultra';
94
+ }
95
+ }
96
+
97
+ static function getGenOption($name) {
98
+ global $wpdb;
99
+ $table = $wpdb->prefix . "ez_adsense_options";
100
+ $sql = "SELECT value FROM $table WHERE name='$name' AND plugin_slug='All' AND theme='All' AND provider='All' AND optionset='All'";
101
+ $row = $wpdb->get_results($sql);
102
+ if (!empty($row)) {
103
+ $row = $row[0];
104
+ $value = $row->value;
105
+ }
106
+ else {
107
+ $value = '';
108
+ }
109
+ return $value;
110
+ }
111
+
112
+ static function getSlug($dir = "") {
113
+ $plugin_slug = self::getPlgMode($dir);
114
+ if ($plugin_slug == 'google-adsense-ultra') {
115
+ $plugin_slug = self::getGenOption('plugin_slug');
116
+ if (empty($plugin_slug)) {
117
+ $candidates = array('google-adsense', 'easy-adsense', 'adsense-now');
118
+ foreach ($candidates as $c) {
119
+ if (stripos($dir, $c) !== false) {
120
+ $plugin_slug = $c;
121
+ break;
122
+ }
123
+ }
124
+ }
125
+ if (empty($plugin_slug)) {
126
+ $plugin_slug = 'google-adsense';
127
+ }
128
+ self::putGenOption('plugin_slug', $plugin_slug);
129
+ }
130
+ return $plugin_slug;
131
+ }
132
+
133
+ static function putGenOption($name, $value) {
134
+ global $wpdb;
135
+ $table = $wpdb->prefix . "ez_adsense_options";
136
+ $row['name'] = $name;
137
+ $row['value'] = $value;
138
+ foreach (array('plugin_slug', 'theme', 'provider', 'optionset') as $col) {
139
+ $row[$col] = "All";
140
+ }
141
+ $status = $wpdb->replace($table, $row);
142
+ return $status;
143
+ }
144
+
145
+ }
146
+
147
+ }
EzAdmin.php DELETED
@@ -1,591 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (C) 2008 www.ads-ez.com
5
-
6
- This program is free software; you can redistribute it and/or modify
7
- it under the terms of the GNU General Public License as published by
8
- the Free Software Foundation; either version 3 of the License, or (at
9
- your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful, but
12
- WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- General Public License for more details.
15
-
16
- You should have received a copy of the GNU General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- */
19
-
20
- if (!class_exists('EzAdmin')) {
21
-
22
- class EzAdmin {
23
-
24
- var $plgURL, $plgFile, $plg, $slug, $name;
25
- var $killAuthor = false;
26
-
27
- function __construct($plg, $slug, $plgURL) {
28
- $this->plg = $plg;
29
- $this->slug = $slug;
30
- $this->plgURL = $plgURL;
31
- }
32
-
33
- function __destruct() {
34
-
35
- }
36
-
37
- function EzAdmin($plg, $slug, $plgURL) {
38
- if (version_compare(PHP_VERSION, "5.0.0", "<")) {
39
- $this->__construct($plg, $slug, $plgURL);
40
- register_shutdown_function(array($this, "__destruct"));
41
- }
42
- }
43
-
44
- function renderNags(&$options) {
45
- if (empty($options['kill_rating'])) {
46
- $this->renderRating();
47
- }
48
- else {
49
- echo "<input type='hidden' name='kill_rating' value='true' />";
50
- }
51
- // if (empty($options['kill_invites'])) {
52
- // $this->renderInvite();
53
- // }
54
- // else {
55
- // echo "<input type='hidden' name='kill_invites' value='true' />";
56
- // }
57
- }
58
-
59
- function renderInvite() {
60
- if ($this->killAuthor) {
61
- return;
62
- }
63
- $plg = $this->plg;
64
- $slug = $this->slug;
65
- $plgLongName = $plg['value'];
66
- $plgPrice = $plg['price'];
67
- $yesTip = sprintf(__('Buy %s Pro for $%s. PayPal payment. Instant download.', 'easy-common'), $plgLongName, $plgPrice);
68
- $yesTitle = __('Get the Pro version now!', 'easy-common');
69
- $noTip = __('Continue using the Lite version, and hide this message. After clicking this button, please remember to save your options to hide this box for good.', 'easy-common');
70
- $noTitle = __('Stay Lite', 'easy-common');
71
- $plgKey = $this->getPlgKey();
72
- $onClick = addslashes("onclick=\"popupwindow('http://www.thulasidas.com/promo.php?key=$plgKey','Get Pro', 1024, 768);return false;\"");
73
- $hideTip = htmlspecialchars(__('Click the link to hide this box. After clicking this link, please remember to save your options to hide this box for good.', 'easy-common') . "<br /><a style=\"color:red;font-weight:bold\" href=\"http://www.thulasidas.com/promo.php?key=$plgKey\" target=_blank $onClick>" . __("Limited Time Offer. Get the Pro version for less than a dollar!", 'easy-common') . "</a>");
74
- if (empty($plg['benefits'])) {
75
- return;
76
- }
77
- $benefits = $plg['benefits'];
78
-
79
- $s1 = __("Want More Features?", 'easy-common');
80
- $s2 = __("The Pro version of this plugin gives you more features and benefits.", 'easy-common');
81
- $s3 = __("For instance", 'easy-common');
82
- $s4 = __("And much more.", 'easy-common');
83
- $s5 = __("New features and bug fixes will first appear in the Pro version before being ported to this freely distributed Lite edition.", 'easy-common');
84
- $s6 = __("Go Pro!", 'easy-common');
85
- $s7 = __("No thanks", 'easy-common');
86
- $s8 = __("Do not show this anymore", 'easy-common');
87
- $s9 = sprintf(__("Thank you for using %s!", 'easy-common'), $plgLongName);
88
- $s10 = __("Please Save Options to hide this box forever", 'easy-common');
89
-
90
- echo <<<ENDINVITE
91
- <input type="hidden" id="kill_invites" name="kill_invites" value="" />
92
- <div class="updated" id="tnc">
93
- <p><h3>$s1 <a href="#" onmouseover="Tip('$yesTip', WIDTH, 200, CLICKCLOSE, true, TITLE, '$yesTitle')" onmouseout="UnTip()" onclick = "buttonwhich('Yes')">Go Pro!</a></h3>
94
- $s2 $s3,
95
- <ol>
96
- $benefits
97
- </ol>
98
- $s4 $s5<br />
99
- <input onmouseover="Tip('$yesTip', WIDTH, 200, CLICKCLOSE, true, TITLE, '$yesTitle')" onmouseout="UnTip()" type = "button" id = "ybutton" value = "$s6" onclick = "buttonwhich('Yes')" />
100
- <input onmouseover="Tip('$noTip', WIDTH, 200, CLICKCLOSE, true, TITLE, '$noTitle')" onmouseout="UnTip()" type = "button" id = "nbutton" value = "$s7" onclick = "buttonwhich('No')" />
101
- <small style='font-weight:normal;'><a id='hideInvite' href='#' style='float:right; display:block; border:none;' onmouseover="Tip('$hideTip', WIDTH, 200, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5], TITLE, 'Hide this Box')" onclick = "buttonwhich('No')">
102
- $s8</a></small>
103
- <script type = "text/javascript">
104
- function hideInvite() {
105
- document.getElementById("tnc").style.display = 'none';
106
- }
107
- function buttonwhich(message) {
108
- document.getElementById("ybutton").style.display = 'none';
109
- document.getElementById("nbutton").disabled = 'true';
110
- document.getElementById("kill_invites").value = 'true' ;
111
- setTimeout('hideInvite()', 5000);
112
- if (message == 'Yes') popupwindow('http://buy.thulasidas.com/$slug', '$s6', 1024, 768) ;
113
- if (message == 'No') {
114
- document.getElementById("nbutton").value = '$s9 $s10';
115
- document.getElementById("hideInvite").innerHTML = '$s10';
116
- }
117
- }
118
- </script>
119
- </div>
120
- ENDINVITE;
121
- }
122
-
123
- function getPlgKey() {
124
- $plgKey = basename($this->plgFile, '.php');
125
- if (in_array($plgKey, array('easy-ads', 'google-adsense', 'theme-tweaker'))) {
126
- $plgKey .= '-lite';
127
- }
128
- if ($plgKey == 'easy-paypal-lite') {
129
- $plgKey = 'easy-paypal-lte';
130
- }
131
- return $plgKey;
132
- }
133
-
134
- function renderRating($killable = true) {
135
- if ($this->killAuthor) {
136
- return;
137
- }
138
- $plgFile = $this->plgFile;
139
- $plg = $this->plg;
140
- $plgCTime = filemtime($plgFile);
141
- $plgLongName = $plg['value'];
142
- $plgKey = $this->getPlgKey();
143
- $onClick = addslashes("onclick=\"popupwindow('http://www.thulasidas.com/promo.php?key=$plgKey','Get Pro', 1024, 768);return false;\"");
144
- $hideTip = htmlspecialchars(__('Click the link to hide this box. After clicking this link, please remember to save your options to hide this box for good.', 'easy-common') . "<br /><a style=\"color:red;font-weight:bold\" href=\"http://www.thulasidas.com/promo.php?key=$plgKey\" target=_blank $onClick>" . __("Limited Time Offer. Get the Pro version for less than a dollar!", 'easy-common') . "</a>");
145
-
146
- if (time() > $plgCTime + (60 * 60 * 24 * 30)) {
147
- $msg = __("You've installed this plugin over a month ago.", 'easy-common');
148
- }
149
- else {
150
- $msg = __("You will find it feature-rich and robust.", 'easy-common');
151
- }
152
- $display = '';
153
- if (!$killable) {
154
- $display = "style='display:none'";
155
- }
156
-
157
- $s1 = __("If you are satisfied with how well it works, why not rate it and recommend it to others?", 'easy-common');
158
- $s2 = __("Click here", 'easy-common');
159
- $s3 = __("Do not show this anymore", 'easy-common');
160
- $s4 = __("Please Save Options to hide this box forever", 'easy-common');
161
-
162
- echo <<<ENDRATING
163
- <div class='updated' id='rating'>
164
- <p>Thanks for using <i><b>$plgLongName</b></i>! $msg <br />
165
- $s1 <a href='http://wordpress.org/extend/plugins/$plgKey/' onclick="popupwindow('http://wordpress.org/extend/plugins/$plgKey/','$s2', 1024, 768);return false;">$s2</a>
166
- <small style='font-weight:normal;'><a id='hideRating' $display href='#' style='float:right; display:block; border:none;' onmouseover="Tip('$hideTip', WIDTH, 200, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5], TITLE, 'Hide this Box')" onclick = "hideme()">
167
- $s3</a></small></p></div>
168
- <input type="hidden" id="kill_rating" name="kill_rating" value="" />
169
- <script type = "text/javascript">
170
- function hideRating() {
171
- document.getElementById("rating").style.display = 'none';
172
- }
173
- function hideme() {
174
- document.getElementById("kill_rating").value = 'true' ;
175
- document.getElementById("hideRating").innerHTML = '$s4';
176
- setTimeout('hideRating()', 4000);
177
- }
178
- </script>
179
- ENDRATING;
180
- }
181
-
182
- function renderHeadText() {
183
- $plgURL = $this->plgURL;
184
- $plg = $this->plg;
185
- $slug = $this->slug;
186
- $value = '<em><strong>' . $plg['value'] . '</strong></em>';
187
- $toolTip = $plg['title'];
188
- $price = $plg['price'];
189
- $onclick = "onclick=\"popupwindow('http://buy.thulasidas.com/$slug','Get Pro}', 1024, 768);return false;\"";
190
-
191
- $s2 = __('Lite Version', 'easy-common');
192
- $s3 = sprintf(__('Buy the Pro version of %s for $%.2f', 'easy-common'), $plg['value'], $price);
193
- $s4 = __('Instant download link.', 'easy-common');
194
- $s5 = __('Pro Version', 'easy-common');
195
- $moreInfo = "$s2 and <b><a href='http://buy.thulasidas.com/$slug' title='$s3. $s4' $onclick>$s5</a></b>";
196
- $toolTip .= addslashes('<br />' . $moreInfo);
197
- $why = addslashes($plg['pro']);
198
- $version = 'Lite';
199
-
200
- $s6 = sprintf(__('You are using the %s version of %s, which is available in two versions:', 'easy-common'), $version, $value);
201
- $s7 = sprintf(__('And it costs only $%.2f!', 'easy-common'), $price);
202
- $s8 = __('Get the Pro version now!', 'easy-common');
203
-
204
- $plgKey = $this->getPlgKey();
205
- $promoClick = "onclick=\"popupwindow('http://www.thulasidas.com/promo.php?key=$plgKey','Get Pro', 1024, 768);return false;\"";
206
- $promoTip = "<a style=\"color:red;font-weight:bold\" href=\"http://www.thulasidas.com/promo.php?key=$plgKey\" target=_blank $promoClick>" . __("Limited Time Offer. Get the Pro version for less than a dollar!", 'easy-common') . "</a>";
207
-
208
- echo "<b>$s8</b>
209
- <a href='http://buy.thulasidas.com/$slug' title='$s3. $s4' $onclick><img src='$plgURL/ezpaypal.png' alt='ezPayPal' class='alignright'/></a>
210
- <br />
211
- $s6
212
- <ul><li>
213
- $moreInfo
214
- </li>
215
- <li>$why $s7</li>
216
- </ul>$promoTip";
217
- }
218
-
219
- function renderProText() {
220
- echo "<div id='pro' style='display:none'>";
221
- $this->renderHeadText();
222
- echo "</div>";
223
- if ($this->killAuthor) {
224
- return;
225
- }
226
- $plg = $this->plg;
227
- $slug = $this->slug;
228
- $value = '<em><strong>' . $plg['value'] . '</strong></em>';
229
- $filter = '';
230
- if (stripos($slug, 'adsense') !== FALSE) {
231
- $filter = __("e.g., a filter to ensure AdSense policy compliance.", 'easy-common');
232
- }
233
- $toolTip = $plg['title'];
234
- $price = $plg['price'];
235
- $onclick = "onclick=\"popupwindow('http://buy.thulasidas.com/$slug','Get Pro', 1024, 768);return false;\"";
236
-
237
- $s1 = sprintf(__('Download the Lite version of %s', 'easy-common'), $plg['value']);
238
- $s2 = __('Lite Version', 'easy-common');
239
- $s3 = sprintf(__('Buy the Pro version of %s for $%.2f', 'easy-common'), $plg['value'], $price);
240
- $s4 = __('Pro Version', 'easy-common');
241
- $s5 = __('Buy the Pro Version', 'easy-common');
242
-
243
- $moreInfo = "&nbsp; <a href='http://buy.thulasidas.com/lite/$slug.zip' title='$s1'>$s2 </a>&nbsp; <a href='http://buy.thulasidas.com/$slug' title='$s3' $onclick>$s4</a>";
244
- $toolTip .= addslashes('<br />' . $moreInfo);
245
- echo "<div style='background-color:#ffcccc;padding:5px;border: solid 1px;'>
246
- <div style='font-size:14px;color:#a48;font-variant: small-caps;text-decoration:underline;text-align:center;' $onclick onmouseover=\"TagToTip('pro', WIDTH, 300, TITLE, '$s5',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])\"><b>$s4</b></div>";
247
-
248
- $s8 = sprintf(__('It costs only $%.2f!', 'easy-common'), $price);
249
- $s9 = __('Instant download link.', 'easy-common');
250
- $value .= '<b><i> Lite</i></b>';
251
- $s10 = sprintf(__('Thank you for using %s. The "Pro" version gives you more options.', 'easy-common'), $value);
252
- $s11 = __("Consider buying it.", 'easy-common');
253
-
254
- $plgKey = $this->getPlgKey();
255
- $promoClick = addslashes("onclick=\"popupwindow('http://www.thulasidas.com/promo.php?key=$plgKey','Get Pro', 1024, 768);return false;\"");
256
- $promoTip = htmlspecialchars("$s3. $s9<br /><a style=\"color:red;font-weight:bold\" href=\"http://www.thulasidas.com/promo.php?key=$plgKey\" target=_blank $promoClick>" . __("Limited Time Offer. Get the Pro version for less than a dollar!", 'easy-common') . "</a>");
257
-
258
- echo "$s10 $filter $s11 <br /><a $onclick href='http://buy.thulasidas.com/$slug' title='$s3. $s9' onmouseover=\"Tip('$promoTip', WIDTH, 200, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5], TITLE, 'Limited Time Offer')\" target=_blank>$s8</a>";
259
- echo "</div>";
260
- }
261
-
262
- function renderAffiliate() {
263
- if ($this->killAuthor) {
264
- return;
265
- }
266
- $plgURL = $this->plgURL;
267
-
268
- $select = rand(0,4);
269
- echo "<div style='padding:0px;border:none;text-align:center' id='support' onmouseover=\"TagToTip('proservices', WIDTH, 295, TITLE, 'Professional Services', FIX, [this, 25, 0], CLICKCLOSE, true, CLOSEBTN, true)\" ><a href='http://www.thulasidas.com/professional-php-services/' target='_blank'><img src='$plgURL/300x250-0$select.jpg' border='0' alt='Professional Services from the Plugin Author' /></a></div>";
270
- }
271
-
272
- function renderSupportText() {
273
- if ($this->killAuthor) {
274
- return;
275
- }
276
- $plg = $this->plg;
277
- $slug = $this->slug;
278
- $long = $plg['long'];
279
- $value = '<em><strong>' . $plg['value'] . '</strong></em>';
280
- $supportText = "<div style=\"background-color:#cff;padding:5px;border: solid 1px\" id=\"support\"><b>Support $value. <a href=\"http://buy.thulasidas.com/$slug\" title=\"Pro version of this plugin. Instant download link.\" onclick=\"popupwindow('http://buy.thulasidas.com/$slug','Get {$plg['value']}', 1024, 768);return false;\">Go Pro!</a></b>";
281
- if ($long) {
282
- $longText = "Speed up your blog: ";
283
- }
284
- else {
285
- $longText = '';
286
- }
287
- $supportText .= "<br />$longText<span onmouseover=\"TagToTip('maxcdn', WIDTH, 300, TITLE, 'What is MaxCDN?',STICKY, 1, CLOSEBTN, true, FIX, [this, -150, 2])\"><a href='http://tracking.maxcdn.com/c/95082/3964/378' target='_blank'>Use MaxCDN!</a></span>";
288
- if ($long) {
289
- $longText = "WordPress Hosting for ";
290
- }
291
- else {
292
- $longText = 'Hosting for ';
293
- }
294
- $supportText .= "<br />$longText<span onmouseover=\"TagToTip('arvixe', WIDTH, 300, TITLE, 'Arvixe - My favorite provider!',STICKY, 1, CLOSEBTN, true, FIX, [this, -200, 2])\"><a href='http://www.arvixe.com/1933.html' target='_blank'>just $4/month</a></span>. ";
295
- if ($long) {
296
- $longText = "My books on ";
297
- }
298
- else {
299
- $longText = 'Books: ';
300
- }
301
- $supportText .= "<br />$longText<span style=\"text-decoration:underline\" onmouseover=\"TagToTip('unreal', WIDTH, 205, TITLE, 'Buy &lt;em&gt;The Unreal Universe&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, FIX, [this, 5, 2])\"><b><a href='http://buy.thulasidas.com/unreal' target='_blank'>Physics &amp; Philosophy</a></b></span> or ";
302
- $supportText .= "<span style=\"text-decoration:underline\" onmouseover=\"TagToTip('pqd', WIDTH, 205, TITLE, '&lt;em&gt;Principles of Quant. Devel.&lt;/em&gt;',STICKY, 1, CLOSEBTN, true, FIX, [this, 5, 2])\"><b><a href='http://buy.thulasidas.com/pqd' target='_blank'>Money &amp; Finance</a></b></span>.</div>";
303
- echo $supportText;
304
- }
305
-
306
- function renderTipDivs() {
307
- $plgURL = $this->plgURL;
308
- echo <<<ENDDIVS
309
- <div id="arvixe" style='display:none;'>
310
- <a href="http://www.arvixe.com/1933-27-1-310.html" target="_blank"><b>Arvixe</b></a> is my favorite hosting provider. Friendly service, extremely competitive rates, and of course a great affiliate program. My own WordPress blog and a dozen websites are hosted on their VPS. If you are looking for a new hosting provider, do check them out!
311
- </div>
312
-
313
- <span id="proservices" style='display:none;'>
314
- The author of this plugin may be able to help you with your WordPress or plugin customization needs and other PHP related development. <a href='http://www.thulasidas.com/professional-php-services/' target='_blank'>Contact me</a> if you find a plugin that almost, but not quite, does what you are looking for, or if you need any other professional services. If you would like to see my credentials, take a look at <a href='http://www.thulasidas.com/col/Manoj-CV.pdf' target='_blank'>my CV</a>.
315
- </span>
316
-
317
- <span id="superlinks" style='display:none;'>
318
- <a href='http://superlinks.com' target='_blank'><b>Superlinks</b></a> is an advertising network that can give AdSense a run for its money. It gives you access to Google AdExchange program, normally reserved for very high volume publishers. I have partnered with Superlinks to give you access to their offerings. If your site qualifies for Google AdX, you stand to make significantly higher returns than AdSense. Give it a shot!
319
- </span>
320
-
321
- <span id="maxcdn" style='display:none;'>
322
- <a href='http://tracking.maxcdn.com/c/95082/3964/378' target='_blank'><b>MaxCDN</b></a> is a professional content delivery network. Easiest and most effective way to optimize your blog performance. Compatible with caching plugins, 24x7 professional support. Faster than most CDN providers in the continental US. Cheaper and better than most. Check it out now!
323
- </span>
324
-
325
- <span id="dropbox" style='display:none;'>
326
- Dropbox! gives you 2GB of network (cloud) storage for free, which I find quite adequate for any normal user. (That sounds like the famous last words by Bill Gates, doesn’t it? “64KB of memory should be enough for anyone!”) And, you can get 250MB extra for every successful referral you make. That brings me to my ulterior motive – please use this link to sign up. When you do, I get 500MB extra. Don’t worry, you get 500MB extra as well. So I can grow my online storage up to 18GB, which should keep me happy for a long time. Thank you!
327
- </span>
328
-
329
- <div id="unreal" style="margin-left:auto;margin-right:auto;width:200px;display:none;">
330
- <div style="text-align:center;width:200px;padding:1px;background:#aad;margin:2px;">
331
- <div style="text-align:center;width:192px;height:180px;padding:2px;border:solid 1px #000;background:#ccf;margin:1px;">
332
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/unreal-universe" title="Find out more about The Unreal Universe and buy it ($1.49 for eBook, $15.95 for paperback). It will change the way you view life and reality!">
333
- <span style="font-size:14px;font-family:arial;color:#a48;font-variant: small-caps;"><b>The Unreal Universe</b></span><br />
334
- <small style="font-size:12px;font-family:arial;color:#000;">
335
- A Book on Physics and Philosophy
336
- </small>
337
- </a>
338
- <hr />
339
- <table style="border-width:0;padding:2px;width:100%;margin-left:auto;margin-right:auto;border-spacing:0;border-collapse:collapse;">
340
- <tr><td style="width:65%">
341
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/unreal-universe" title="Find out more about The Unreal Universe and buy it ($1.49 for eBook or Kindle, $15.95 for paperback). It will change the way you view life and reality!">
342
- <small style="font-size:10px;font-family:arial;color:#000;">
343
- Pages: 292<br />
344
- (282 in eBook)<br />
345
- Trimsize: 6" x 9" <br />
346
- Illustrations: 34<br />
347
- (9 in color in eBook)<br />
348
- Tables: 8 <br />
349
- Bibliography: Yes<br />
350
- Index: Yes<br />
351
- ISBN: 9789810575946&nbsp;<br />
352
- <span style="font-color=#ff0000;"><b>Only $1.49!</b></span>
353
- </small>
354
- </a>
355
- </td>
356
- <td>
357
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/unreal-universe" title="Find out more about The Unreal Universe and buy it ($1.49 for eBook or Kindle, $15.95 for paperback). It will change the way you view life and reality!">
358
- <img class="alignright" src="$plgURL/unreal.gif" alt="TheUnrealUniverse" title="Read more about The Unreal Universe" />
359
- </a>
360
- </td>
361
- </tr>
362
- </table>
363
- </div>
364
- </div>
365
- </div>
366
-
367
- <div id="pqd" style="margin-left:auto;margin-right:auto;width:200px;display:none;">
368
- <div style="text-align:center;width:200px;padding:1px;background:#000;margin:2px;">
369
- <div style="text-align:center;width:190px;height:185px;padding:2px;padding-top:1px;padding-left:4px;border:solid 1px #fff;background:#411;margin:1px;">
370
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/pqd" title="Buy the companion eBook to Principles of Quantitative Development from the author (only $5.49)">
371
- <span style="font-size:14px;font-family:arial;color:#fff;font-variant: small-caps;">A Remarkable Book from Wiley-Finance</span>
372
- </a>
373
- <hr />
374
- <table style="border-width:0;padding:2px;width:100%;margin-left:auto;margin-right:auto;border-spacing:0;border-collapse:collapse;">
375
- <tr><td style="padding:0px">
376
- <div style="border:solid 1px #faa;height:126px;width:82px;">
377
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/pqd" title="Buy the companion eBook to Principles of Quantitative Development from the author (only $5.49)">
378
- <img src="$plgURL/pqd-82x126.gif" alt="PQD" title="Buy the companion eBook to Principles of Quantitative Development from the author (only $5.49)" />
379
- </a>
380
- </div>
381
- </td>
382
- <td style="padding:3px">
383
- <a style="text-decoration:none;" href="http://buy.thulasidas.com/pqd" title="Buy the companion eBook to Principles of Quantitative Development from the author (only $5.49)">
384
- <em style="font-size:14px;font-family:arial;color:#fff;">"An excellent book!"</em><br />
385
- <small style="font-size:13px;font-family:arial;color:#faa;">&nbsp;&nbsp;&#8212; Paul Wilmott</small>
386
- <br />
387
- <small style="font-size:11px;font-family:arial;color:#fff;">
388
- Want to break into the lucrative world of trading and quantitative finance? You <b>need </b> this book!
389
- </small>
390
- </a>
391
- </td>
392
- </tr>
393
- </table>
394
- </div>
395
- </div>
396
- </div>
397
- ENDDIVS;
398
- }
399
-
400
- static function makeTextWithTooltip($text, $tip, $title = '', $width = '') {
401
- if (!empty($title)) {
402
- $titleText = "TITLE, '$title',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true,";
403
- }
404
- if (!empty($width)) {
405
- $widthText = "WIDTH, $width,";
406
- }
407
- $return = "<span style='text-decoration:none' " .
408
- "onmouseover=\"Tip('" . htmlspecialchars($tip) . "', " .
409
- "$widthText $titleText FIX, [this, 5, 5])\" " .
410
- "onmouseout=\"UnTip()\">$text</span>";
411
- return $return;
412
- }
413
-
414
- static function makeTextWithTooltipTag($plg, $text, $tip, $title = '', $width = '') {
415
- if (!empty($title)) {
416
- $titleText = "TITLE, '$title',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true,";
417
- }
418
- if (!empty($width)) {
419
- $widthText = "WIDTH, $width,";
420
- }
421
- $return = "<span style='text-decoration:none' " .
422
- "onmouseover=\"TagToTip('" . $plg . "', " .
423
- "$widthText $titleText FIX, [this, 5, 5])\" " .
424
- "onmouseout=\"UnTip()\">$text</span>";
425
- return $return;
426
- }
427
-
428
- function renderPlg($slug, $plg) {
429
- if ($this->killAuthor) {
430
- return;
431
- }
432
- $plgURL = $this->plgURL;
433
- if (!empty($plg['hide']) && $plg['hide']) {
434
- return;
435
- }
436
- if (!empty($plg['kind']) && $plg['kind'] != 'plugin') {
437
- return;
438
- }
439
- $value = '<em><strong>' . $plg['value'] . '</strong></em>';
440
- $desc = $plg['desc'];
441
- $title = $plg['title'];
442
- $url = 'http://www.thulasidas.com/plugins/' . $slug;
443
- $link = '<b><a href="' . $url . '" target="_blank">' . $value . '</a></b>&nbsp; ';
444
- $text = $link . $desc;
445
- $price = $plg['price'];
446
- $onclick = "onclick=\"popupwindow('http://buy.thulasidas.com/$slug','Get {$plg['value']}', 1024, 768);return false;\"";
447
- $moreInfo = "&nbsp;&nbsp;<a href='http://www.thulasidas.com/plugins/$slug' title='More info about $value at Unreal Blog'>More Info</a> ";
448
- $liteVersion = "&nbsp;&nbsp; <a href='http://buy.thulasidas.com/lite/$slug.zip' title='Download the Lite version of $value'>Get Lite Version</a> ";
449
- $proVersion = "&nbsp;&nbsp; <a href='http://buy.thulasidas.com/$slug' title='Buy the Pro version of $value for \$$price' $onclick>Get Pro Version</a><br />";
450
- $why = "<a href='http://buy.thulasidas.com/$slug' title='Buy the Pro version of the $slug plugin' $onclick><img src='$plgURL/ezpaypal.png' alt='ezPayPal -- Instant PayPal Shop.' class='alignright' /></a>
451
- <br />" . $plg['pro'];
452
- echo "<li>" . self::makeTextWithTooltip($text, $title, $value, 350) .
453
- "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" .
454
- self::makeTextWithTooltip($moreInfo, "Read more about $value at its own page.<br />" . $title, "More Information about $value", 300) .
455
- self::makeTextWithTooltip($liteVersion, $title, "Download $value - the Lite version", 300) .
456
- self::makeTextWithTooltipTag($slug, $proVersion, $why, "Get $value Pro!", 300) .
457
- "<span id=$slug> $why </span>" .
458
- "</li>\n";
459
- }
460
-
461
- function renderBook($slug, $plg) {
462
- if ($this->killAuthor) {
463
- return;
464
- }
465
- $plgURL = $this->plgURL;
466
- if (empty($plg['kind']) || $plg['kind'] != 'book') {
467
- return;
468
- }
469
- $value = '<em><strong>' . $plg['value'] . '</strong></em>';
470
- $desc = $plg['desc'];
471
- $title = $plg['title'];
472
- $url = $plg['url'];
473
- $link = '<b><a href="' . $url . '" target="_blank">' . $value . '</a></b>&nbsp; ';
474
- $text = $link . $desc;
475
- $price = $plg['price'];
476
- $onclick = "onclick=\"popupwindow('http://buy.thulasidas.com/$slug','Get {$plg['value']}', 1024, 768);return false;\"";
477
- $moreInfo = "&nbsp;&nbsp; <a href='$url' title='More info about $value' target=_blank>More Info</a> ";
478
- $amazon = $plg['amazon'];
479
- if (!empty($amazon)) {
480
- $buyAmazon = "&nbsp;&nbsp; <a href='$amazon' title='Get $value from Amazon.com' target=_blank>Get it at Amazon</a> ";
481
- }
482
- $buyNow = "&nbsp;&nbsp; <a href='http://buy.thulasidas.com/$slug' title='Buy and download $value for \$$price' target=_blank $onclick>Buy and Download now!</a><br />";
483
- $why = "<a href='http://buy.thulasidas.com/$slug' title='$slug' $onclick><img src='$plgURL/ezpaypal.png' alt='ezPayPal -- Instant PayPal Shop.' class='alignright' /></a>
484
- <br />" . $title . $desc . " $value costs only \$$price -- direct from the author.";
485
- echo "<li>" . self::makeTextWithTooltip($text, $title, $value, 350) .
486
- "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" .
487
- self::makeTextWithTooltip($moreInfo, "Read all about $value at its own site.<br />", "$value", 300) .
488
- self::makeTextWithTooltip($buyAmazon, $title, "Buy $value from Amazon", 350) .
489
- self::makeTextWithTooltipTag("$slug-book", $buyNow, $why, "Buy $value!", 300) .
490
- "<span id=$slug-book> $why </span>" .
491
- "</li>\n";
492
- }
493
-
494
- function getPlgInfo() {
495
- $me = $this->slug;
496
- $plugins = get_plugins();
497
- $ret = array('Version' => '', 'Info' => '');
498
- $break = '';
499
- foreach ($plugins as $k => $p) {
500
- $baseDir = dirname($k);
501
- $baseDirSmall = str_replace("-lite", "", $baseDir);
502
- if ($baseDir == $me || $baseDirSmall == $me) {
503
- $version = $p['Version'];
504
- if (!empty($_SERVER['HTTP_REFERER'])) {
505
- $referer = $_SERVER['HTTP_REFERER'];
506
- }
507
- else {
508
- $referer = 'Unknown';
509
- }
510
- $info = "$break{$p['Title']} V{$p['Version']} (Referer: $referer)";
511
- $ret[] = array('Version' => $version, 'Info' => $info);
512
- }
513
- }
514
- return $ret;
515
- }
516
-
517
- function renderSupport() {
518
- echo '<div style="background-color:#fcf;padding:5px;border: solid 1px;margin:5px;">
519
- ';
520
- $plgURL = $this->plgURL;
521
- $plg = $this->plg;
522
- $slug = $this->slug;
523
- $value = $plg['value'];
524
- $url = 'http://www.thulasidas.com/plugins/' . $slug . '#faq';
525
- $link = '<a href="' . $url . '" target="_blank">' . $value . '</a>';
526
- echo "&nbsp;<a href='http://support.thulasidas.com' onclick=\"popupwindow('http://support.thulasidas.com','ezSupport for $value', 1024, 768);return false;\" title='";
527
- _e('Ask a support question (in English or French only) via ezSupport @ $0.95', 'easy-common');
528
- echo "'><img src='$plgURL/ezsupport.png' class='alignright' alt='ezSupport Portal'/></a>";
529
- printf(__("If you need help with %s, please read the FAQ section on the %s page. It may answer all your questions.", 'easy-common'), $value, $link);
530
- echo "<br style='line-height: 20px;'/>";
531
- _e("Or, if you still need help, you can raise a support ticket.", 'easy-common');
532
- echo "&nbsp;<a href='http://support.thulasidas.com' onclick=\"popupwindow('http://support.thulasidas.com','ezSupport', 1024, 768);return false;\" title='";
533
- _e('Ask a support question (in English or French only) via ezSupport @ $0.95', 'easy-common');
534
- echo "'>";
535
- _e("[Request Paid Support]", 'easy-common');
536
- $info = $this->getPlgInfo();
537
- echo "</a>&nbsp;<small><em>[";
538
- _e('Using our ezSupport Ticket System.', 'easy-common');
539
- echo "]</em></small>";
540
- echo "<small style='float:right'><em>[";
541
- printf(__('You are using %s (V%s)', 'easy-common'), $value, $info[0]['Version']);
542
- echo "]</em></small>";
543
- $_SESSION['ezSupport'] = $info[0]['Info'];
544
- echo "</div>";
545
- }
546
-
547
- function renderWhyPro($short = false) {
548
- if ($this->killAuthor && !$short) {
549
- return;
550
- }
551
- $plgURL = $this->plgURL;
552
- $plg = $this->plg;
553
- $slug = $this->slug;
554
- $value = $plg['value'];
555
- $toolTip = $plg['title'];
556
- $price = $plg['price'];
557
- $buyURL = "http://buy.thulasidas.com/$slug";
558
- $infoURL = "http://www.thulasidas.com/plugins/$slug";
559
- $s1 = sprintf(__('Get %s', 'easy-common'), $value);
560
- $s2 = sprintf(__('More info about %s', 'easy-common'), $value);
561
- $s3 = sprintf(__('Buy the Pro version of %s for $%.2f', 'easy-common'), $value, $price);
562
- $s4 = __('More Info', 'easy-common');
563
-
564
- $onclick = "onclick=\"popupwindow('$buyURL','$s1', 1024, 768);return false;\"";
565
- $moreInfo = " &nbsp; &nbsp; <a href='$infoURL' title='$s2' target=_blank> $s4 </a>&nbsp; <a href='$buyURL' $onclick title='$s3'>Get Pro Version</a>";
566
- $toolTip .= addslashes('<br />' . $moreInfo);
567
- $why = addslashes($plg['pro']);
568
- echo '<div style="background-color:#cff;padding:5px;border: solid 1px;margin:5px;padding-bottom:15px;">';
569
- if ($short) {
570
- $s5 = __('Buy the Pro Version', 'easy-common');
571
- $s6 = __('More features, more power!', 'easy-common');
572
-
573
- echo "<span onmouseover=\"TagToTip('pro', WIDTH, 350, TITLE, 'Buy the Pro Version',STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 5, 5])\"><b><a href='$buyURL' $onclick target='_blank'>$s5</a></b>&nbsp; $s6</span>";
574
- }
575
- else {
576
- $s7 = sprintf(__('You are using the Lite version of %s, which is available in two versions: <b>Lite</b> and <b>Pro</b>.', 'easy-common'), $value);
577
- echo "<b>Get Pro Version!</b>
578
- <a href='http://buy.thulasidas.com/$slug' title='$s3'><img src='$plgURL/ezpaypal.png' alt='ezPayPal' class='alignright' $onclick /></a>
579
- <br />
580
- $s7
581
- <ul><li>
582
- $moreInfo
583
- <li>$why</li>
584
- </ul>";
585
- }
586
- echo '</div>';
587
- }
588
-
589
- }
590
-
591
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
EzGA.php ADDED
@@ -0,0 +1,996 @@