Easy Plugin for AdSense - Version 7.21

Version Description

Further refactoring and internationalization changes.

Download this release

Release Info

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

Code changes from version 7.20 to 7.21

Files changed (9) hide show
  1. EzAdmin.php +4 -3
  2. EzOptions.php +11 -13
  3. EzTran.php +309 -40
  4. easy-adsense-lite.php +6 -4
  5. ezDenyLite.php +40 -0
  6. head-text.php +4 -1
  7. lang/.DS_Store +0 -0
  8. myPlugins.php +47 -30
  9. readme.txt +3 -2
EzAdmin.php CHANGED
@@ -64,15 +64,15 @@ if (!class_exists('EzAdmin')) {
64
  $slug = $this->slug;
65
  $plgLongName = $plg['value'];
66
  $plgPrice = $plg['price'];
67
- $benefits = $plg['benefits'];
68
  $yesTip = sprintf(__('Buy %s Pro for $%s. PayPal payment. Instant download.', 'easy-common'), $plgLongName, $plgPrice);
69
  $yesTitle = __('Get the Pro version now!', 'easy-common');
70
  $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');
71
  $noTitle = __('Stay Lite', 'easy-common');
72
  $hideTip = __('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');
73
- if (empty($benefits)) {
74
  return;
75
  }
 
76
 
77
  $s1 = __("Want More Features?", 'easy-common');
78
  $s2 = __("The Pro version of this plugin gives you more features and benefits.", 'easy-common');
@@ -472,7 +472,8 @@ ENDDIVS;
472
  $break = '';
473
  foreach ($plugins as $k => $p) {
474
  $baseDir = dirname($k);
475
- if ($baseDir == $me) {
 
476
  $version = $p['Version'];
477
  if (!empty($_SERVER['HTTP_REFERER'])) {
478
  $referer = $_SERVER['HTTP_REFERER'];
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
  $hideTip = __('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');
72
+ if (empty($plg['benefits'])) {
73
  return;
74
  }
75
+ $benefits = $plg['benefits'];
76
 
77
  $s1 = __("Want More Features?", 'easy-common');
78
  $s2 = __("The Pro version of this plugin gives you more features and benefits.", 'easy-common');
472
  $break = '';
473
  foreach ($plugins as $k => $p) {
474
  $baseDir = dirname($k);
475
+ $baseDirSmall = str_replace("-lite", "", $baseDir);
476
+ if ($baseDir == $me || $baseDirSmall == $me) {
477
  $version = $p['Version'];
478
  if (!empty($_SERVER['HTTP_REFERER'])) {
479
  $referer = $_SERVER['HTTP_REFERER'];
EzOptions.php CHANGED
@@ -544,17 +544,15 @@ if (!class_exists("EzBasePlugin")) {
544
  if ($this->isPro) {
545
  $this->strPro = ' Pro';
546
  }
547
- if (is_admin()) {
548
- require_once($this->plgDir . '/EzTran.php');
549
- if ($this->slug == "easy-adsense") {
550
- $this->domain = "easy-adsenser";
551
- }
552
- else {
553
- $this->domain = $this->slug;
554
- }
555
- $this->ezTran = new EzTran($file, "{$name}{$this->strPro}", $this->domain);
556
- $this->ezTran->setLang();
557
  }
 
 
 
558
  }
559
 
560
  function __destruct() {
@@ -581,8 +579,8 @@ if (!class_exists("EzBasePlugin")) {
581
  $this->ezOptions['kill_rating'] = new EzBaseOption('hidden', 'kill_rating');
582
 
583
  $o = new EzCheckBox('kill_author');
584
- $o->title = __('If you find the author links and ads on the plugin admin page distracting or annoying, you can suppress them by checking this box. Please remember to save your options after checking.', 'easy-latex');
585
- $o->desc = __('Kill author links on the admin page?', 'easy-latex');
586
  $o->before = "<br /><b>";
587
  $o->after = "</b><br />";
588
  $this->ezOptions['kill_author'] = clone $o;
@@ -700,7 +698,7 @@ if (!class_exists("EzBasePlugin")) {
700
  }
701
 
702
  function mkEzAdmin() {
703
- require_once($this->plgDir . '/myPlugins.php');
704
  $slug = $this->slug;
705
  $plg = $this->myPlugins[$slug];
706
  $plgURL = $this->plgURL;
544
  if ($this->isPro) {
545
  $this->strPro = ' Pro';
546
  }
547
+ if ($this->slug == "easy-adsense") {
548
+ $this->domain = "easy-adsenser";
549
+ }
550
+ else {
551
+ $this->domain = $this->slug;
 
 
 
 
 
552
  }
553
+ require_once($this->plgDir . '/EzTran.php');
554
+ $this->ezTran = new EzTran($this->plgFile, "{$this->name}{$this->strPro}", $this->domain);
555
+ $this->ezTran->setLang();
556
  }
557
 
558
  function __destruct() {
579
  $this->ezOptions['kill_rating'] = new EzBaseOption('hidden', 'kill_rating');
580
 
581
  $o = new EzCheckBox('kill_author');
582
+ $o->title = __('If you find the author links and ads on the plugin admin page distracting or annoying, you can suppress them by checking this box. Please remember to save your options after checking.', 'easy-common');
583
+ $o->desc = __('Kill author links on the admin page?', 'easy-common');
584
  $o->before = "<br /><b>";
585
  $o->after = "</b><br />";
586
  $this->ezOptions['kill_author'] = clone $o;
698
  }
699
 
700
  function mkEzAdmin() {
701
+ require($this->plgDir . '/myPlugins.php');
702
  $slug = $this->slug;
703
  $plg = $this->myPlugins[$slug];
704
  $plgURL = $this->plgURL;
EzTran.php CHANGED
@@ -42,7 +42,7 @@ if (!class_exists("PO")) {
42
  // Returns a properly escaped string
43
  static function decorate($str, $esc) {
44
  if (!get_magic_quotes_gpc()) {
45
- $str = addcslashes($str, $esc);
46
  }
47
  return $str;
48
  }
@@ -153,44 +153,23 @@ if (!class_exists("EzTran")) {
153
  // target is the language target for the translation. defaults to locale.
154
 
155
  var $status, $error, $plgName, $plgDir, $plgURL, $domain, $locale, $state,
156
- $isEmbedded = true, $isPro = false, $target, $POs;
157
  var $adminMsg;
158
  var $helpers = array();
159
  var $sessionVars = array('POs', 'ezt-locale', 'ezt-target');
160
 
161
  function __construct($plgFile, $plgName, $domain = '') {
162
- if (!empty($_POST['ezt-savePot'])) {
163
- // saving cannot be done from handleSubmits
164
- // because it would be too late for the headers.
165
- $target = $_POST['ezt-target'];
166
- $file = "{$target}.po";
167
- $potArray = unserialize(gzinflate(base64_decode($_POST['potArray'])));
168
- header('Content-Description: File Transfer');
169
- header('Content-Disposition: attachment; filename="' . $file . '"');
170
- header("Content-Transfer-Encoding: ascii");
171
- header('Expires: 0');
172
- header('Pragma: no-cache');
173
- ob_start();
174
- foreach ($potArray as $domain => $str) {
175
- $filePO = "{$target}_$domain.po";
176
- echo "\n# Begin $filePO\n";
177
- print htmlspecialchars_decode($str, ENT_QUOTES);
178
- echo "# End $filePO\n\n";
179
- }
180
- ob_end_flush();
181
- $this->status .= '<div class="updated">Pot file: ' . $file . ' was saved.</div> ';
182
- exit(0);
183
- }
184
  $this->status = '';
185
  $this->error = '';
186
  if (empty($plgName)) {
187
  $plgName = basename($plgFile, '.php');
188
- $plgName = ucfirst(strtr('-_', ' ', $plgName));
189
  }
190
  $this->plgName = $plgName;
 
 
191
  if (empty($domain)) {
192
- $domain = strtolower(strtr(' !.,', '----', $plgName));
193
- $domain = str_replace("--", "-", $domain);
194
  }
195
  $this->domain = $domain;
196
  $this->plgDir = dirname($plgFile);
@@ -201,6 +180,54 @@ if (!class_exists("EzTran")) {
201
  if (!session_id()) {
202
  session_start();
203
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  }
205
 
206
  function EzTran($plgFile, $plgName = '', $domain = '') {
@@ -263,7 +290,6 @@ if (!class_exists("EzTran")) {
263
  }
264
  }
265
 
266
- // Get translatable strings (keys) and text-domains from content
267
  static function getStrings($contents, &$keys, &$domains) {
268
  $matches = array();
269
  $regExp = "#_[_e]\s*\([\'\"](.*)[\'\"]\s*(,\s*[\'\"](.+)[\'\"]|)\s*\)#U";
@@ -280,7 +306,6 @@ if (!class_exists("EzTran")) {
280
  $keys = str_replace(array("\'", '\"', '\n'), array("'", '"', "\n"), $keys);
281
  }
282
 
283
- // Get the strings that look like translation keys
284
  function getTranPOs(&$contents) {
285
  $keys = $domains = array();
286
  self::getStrings($contents, $keys, $domains);
@@ -304,7 +329,7 @@ if (!class_exists("EzTran")) {
304
  }
305
  $po = new PO($k, $t);
306
  $po->num = $n;
307
- if ($this->isEmbedded || $this->isPro) {
308
  $po->tl = $tl;
309
  }
310
  $po->domain = $domains[$n];
@@ -342,9 +367,14 @@ EOF;
342
  if (empty($pot[$po->domain])) {
343
  $pot[$po->domain] = $potHead;
344
  }
345
- $pot[$po->domain] .= "msgid " . '"' . PO::decorate($po->id, "\n\r\"") . '"' . "\n";
346
- $t = $msg[$po->num];
347
- $pot[$po->domain] .= "msgstr " . '"' . PO::decorate($t, "\n\r") . '"' . "\n\n";
 
 
 
 
 
348
  }
349
  return $pot;
350
  }
@@ -619,10 +649,17 @@ EOF;
619
  }
620
  }
621
  $tip = "This plugin caches your inputs so that you restart from where you left off. If you would like to discard the cache and start from scratch, please click this button.";
 
 
 
 
 
 
622
  $makeStr = '<div class="submit">
623
  <input type="submit" name="ezt-make" value="Display &amp; Save POT File" title="Make a POT file with the translation strings below and display it" />&nbsp;
624
- <input type="submit" name="ezt-clear" value="Reload Translation" title="Discard your changes and reload the translation" onmouseover = "Tip(\'' . $tip . '\',WIDTH, 300)" onmouseout="UnTip()" onclick="return confirm(\'Are you sure you want to discard your changes?\nThe page will take a few minutes to reload because we will be querying Google for translations for each translatable string in the plugin files.\nPlease be patient.\');" />&nbsp;
625
- </div>' . $this->status . $this->error;
 
626
  $saveStr = '<div class="submit">
627
  <input type="submit" name="ezt-savePot" value="Save POT file" title="Saves the strings shown below to your PC as a POT file" />&nbsp;
628
  <input type="submit" name="ezt-mailPot" value="Mail POT file" title="Email the translation to the plugin autor" onClick="return confirm(\'Are you sure you want to email the author?\');" />&nbsp;
@@ -634,6 +671,8 @@ EOF;
634
  $b64 = base64_encode(gzdeflate(serialize($potArray)));
635
  echo '<input type="hidden" name="potArray" value="' . $b64 . '" />';
636
  echo '<input type="hidden" name="locale" value="' . $this->locale . '" />';
 
 
637
  if (!$this->isEmbedded) {
638
  $mail = "<br /><span style='width:15%;float:left;'>Plugin Author:</span><input type='text' style='width: 30%' name='ezt-author' value='' /><br />\n";
639
  $mail .= "<span style='width:15%;float:left'>Author's Email:</span><input type='text' style='width: 30%' name='ezt-authormail' value='' />\n<br />";
@@ -662,7 +701,8 @@ EOF1;
662
  function getInvite() {
663
  $locale = $this->locale;
664
  $plgName = $this->plgName;
665
- $patience = "I will include your translation in the next release.<br /><br /><span style=\"color:red;font-weight:bold\">Please note that the page may take a while to load because the plugin will query Google Translator for each string. Please be patient!</span>";
 
666
  if ($this->state == "Not Translated") {
667
  $tip = htmlentities("It is easy to have <b>$plgName</b> in your language. All you have to do is to translate some strings, and email the file to the author.<br /><br />If you would like to help, please use the translation interface. It picks up the translatable strings in <b>$plgName</b> and presents them (and their existing translations in <b>$locale</b>, if any) in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. $patience");
668
  $invite = "<span style='color:red'> Would you like to see <b>$plgName</b> in your langugage (<b>$locale</b>)?&nbsp; <input type='submit' name='ezt-translate' onmouseover=\"Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Please help translate ' /></span>";
@@ -756,12 +796,20 @@ EOF1;
756
  }
757
  $langOptions .= "<option value='$k' $selected>$v</option>\n";
758
  }
759
- $invite = "If you speak another language, please help translate this plugin. Select a language: <select name='ezt-createpo'>$langOptions</select>&nbsp; <input type='submit' name='ezt-translate' onmouseover=\"Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Please help translate ' />";
 
 
 
 
760
  }
761
  else {
762
- $tip = htmlentities("If you would like to improve this translation, please use the translation interface. It picks up the translatable strings in <b>$plgName</b> and presents them and their existing translations in <b>$locale</b> in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. Slick, isn\'t it? $patience");
763
- $invite = "<span style='color:red'> Would you like to improve this translation of <b>$plgName</b> in your langugage (<b>$locale</b>)?  <input type='submit' name='ezt-translate' onmouseover=\'Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\' onmouseout=\'UnTip()\' value='Improve $locale translation' /></span>";
 
 
 
764
  }
 
765
  return $invite;
766
  }
767
 
@@ -852,7 +900,7 @@ EOF1;
852
  }
853
  else if ($this->state != "English") {
854
  echo "<br />";
855
- $plgName = strtr(' ', '-', str_replace(' pro', '', strtolower($this->plgName)));
856
  echo "<script type='text/javascript'>
857
  <!--
858
  function hideTranslator(id, btn, translator) {
@@ -918,3 +966,224 @@ function googleTranslateElementInit() {
918
 
919
  }
920
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  // Returns a properly escaped string
43
  static function decorate($str, $esc) {
44
  if (!get_magic_quotes_gpc()) {
45
+ // $str = addcslashes($str, $esc);
46
  }
47
  return $str;
48
  }
153
  // target is the language target for the translation. defaults to locale.
154
 
155
  var $status, $error, $plgName, $plgDir, $plgURL, $domain, $locale, $state,
156
+ $isEmbedded = true, $isPro = false, $target, $POs, $slug;
157
  var $adminMsg;
158
  var $helpers = array();
159
  var $sessionVars = array('POs', 'ezt-locale', 'ezt-target');
160
 
161
  function __construct($plgFile, $plgName, $domain = '') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  $this->status = '';
163
  $this->error = '';
164
  if (empty($plgName)) {
165
  $plgName = basename($plgFile, '.php');
166
+ $plgName = ucfirst(strtr($plgName, '-_', ' '));
167
  }
168
  $this->plgName = $plgName;
169
+ $this->slug = strtolower(strtr($plgName, ' !.,', '----'));
170
+ $this->slug = str_replace("--", "-", $this->slug);
171
  if (empty($domain)) {
172
+ $domain = $this->slug;
 
173
  }
174
  $this->domain = $domain;
175
  $this->plgDir = dirname($plgFile);
180
  if (!session_id()) {
181
  session_start();
182
  }
183
+ if (!empty($_POST['ezt-savePot']) || !empty($_POST['ezt-download'])) {
184
+ // saving cannot be done from handleSubmits
185
+ // because it would be too late for the headers.
186
+ $slug = $_POST['ezt-slug'];
187
+ if ($slug == $this->slug) {
188
+ if (!empty($_POST['ezt-savePot'])) {
189
+ $target = $_POST['ezt-target'];
190
+ $file = "$slug-$target.zip";
191
+ $potArray = unserialize(gzinflate(base64_decode($_POST['potArray'])));
192
+ $poName = $target;
193
+ }
194
+ if (!empty($_POST['ezt-download'])) {
195
+ require_once(ABSPATH . WPINC . '/pluggable.php');
196
+ global $current_user;
197
+ get_currentuserinfo();
198
+ $msg = array();
199
+ $msg['name'] = $current_user->user_firstname . " " .
200
+ $current_user->user_lastname;
201
+ $msg['email'] = $current_user->user_email;
202
+ $msg['blog'] = get_bloginfo('blog');
203
+ $msg['url'] = get_bloginfo('url');
204
+ $msg['charset'] = get_bloginfo('charset');
205
+ $msg['locale'] = $this->locale;
206
+ $msg['ezt-target'] = "POT File";
207
+ $file = "$slug.zip";
208
+ $s = $this->getFileContents();
209
+ $POs = $this->getTranPOs($s);
210
+ $potArray = $this->mkPotStr($POs, $msg);
211
+ $poName = $slug;
212
+ }
213
+ $zip = new ZipStream($file);
214
+ foreach ($potArray as $d => $str) {
215
+ if (empty($d)) { // skip strings with no domain -- they are WP core ones
216
+ continue;
217
+ }
218
+ if ($d == $slug) {
219
+ $filePO = "{$poName}.po";
220
+ }
221
+ else { // d should be 'easy-common'
222
+ $filePO = "{$poName}_$d.po";
223
+ }
224
+ $zip->add_file($filePO, $str);
225
+ }
226
+ $zip->finish();
227
+ $this->status .= '<div class="updated">Pot file: ' . $file . ' was saved.</div> ';
228
+ exit(0);
229
+ }
230
+ }
231
  }
232
 
233
  function EzTran($plgFile, $plgName = '', $domain = '') {
290
  }
291
  }
292
 
 
293
  static function getStrings($contents, &$keys, &$domains) {
294
  $matches = array();
295
  $regExp = "#_[_e]\s*\([\'\"](.*)[\'\"]\s*(,\s*[\'\"](.+)[\'\"]|)\s*\)#U";
306
  $keys = str_replace(array("\'", '\"', '\n'), array("'", '"', "\n"), $keys);
307
  }
308
 
 
309
  function getTranPOs(&$contents) {
310
  $keys = $domains = array();
311
  self::getStrings($contents, $keys, $domains);
329
  }
330
  $po = new PO($k, $t);
331
  $po->num = $n;
332
+ if (isset($_POST['ezt-google']) && ($this->isEmbedded || $this->isPro)) {
333
  $po->tl = $tl;
334
  }
335
  $po->domain = $domains[$n];
367
  if (empty($pot[$po->domain])) {
368
  $pot[$po->domain] = $potHead;
369
  }
370
+ $pot[$po->domain] .= 'msgid "' . PO::decorate($po->id, "\n\r\"") . "\"\n";
371
+ if (empty($msg[$po->num])) {
372
+ $t = '';
373
+ }
374
+ else {
375
+ $t = $msg[$po->num];
376
+ }
377
+ $pot[$po->domain] .= 'msgstr "' . PO::decorate($t, "\n\r") . "\"\n\n";
378
  }
379
  return $pot;
380
  }
649
  }
650
  }
651
  $tip = "This plugin caches your inputs so that you restart from where you left off. If you would like to discard the cache and start from scratch, please click this button.";
652
+ if ($this->isEmbedded || $this->isPro) {
653
+ $useGoogle = "&nbsp;<span onmouseover=\"Tip('By default, the translator will query Google Translator for each string it cannot find a translation of. This may take a few minutes. If you would rather not wait, please uncheck this option.', WIDTH, 350, TITLE, 'Query Google?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\"><input type='checkbox' name='ezt-google' checked='checked' />&nbsp;Use Google? </span>&nbsp;";
654
+ }
655
+ else {
656
+ $useGoogle = '';
657
+ }
658
  $makeStr = '<div class="submit">
659
  <input type="submit" name="ezt-make" value="Display &amp; Save POT File" title="Make a POT file with the translation strings below and display it" />&nbsp;
660
+ <input type="submit" name="ezt-clear" value="Reload Translation" title="Discard your changes and reload the translation" onmouseover = "Tip(\'' . $tip . '\',WIDTH, 300)" onmouseout="UnTip()" onclick="return confirm(\'Are you sure you want to discard your changes?\nThe page may take a few minutes to reload because we may be querying Google for translations for each translatable string in the plugin files.\nPlease be patient or uncheck the Use Google option, if available.\');" />&nbsp;'
661
+ . $useGoogle .
662
+ '</div>' . $this->status . $this->error;
663
  $saveStr = '<div class="submit">
664
  <input type="submit" name="ezt-savePot" value="Save POT file" title="Saves the strings shown below to your PC as a POT file" />&nbsp;
665
  <input type="submit" name="ezt-mailPot" value="Mail POT file" title="Email the translation to the plugin autor" onClick="return confirm(\'Are you sure you want to email the author?\');" />&nbsp;
671
  $b64 = base64_encode(gzdeflate(serialize($potArray)));
672
  echo '<input type="hidden" name="potArray" value="' . $b64 . '" />';
673
  echo '<input type="hidden" name="locale" value="' . $this->locale . '" />';
674
+ echo '<input type="hidden" name="ezt-target" value="' . $this->target . '" />';
675
+ echo '<input type="hidden" name="ezt-slug" value="' . $this->slug . '" />';
676
  if (!$this->isEmbedded) {
677
  $mail = "<br /><span style='width:15%;float:left;'>Plugin Author:</span><input type='text' style='width: 30%' name='ezt-author' value='' /><br />\n";
678
  $mail .= "<span style='width:15%;float:left'>Author's Email:</span><input type='text' style='width: 30%' name='ezt-authormail' value='' />\n<br />";
701
  function getInvite() {
702
  $locale = $this->locale;
703
  $plgName = $this->plgName;
704
+ $patience = "I will include your translation in the next release.<br /><br /><span style=\"color:red;font-weight:bold\">Please note that the page may take a while to load because the plugin will query Google Translator for each string. Please be patient! You can make it faster by unchecking the Use Google option.</span>";
705
+ $tipPot = htmlentities("If you would like to use your own tools to translate (such as <code>poedit</code>), please download the POT file here. Once done with the translation, please send the po file to the plugin author: <code>manoj at thulasidas dot com</code>");
706
  if ($this->state == "Not Translated") {
707
  $tip = htmlentities("It is easy to have <b>$plgName</b> in your language. All you have to do is to translate some strings, and email the file to the author.<br /><br />If you would like to help, please use the translation interface. It picks up the translatable strings in <b>$plgName</b> and presents them (and their existing translations in <b>$locale</b>, if any) in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. $patience");
708
  $invite = "<span style='color:red'> Would you like to see <b>$plgName</b> in your langugage (<b>$locale</b>)?&nbsp; <input type='submit' name='ezt-translate' onmouseover=\"Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Please help translate ' /></span>";
796
  }
797
  $langOptions .= "<option value='$k' $selected>$v</option>\n";
798
  }
799
+ $invite = "If you speak another language, please help translate this plugin. You can either use our web interface or download the POT files.<br />"
800
+ . "Select a language: <select name='ezt-createpo'>$langOptions</select>&nbsp;"
801
+ . "&nbsp;<span onmouseover=\"Tip('By default, the translator will query Google Translator for each string it cannot find a translation of. This may take a few minutes. If you would rather not wait, please uncheck this option.', WIDTH, 350, TITLE, 'Query Google?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\"><input type='checkbox' name='ezt-google' checked='checked' />&nbsp;Use Google? </span>&nbsp;"
802
+ . "&nbsp;<input type='submit' name='ezt-translate' onmouseover=\"Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Use Web Interface'/> &nbsp;"
803
+ . "&nbsp;<input type='submit' name='ezt-download' onmouseover=\"Tip('$tipPot', WIDTH, 350, TITLE, 'How to Use POT files?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Download POT files'/> ";
804
  }
805
  else {
806
+ $tip = htmlentities("If you would like to improve this translation, please use the translation interface. It picks up the translatable strings in <b>$plgName</b> and presents them and their existing translations in <b>$locale</b> in an easy-to-edit form. You can then generate a translation file and email it to the author all from the same form. $patience");
807
+ $invite = "<span style='color:red'> Would you like to improve this translation of <b>$plgName</b> in your langugage (<b>$locale</b>)?</span><br />"
808
+ . "&nbsp;<span onmouseover=\"Tip('By default, the translator will query Google Translator for each string it cannot find a translation of. This may take a few minutes. If you would rather not wait, please uncheck this option.', WIDTH, 350, TITLE, 'Query Google?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\"><input type='checkbox' name='ezt-google' checked='checked' />&nbsp;Use Google? </span>&nbsp;"
809
+ . "&nbsp;<input type='submit' name='ezt-translate' onmouseover=\"Tip('$tip', WIDTH, 350, TITLE, 'How to Translate?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value='Improve $locale translation' />&nbsp;"
810
+ . "&nbsp;<input type='submit' name='ezt-download' onmouseover=\"Tip('$tipPot', WIDTH, 350, TITLE, 'How to Use POT files?', STICKY, 1, CLOSEBTN, true, CLICKCLOSE, true, FIX, [this, 0, 5])\" onmouseout=\"UnTip()\" value ='Download POT files'/> ";
811
  }
812
+ $invite .= '<input type="hidden" name="ezt-slug" value="' . $this->slug . '" />';
813
  return $invite;
814
  }
815
 
900
  }
901
  else if ($this->state != "English") {
902
  echo "<br />";
903
+ $plgName = strtr(str_replace(' pro', '', strtolower($this->plgName)), ' ', '-');
904
  echo "<script type='text/javascript'>
905
  <!--
906
  function hideTranslator(id, btn, translator) {
966
 
967
  }
968
 
969
+ if (!class_exists('ZipStream')) {
970
+ ##########################################################################
971
+ # ZipStream - Streamed, dynamically generated zip archives. #
972
+ # by Paul Duncan <pabs@pablotron.org> #
973
+ # #
974
+ # Copyright (C) 2007-2009 Paul Duncan <pabs@pablotron.org> #
975
+ # #
976
+ # Permission is hereby granted, free of charge, to any person obtaining #
977
+ # a copy of this software and associated documentation files (the #
978
+ # "Software"), to deal in the Software without restriction, including #
979
+ # without limitation the rights to use, copy, modify, merge, publish, #
980
+ # distribute, sublicense, and/or sell copies of the Software, and to #
981
+ # permit persons to whom the Software is furnished to do so, subject to #
982
+ # the following conditions: #
983
+ # #
984
+ # The above copyright notice and this permission notice shall be #
985
+ # included in all copies or substantial portions of the of the Software. #
986
+ # #
987
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, #
988
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #
989
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. #
990
+ # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR #
991
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, #
992
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR #
993
+ # OTHER DEALINGS IN THE SOFTWARE. #
994
+ ##########################################################################
995
+
996
+ class ZipStream {
997
+
998
+ const VERSION = '0.2.2';
999
+
1000
+ var $opt = array(), $files = array(), $cdr_ofs = 0, $ofs = 0;
1001
+
1002
+ function __construct($name = null, $opt = array()) {
1003
+ $this->opt = $opt;
1004
+ if (empty($this->opt['large_file_size'])) {
1005
+ $this->opt['large_file_size'] = 20 * 1024 * 1024;
1006
+ }
1007
+ if (empty($this->opt['large_file_method'])) {
1008
+ $this->opt['large_file_method'] = 'store';
1009
+ }
1010
+ $this->output_name = $name;
1011
+ if ($name || $opt['send_http_headers']) {
1012
+ $this->need_headers = true;
1013
+ }
1014
+ }
1015
+
1016
+ function add_file($name, $data, $opt = array()) {
1017
+ $zdata = gzdeflate($data);
1018
+ $crc = crc32($data);
1019
+ $zlen = strlen($zdata);
1020
+ $len = strlen($data);
1021
+ $meth = 0x08;
1022
+ $this->add_file_header($name, $opt, $meth, $crc, $zlen, $len);
1023
+ $this->send($zdata);
1024
+ }
1025
+
1026
+ function add_file_from_path($name, $path, $opt = array()) {
1027
+ if ($this->is_large_file($path)) {
1028
+ $this->add_large_file($name, $path, $opt);
1029
+ }
1030
+ else {
1031
+ $data = file_get_contents($path);
1032
+ $this->add_file($name, $data, $opt);
1033
+ }
1034
+ }
1035
+
1036
+ function finish() {
1037
+ $this->add_cdr($this->opt);
1038
+ $this->clear();
1039
+ }
1040
+
1041
+ private function add_file_header($name, $opt, $meth, $crc, $zlen, $len) {
1042
+ $name = preg_replace('/^\\/+/', '', $name);
1043
+ $nlen = strlen($name);
1044
+ if (empty($opt['time'])) {
1045
+ $opt['time'] = time();
1046
+ }
1047
+ $dts = $this->dostime($opt['time']);
1048
+ $fields = array(array('V', 0x04034b50), array('v', (6 << 8) + 3), array('v', 0x00), array('v', $meth), array('V', $dts), array('V', $crc), array('V', $zlen), array('V', $len), array('v', $nlen), array('v', 0),);
1049
+ $ret = $this->pack_fields($fields);
1050
+ $cdr_len = strlen($ret) + $nlen + $zlen;
1051
+ $this->send($ret . $name);
1052
+ $this->add_to_cdr($name, $opt, $meth, $crc, $zlen, $len, $cdr_len);
1053
+ }
1054
+
1055
+ private function add_large_file($name, $path, $opt = array()) {
1056
+ $st = stat($path);
1057
+ $block_size = 1048576;
1058
+ $algo = 'crc32b';
1059
+ $zlen = $len = $st['size'];
1060
+ $meth_str = $this->opt['large_file_method'];
1061
+ if ($meth_str == 'store') {
1062
+ $meth = 0x00;
1063
+ $crc = unpack('V', hash_file($algo, $path, true));
1064
+ $crc = $crc[1];
1065
+ }
1066
+ elseif ($meth_str == 'deflate') {
1067
+ $meth = 0x08;
1068
+ $fh = fopen($path, 'rb');
1069
+ $hash_ctx = hash_init($algo);
1070
+ $zlen = 0;
1071
+ while ($data = fgets($fh, $block_size)) {
1072
+ hash_update($hash_ctx, $data);
1073
+ $data = gzdeflate($data);
1074
+ $zlen += strlen($data);
1075
+ } fclose($fh);
1076
+ $crc = unpack('V', hash_final($hash_ctx, true));
1077
+ $crc = $crc[1];
1078
+ }
1079
+ else {
1080
+ die("unknown large_file_method: $meth_str");
1081
+ } $this->add_file_header($name, $opt, $meth, $crc, $zlen, $len);
1082
+ $fh = fopen($path, 'rb');
1083
+ while ($data = fgets($fh, $block_size)) {
1084
+ if ($meth_str == 'deflate') {
1085
+ $data = gzdeflate($data);
1086
+ }
1087
+ $this->send($data);
1088
+ } fclose($fh);
1089
+ }
1090
+
1091
+ function is_large_file($path) {
1092
+ $st = stat($path);
1093
+ return ($this->opt['large_file_size'] > 0) && ($st['size'] > $this->opt['large_file_size']);
1094
+ }
1095
+
1096
+ private function add_to_cdr($name, $opt, $meth, $crc, $zlen, $len, $rec_len) {
1097
+ $this->files[] = array($name, $opt, $meth, $crc, $zlen, $len, $this->ofs);
1098
+ $this->ofs += $rec_len;
1099
+ }
1100
+
1101
+ private function add_cdr_file($args) {
1102
+ list ($name, $opt, $meth, $crc, $zlen, $len, $ofs) = $args;
1103
+ if (empty($opt['comment'])) {
1104
+ $comment = '';
1105
+ }
1106
+ else {
1107
+ $comment = $opt['comment'];
1108
+ }
1109
+ $dts = $this->dostime($opt['time']);
1110
+ $fields = array(array('V', 0x02014b50), array('v', (6 << 8) + 3), array('v', (6 << 8) + 3), array('v', 0x00), array('v', $meth), array('V', $dts), array('V', $crc), array('V', $zlen), array('V', $len), array('v', strlen($name)), array('v', 0), array('v', strlen($comment)), array('v', 0), array('v', 0), array('V', 32), array('V', $ofs),);
1111
+ $ret = $this->pack_fields($fields) . $name . $comment;
1112
+ $this->send($ret);
1113
+ $this->cdr_ofs += strlen($ret);
1114
+ }
1115
+
1116
+ private function add_cdr_eof($opt = null) {
1117
+ $num = count($this->files);
1118
+ $cdr_len = $this->cdr_ofs;
1119
+ $cdr_ofs = $this->ofs;
1120
+ $comment = '';
1121
+ if (!empty($opt) && !empty($opt['comment'])) {
1122
+ $comment = $opt['comment'];
1123
+ }
1124
+ $fields = array(array('V', 0x06054b50), array('v', 0x00), array('v', 0x00), array('v', $num), array('v', $num), array('V', $cdr_len), array('V', $cdr_ofs), array('v', strlen($comment)),);
1125
+ $ret = $this->pack_fields($fields) . $comment;
1126
+ $this->send($ret);
1127
+ }
1128
+
1129
+ private function add_cdr($opt = null) {
1130
+ foreach ($this->files as $file) {
1131
+ $this->add_cdr_file($file);
1132
+ }
1133
+ $this->add_cdr_eof($opt);
1134
+ }
1135
+
1136
+ function clear() {
1137
+ $this->files = array();
1138
+ $this->ofs = 0;
1139
+ $this->cdr_ofs = 0;
1140
+ $this->opt = array();
1141
+ }
1142
+
1143
+ private function send_http_headers() {
1144
+ $opt = $this->opt;
1145
+ $content_type = 'application/x-zip';
1146
+ if (!empty($opt['content_type'])) {
1147
+ $content_type = $this->opt['content_type'];
1148
+ }
1149
+ $disposition = 'attachment';
1150
+ if (!empty($opt['content_disposition'])) {
1151
+ $disposition = $opt['content_disposition'];
1152
+ }
1153
+ if ($this->output_name) {
1154
+ $disposition .= "; filename=\"{$this->output_name}\"";
1155
+ }
1156
+ $headers = array('Content-Type' => $content_type, 'Content-Disposition' => $disposition, 'Pragma' => 'public', 'Cache-Control' => 'public, must-revalidate', 'Content-Transfer-Encoding' => 'binary',);
1157
+ foreach ($headers as $key => $val) {
1158
+ header("$key: $val");
1159
+ }
1160
+ }
1161
+
1162
+ private function send($str) {
1163
+ if ($this->need_headers) {
1164
+ $this->send_http_headers();
1165
+ }
1166
+ $this->need_headers = false;
1167
+ echo $str;
1168
+ }
1169
+
1170
+ function dostime($when = 0) {
1171
+ $d = getdate($when);
1172
+ if ($d['year'] < 1980) {
1173
+ $d = array('year' => 1980, 'mon' => 1, 'mday' => 1, 'hours' => 0, 'minutes' => 0, 'seconds' => 0);
1174
+ } $d['year'] -= 1980;
1175
+ return ($d['year'] << 25) | ($d['mon'] << 21) | ($d['mday'] << 16) | ($d['hours'] << 11) | ($d['minutes'] << 5) | ($d['seconds'] >> 1);
1176
+ }
1177
+
1178
+ function pack_fields($fields) {
1179
+ list ($fmt, $args) = array('', array());
1180
+ foreach ($fields as $field) {
1181
+ $fmt .= $field[0];
1182
+ $args[] = $field[1];
1183
+ } array_unshift($args, $fmt);
1184
+ return call_user_func_array('pack', $args);
1185
+ }
1186
+
1187
+ }
1188
+
1189
+ }
easy-adsense-lite.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Easy AdSense
5
  Plugin URI: http://www.thulasidas.com/adsense
6
  Description: Easiest way to show AdSense and make money from your blog. Configure it at <a href="options-general.php?page=easy-adsense-lite.php">Settings &rarr; Easy AdSense</a>.
7
- Version: 7.20
8
  Author: Manoj Thulasidas
9
  Author URI: http://www.thulasidas.com
10
  */
@@ -27,8 +27,10 @@
27
  */
28
 
29
  if (class_exists("EzAdSensePro")) {
30
- $msg = sprintf(__("<strong><em>%s Pro</em></strong> seems to be active.<br />Please use the Pro version, or deactivate it before activating <strong><em>%s</em></strong>.", "easy-adsenser"), "Easy AdSense", "Easy AdSense");
31
- die($msg);
 
 
32
  }
33
 
34
  if (!class_exists("EzAdSense")) {
@@ -187,7 +189,7 @@ if (!class_exists("EzAdSense")) {
187
  $this->ezOptions['force_midad'] = clone $o;
188
 
189
  $o = new EzSelect('header_leadin');
190
- $o->title = __('Select where you would like to show the lead-in ad block. A placement above or below the blog header would be suitable for a wide AdSense block.', 'easy-adsenser') . __('<br />Note that <b>Below Header</b> and <b>End of Page</b> options are hacks that may not be compatible with the WordPress default widget for <b>Recent Posts</b> or anything else that may use DB queries or loops. If you have problems with your sidebars and/or font sizes, please choose some other <b>Postion</b> option.' . 'easy-adsenser');
191
  $o->desc = __('Position:', 'easy-adsenser');
192
  $o->style = "width:30%;";
193
  $o->addChoice('send_headers', 'send_headers', __('Above Header', 'easy-adsenser'));
4
  Plugin Name: Easy AdSense
5
  Plugin URI: http://www.thulasidas.com/adsense
6
  Description: Easiest way to show AdSense and make money from your blog. Configure it at <a href="options-general.php?page=easy-adsense-lite.php">Settings &rarr; Easy AdSense</a>.
7
+ Version: 7.21
8
  Author: Manoj Thulasidas
9
  Author URI: http://www.thulasidas.com
10
  */
27
  */
28
 
29
  if (class_exists("EzAdSensePro")) {
30
+ $plg = "Easy AdSense Lite";
31
+ $lite = plugin_basename(__FILE__);
32
+ include_once('ezDenyLite.php');
33
+ ezDenyLite($plg, $lite);
34
  }
35
 
36
  if (!class_exists("EzAdSense")) {
189
  $this->ezOptions['force_midad'] = clone $o;
190
 
191
  $o = new EzSelect('header_leadin');
192
+ $o->title = __('Select where you would like to show the lead-in ad block. A placement above or below the blog header would be suitable for a wide AdSense block.', 'easy-adsenser') . "<br />" . __('Note that <b>Below Header</b> and <b>End of Page</b> options are hacks that may not be compatible with the WordPress default widget for <b>Recent Posts</b> or anything else that may use DB queries or loops. If you have problems with your sidebars and/or font sizes, please choose some other <b>Postion</b> option.', 'easy-adsenser');
193
  $o->desc = __('Position:', 'easy-adsenser');
194
  $o->style = "width:30%;";
195
  $o->addChoice('send_headers', 'send_headers', __('Above Header', 'easy-adsenser'));
ezDenyLite.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU 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 (!function_exists("ezDenyLite")) {
21
+ if (!function_exists('is_plugin_active')) {
22
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
23
+ }
24
+
25
+ function ezDenyLite($plg, $lite) {
26
+ if (is_plugin_active($lite)) {
27
+ add_action('init', function() {
28
+ global $lite;
29
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
30
+ deactivate_plugins($lite);
31
+ });
32
+ printf("<div class='error'>" . __("%s: Another version of this plugin is active.<br />Please deactivate it before activating %s.", "easy-common") . "</div>", "<strong><em>$plg</em></strong>", "<strong><em>$plg</em></strong>");
33
+ add_action('admin_footer-plugins.php', function() {
34
+ global $plg;
35
+ printf('<script>document.getElementById("message").innerHTML="' . "<span style='font-weight:bold;font-size:1.1em;color:red'>" . $plg . ": " . __("Pro Plugin is activated. Lite version is deactivated.", "easy-common") . "</span>" . '";</script>');
36
+ });
37
+ }
38
+ }
39
+
40
+ }
head-text.php CHANGED
@@ -19,7 +19,10 @@
19
 
20
  echo '<td style="width:30%">';
21
 
22
- if (rand(0, 2) % 2 || $ez->slug == "easy-ads" || $ez->slug == "google-adsense") {
 
 
 
23
  $ez->renderSupportText();
24
  $ez->renderTipDivs();
25
  }
19
 
20
  echo '<td style="width:30%">';
21
 
22
+ if (rand(0, 2) % 2
23
+ || $ez->slug == "easy-ads"
24
+ || $ez->slug == "easy-chitika"
25
+ || $ez->slug == "google-adsense") {
26
  $ez->renderSupportText();
27
  $ez->renderTipDivs();
28
  }
lang/.DS_Store DELETED
Binary file
myPlugins.php CHANGED
@@ -3,10 +3,10 @@
3
  /*
4
  Copyright (C) 2008 www.ads-ez.com
5
 
6
- This program is free software; you can redistribute it and/or
7
- modify it under the terms of the GNU General Public License as
8
- published by the Free Software Foundation; either version 3 of the
9
- License, or (at 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
@@ -21,14 +21,28 @@ $myPlugins = array();
21
 
22
  $needPHP5 = ' <br /> <span style="font-color:#c00;">Note that this plugin requires PHPv5.0+. Please use the Lite version first to ensure that it works before buying the Pro version. If it does not work on your web host, consider the amazing <a href="http://buy.thulasidas.com/easy-adsense/" title="The most popular plugin to insert AdSense on your blog"><em><strong>Easy AdSense Pro</strong></em></a> for all your advertising needs. It can insert non-AdSense blocks as well.</span>';
23
 
24
- $myPlugins['ezpaypal-pro'] = array('value' => 'ezPayPal',
25
  'price' => '9.95',
26
  'share' => false,
27
  'long' => false,
28
  'blurb' => '<em><strong>ezPayPal Pro</strong></em> is the simplest possible way to sell your digital goods online. This standalone PHP package ',
29
  'desc' => 'helps you quickly set up an online store to sell any downloadable item, where your buyers can pay for it and get an automatic, expiring download link. [ezPayPal is a standalone PHP package, which runs independent of WordPress.]',
30
  'title' => 'Do you have an application, PHP package, photograph, PDF book (or any other downloadable item) to sell? Find the set up of a shopping cart system too overwhelming? <em>ezPayPal</em> may be the right solution for you.',
31
- 'pro' => 'The Pro version adds a whole slew of features: Data Security, Sandbox Mode, Template Editors, Automatic Handling of returns, refunds, e-chques etc, Sales Editor, Email Tools, Product Version support, Batch Product File Uploads, Data backup/restore/migration tools and so on. It can also be enhanced with optional modules like Affiliate Package, Reporting Tools etc. This powerful and professional package provides you with a complete and robust solution for your online business. <em><strong>ezPayPal Pro</strong></em> provides the most robust and feature-complete solution to sell your digital goods online. It helps you quickly set up an online store to sell any downloadable item, where your buyers can pay for it and get an automatic, expiring download link. The whole flow runs fully automated and designed to run unattended. <em><strong>ezPayPal</strong></em> manages all aspects of selling your digital goods.');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  $myPlugins['easy-ads'] = array('value' => 'Easy Ads',
34
  'price' => '8.95',
@@ -57,6 +71,15 @@ $myPlugins['google-adsense'] = array('value' => 'Google AdSense',
57
  'title' => '<a href="http://buy.thulasidas.com/plugins/google-adsense/" title="A new plugin to handle Google"><em><strong>Google AdSense</strong></em></a> gives you a specialized and intuitive interface to manage AdSense ads on your blog, with size selectors, widget options, color-picker to customize your colors, etc. It is a new generation plugin with a fancy, tabbed interface.',
58
  'pro' => 'The Lite version of <em><strong>Google AdSense</strong></em> is fully functional. But the Pro version gives you more features and control. In the Pro version, you get a filter to minimize the chance of your AdSense account getting banned. It uses a fast and effective keyword matching algorithm to examine the contents of each page on the fly and determines whether the page content could look offensive to Google. If so, it prevents your ads from appearing on those pages. And you can tweak the strength of the algorithm. The Pro version also lets you specify a list of computers where your ads will not be shown, in order to prevent accidental clicks on your own ads -- one of the main reasons AdSense bans you.' . $needPHP5);
59
 
 
 
 
 
 
 
 
 
 
60
  $myPlugins['easy-adsense'] = array('value' => 'Easy AdSense',
61
  'price' => '4.95',
62
  'share' => true,
@@ -111,6 +134,8 @@ $myPlugins['easy-quiz'] = array('value' => 'Easy Quiz',
111
  <li>Ability to tweak the quiz display colors.</li>
112
  <li>Color pickers for customization with live preview on the admin page.</li>');
113
 
 
 
114
  $myPlugins['easy-text-links'] = array('value' => 'Easy Text Links',
115
  'price' => '7.95',
116
  'share' => false,
@@ -124,6 +149,8 @@ $myPlugins['easy-text-links'] = array('value' => 'Easy Text Links',
124
  <li>Choice of several attractive Advertise Here images.</li>
125
  <li>Dedicated dedicated and multi-insertable widget for displaying your links.</li>');
126
 
 
 
127
  $myPlugins['easy-latex'] = array('value' => 'Easy WP LaTeX',
128
  'price' => '2.95',
129
  'share' => false,
@@ -142,7 +169,19 @@ $myPlugins['easy-translator'] = array('value' => 'Easy Translator',
142
  'blurb' => '<em><strong>Easy Translator</strong></em> ',
143
  'desc' => 'is a blog post translator and a plugin translation tool for authors and translators.',
144
  'title' => '<em><strong>Easy Translator</strong></em> is a plugin to translate other plugins as well as blog posts. For blog posts and pages, it provides a customizable widget to enable machine translation (from Google or Microsoft). For plugins, it picks up translatable strings (in _[_e]() functions) and presents them and their existing translations (from the MO object of the current text-domain, if loaded) in a user editable form. It can generate a valid PO file that can be emailed to the plugin author directly from the its window, streamlining your work.',
145
- 'pro' => 'The Lite version of Easy Translator is fully functional. The Pro version adds machine translation help from Google, the ability to email the generated PO file directly, without having to save it and attach it to a mail message, and color pickers to match the widget colors to your blog theme.');
 
 
 
 
 
 
 
 
 
 
 
 
146
 
147
  $myPlugins['unreal-universe'] = array('value' => 'The Unreal Universe - eBook',
148
  'url' => 'http://www.theunrealuniverse.com',
@@ -178,26 +217,4 @@ $myPlugins['iphoto-tagger'] = array('value' => 'iPhoto Tagger -- Helper for iPho
178
  'pro' => 'The Lite version of <em><strong>iPhoto Tagger</strong></em> is fully functional and makes the lists of the photos to be tagged. The Pro version adds the ability to automatically label those photos using Spotlight colors so that they stand out while browsing in Finder.',
179
  'kind' => 'app');
180
 
181
- $myPlugins['ezpaypal'] = array('value' => 'ezPayPal',
182
- 'price' => '4.95',
183
- 'share' => false,
184
- 'long' => true,
185
- 'hide' => true,
186
- 'blurb' => '<em><strong>ezPayPal</strong></em> is the simplest possible way to sell your digital goods online. Do you have an application, PHP package, photograph, PDF book (or any other downloadable item) to sell? Find the set up of a shopping cart system too overwhelming? <em>ezPayPal</em> may be the right solution for you. It ',
187
- 'desc' => 'gets you started with your online business. Easy and simple!',
188
- 'title' => '<em><strong>ezPayPal</strong></em> helps you quickly set up an online store to sell any downloadable item, where your buyers can pay for it and get an automatic, expiring download link. The whole flow is fully automated and designed to run unattended.',
189
- 'pro' => 'The Lite version of <em><strong>ezPayPal</strong></em> is fully functional. But the Pro version gives you more features and control. The Pro version has improved data security, sandbox mode, database backup and restore, security audit, data migration tools, template editor, email facilities, upgradeable products and so on. Please follow the more info link for details.',
190
- 'benefits' => '<li><em>Data Security</em>: The <em>Pro</em> version takes special measures to set up data verification links to ensure your sales data is safe and not susceptible to corruption. In technical terms, it checks for the existence of InnoDB in your MySQL installation, and uses it if found, setting up foreign keys to ensure referential integrity, and indices to guarantee performance. The Lite version uses the default MyISAM engine, fast and simple, but not exactly secure.</li>
191
- <li><em>Sandbox Mode</em>: In the <em>Pro</em> version, you have the option to choose PayPal sandbox mode so that you can check your setup before going live.</li>
192
- <li><em>DB Backup</em>: The <em>Pro</em> version has an option to generate a backup of your sales info to download to a safe location.</li>
193
- <li><em>DB Restore</em>: It also provides a means to restore (of course) a previously backed up data file, overwriting (or appending to, as you wish) the existing sales info.</li>
194
- <li><em>Security Audit</em>: The <em>Pro</em> version provides you with a tool to check your settings and installation for possible security issues.</li>
195
- <li><em>Data Migration</em>: Using this <em>Pro</em> tool, your database tables can be automatically upgraded to the later version without losing your sales info and other settings. You will also get sample PHP files that can be used to migrate your data from text files into the database.</li>
196
- <li><em>Template Editor</em>: The email body, thank you page and download display are all editable in the <em>Pro</em> version.</li>
197
- <li><em>Uninstall Support</em>: In the unlikely event that you want to stop using ezPayPal, this <em>Pro</em> tool can help you clean up your database by deleting all the tables created during ezPayPal installation.</li>
198
- <li><em>Additional Tools</em>: The <em>Pro</em> version also gives you a bunch of tools (php example files) that can help you migrate your existing sales data or product definitions.</li>
199
- <li><em>Email facilities</em>: You can select a number of your buyers to notify, for example, of a critical update of your products, or of a free upgrade opportunity.</li>
200
- <li><em>Upgradeable Products</em>: You can define products that are upgradeable. For instance, you can sell a short eBook at an introductory price. If your buyer likes it, he has the option of buying the full book by paying the difference.</li>
201
- ');
202
-
203
- $this->myPlugins = $myPlugins;
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
21
 
22
  $needPHP5 = ' <br /> <span style="font-color:#c00;">Note that this plugin requires PHPv5.0+. Please use the Lite version first to ensure that it works before buying the Pro version. If it does not work on your web host, consider the amazing <a href="http://buy.thulasidas.com/easy-adsense/" title="The most popular plugin to insert AdSense on your blog"><em><strong>Easy AdSense Pro</strong></em></a> for all your advertising needs. It can insert non-AdSense blocks as well.</span>';
23
 
24
+ $myPlugins['ezpaypal'] = array('value' => 'ezPayPal',
25
  'price' => '9.95',
26
  'share' => false,
27
  'long' => false,
28
  'blurb' => '<em><strong>ezPayPal Pro</strong></em> is the simplest possible way to sell your digital goods online. This standalone PHP package ',
29
  'desc' => 'helps you quickly set up an online store to sell any downloadable item, where your buyers can pay for it and get an automatic, expiring download link. [ezPayPal is a standalone PHP package, which runs independent of WordPress.]',
30
  'title' => 'Do you have an application, PHP package, photograph, PDF book (or any other downloadable item) to sell? Find the set up of a shopping cart system too overwhelming? <em>ezPayPal</em> may be the right solution for you.',
31
+ 'pro' => 'The Pro version adds a whole slew of features: Data Security, Sandbox Mode, Template Editors, Automatic Handling of returns, refunds, e-chques etc, Sales Editor, Email Tools, Product Version support, Batch Product File Uploads, Data backup/restore/migration tools and so on. It can also be enhanced with optional modules like Affiliate Package, Reporting Tools etc. This powerful and professional package provides you with a complete and robust solution for your online business. <em><strong>ezPayPal Pro</strong></em> provides the most robust and feature-complete solution to sell your digital goods online. It helps you quickly set up an online store to sell any downloadable item, where your buyers can pay for it and get an automatic, expiring download link. The whole flow runs fully automated and designed to run unattended. <em><strong>ezPayPal</strong></em> manages all aspects of selling your digital goods.',
32
+ 'benefits' => '<li><em>Data Security</em>: The <em>Pro</em> version takes special measures to set up data verification links to ensure your sales data is safe and not susceptible to corruption. In technical terms, it checks for the existence of InnoDB in your MySQL installation, and uses it if found, setting up foreign keys to ensure referential integrity, and indices to guarantee performance. The Lite version uses the default MyISAM engine, fast and simple, but not exactly secure.</li>
33
+ <li><em>Sandbox Mode</em>: In the <em>Pro</em> version, you have the option to choose PayPal sandbox mode so that you can check your setup before going live.</li>
34
+ <li><em>DB Backup</em>: The <em>Pro</em> version has an option to generate a backup of your sales info to download to a safe location.</li>
35
+ <li><em>DB Restore</em>: It also provides a means to restore (of course) a previously backed up data file, overwriting (or appending to, as you wish) the existing sales info.</li>
36
+ <li><em>Security Audit</em>: The <em>Pro</em> version provides you with a tool to check your settings and installation for possible security issues.</li>
37
+ <li><em>Data Migration</em>: Using this <em>Pro</em> tool, your database tables can be automatically upgraded to the later version without losing your sales info and other settings. You will also get sample PHP files that can be used to migrate your data from text files into the database.</li>
38
+ <li><em>Template Editor</em>: The email body, thank you page and download display are all editable in the <em>Pro</em> version.</li>
39
+ <li><em>Uninstall Support</em>: In the unlikely event that you want to stop using ezPayPal, this <em>Pro</em> tool can help you clean up your database by deleting all the tables created during ezPayPal installation.</li>
40
+ <li><em>Additional Tools</em>: The <em>Pro</em> version also gives you a bunch of tools (php example files) that can help you migrate your existing sales data or product definitions.</li>
41
+ <li><em>Email facilities</em>: You can select a number of your buyers to notify, for example, of a critical update of your products, or of a free upgrade opportunity.</li>
42
+ <li><em>Upgradeable Products</em>: You can define products that are upgradeable. For instance, you can sell a short eBook at an introductory price. If your buyer likes it, he has the option of buying the full book by paying the difference.</li>
43
+ <li>And more!</li>');
44
+
45
+ $myPlugins['ezpaypal-pro'] =$myPlugins['ezpaypal'] ;
46
 
47
  $myPlugins['easy-ads'] = array('value' => 'Easy Ads',
48
  'price' => '8.95',
71
  'title' => '<a href="http://buy.thulasidas.com/plugins/google-adsense/" title="A new plugin to handle Google"><em><strong>Google AdSense</strong></em></a> gives you a specialized and intuitive interface to manage AdSense ads on your blog, with size selectors, widget options, color-picker to customize your colors, etc. It is a new generation plugin with a fancy, tabbed interface.',
72
  'pro' => 'The Lite version of <em><strong>Google AdSense</strong></em> is fully functional. But the Pro version gives you more features and control. In the Pro version, you get a filter to minimize the chance of your AdSense account getting banned. It uses a fast and effective keyword matching algorithm to examine the contents of each page on the fly and determines whether the page content could look offensive to Google. If so, it prevents your ads from appearing on those pages. And you can tweak the strength of the algorithm. The Pro version also lets you specify a list of computers where your ads will not be shown, in order to prevent accidental clicks on your own ads -- one of the main reasons AdSense bans you.' . $needPHP5);
73
 
74
+ $myPlugins['easy-chitika'] = array('value' => 'Easy Chitika',
75
+ 'price' => '4.75',
76
+ 'share' => true,
77
+ 'long' => false,
78
+ 'blurb' => '<em><strong>Easy Chitika</strong></em> is a single-provider version of <em><strong>Easy Ads</strong></em> specialized for Chitika serving. If you are planning to use more than two providers, it may be easier and more economical to use <em><strong>Easy Ads</strong></em>. <em><strong>Easy Chitika</strong></em> ',
79
+ 'desc' => 'provides you with a fully streamlined interface to manage Chitika ads on your blog.',
80
+ 'title' => '<a href="http://buy.thulasidas.com/plugins/easy-chitika/" title="A new plugin to handle Chitika"><em><strong>Easy Chitika</strong></em></a> gives you a specialized and intuitive interface to manage Chitika ads on your blog, with size selectors, widget options, color-picker to customize your colors, etc. It is a new generation plugin with a fancy, tabbed interface.',
81
+ 'pro' => 'The Lite version of <em><strong>Easy Chitika</strong></em> is fully functional. But the Pro version gives you more features and control. In the Pro version, you get a filter to minimize the chance of your Chitka account getting banned. It uses a fast and effective keyword matching algorithm to examine the contents of each page on the fly and determines whether the page content could look offensive to Chitika. If so, it prevents your ads from appearing on those pages. And you can tweak the strength of the algorithm. The Pro version also lets you specify a list of computers where your ads will not be shown, in order to prevent accidental clicks on your own ads.' . $needPHP5);
82
+
83
  $myPlugins['easy-adsense'] = array('value' => 'Easy AdSense',
84
  'price' => '4.95',
85
  'share' => true,
134
  <li>Ability to tweak the quiz display colors.</li>
135
  <li>Color pickers for customization with live preview on the admin page.</li>');
136
 
137
+ $myPlugins['easy-quiz-pro'] = $myPlugins['easy-quiz'];
138
+
139
  $myPlugins['easy-text-links'] = array('value' => 'Easy Text Links',
140
  'price' => '7.95',
141
  'share' => false,
149
  <li>Choice of several attractive Advertise Here images.</li>
150
  <li>Dedicated dedicated and multi-insertable widget for displaying your links.</li>');
151
 
152
+ $myPlugins['easy-text-links-pro'] = $myPlugins['easy-text-links'];
153
+
154
  $myPlugins['easy-latex'] = array('value' => 'Easy WP LaTeX',
155
  'price' => '2.95',
156
  'share' => false,
169
  'blurb' => '<em><strong>Easy Translator</strong></em> ',
170
  'desc' => 'is a blog post translator and a plugin translation tool for authors and translators.',
171
  'title' => '<em><strong>Easy Translator</strong></em> is a plugin to translate other plugins as well as blog posts. For blog posts and pages, it provides a customizable widget to enable machine translation (from Google or Microsoft). For plugins, it picks up translatable strings (in _[_e]() functions) and presents them and their existing translations (from the MO object of the current text-domain, if loaded) in a user editable form. It can generate a valid PO file that can be emailed to the plugin author directly from the its window, streamlining your work.',
172
+ 'pro' => 'The Lite version of Easy Translator is fully functional. The Pro version adds machine translation help from Google, the ability to email the generated PO file directly, without having to save it and attach it to a mail message, and color pickers to match the widget colors to your blog theme.',
173
+ 'benefits' => '<li>Ability to mail translations to the plugin authors</li>
174
+ <li>Machine translation for strings that do not have human translations yet.</li>
175
+ <li>Blog page translation widget.</li>');
176
+
177
+ $myPlugins['blackjack'] = array('value' => 'Blackjack',
178
+ 'price' => '4.99',
179
+ 'share' => false,
180
+ 'long' => true,
181
+ 'blurb' => '<em><strong>Blackjack</strong></em> ',
182
+ 'desc' => 'shows a simple Blackjack game to your readers.',
183
+ 'title' => '<em><strong>Blackjack</strong></em> is a quick and easy plugin to present an attractive Blackjack game to your readers. It is based on HTML5/jQuery, and the whole game is played on the browser. Your server is gets no extra load, nor is anything stored in your database.',
184
+ 'pro' => 'The Lite version of Blackjack is fully functional. The Pro version adds color customization, strategy hints and other features related to simulation, winnings accumulation etc. It will also give you revenue generation opportunities by selling these additional features to your readers.');
185
 
186
  $myPlugins['unreal-universe'] = array('value' => 'The Unreal Universe - eBook',
187
  'url' => 'http://www.theunrealuniverse.com',
217
  'pro' => 'The Lite version of <em><strong>iPhoto Tagger</strong></em> is fully functional and makes the lists of the photos to be tagged. The Pro version adds the ability to automatically label those photos using Spotlight colors so that they stand out while browsing in Finder.',
218
  'kind' => 'app');
219
 
220
+ $this->myPlugins = $myPlugins;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://buy.thulasidas.com/easy-adsense
4
  Tags: adsense, google adsense, ads, advertising, easy adsense, google, adsense plugin
5
  Requires at least: 2.6
6
  Tested up to: 3.9
7
- Stable tag: 7.20
8
  License: GPL2 or later
9
 
10
  Easy AdSense manages all aspects of AdSense: insert ads into posts and sidebar, and add a Google Search box. Easiest and most complete AdSense Plugin!
@@ -42,7 +42,7 @@ Easy AdSense is the freely distributed version of a premium plugin. The [Pro ver
42
 
43
  == Upgrade Notice ==
44
 
45
- Some refactoring changes.
46
 
47
  == Screenshots ==
48
 
@@ -140,6 +140,7 @@ A big "Thank You" to all my translators. Easy AdSense V2.6+ sports an *Easy Tran
140
 
141
  == Change Log ==
142
 
 
143
  * V7.20: Some refactoring changes. [Apr 18, 2014]
144
  * V7.13: Bug fix. [Apr 10, 2014]
145
  * V7.12: Auto migrating options to current version if needed. [Apr 2, 2014]
4
  Tags: adsense, google adsense, ads, advertising, easy adsense, google, adsense plugin
5
  Requires at least: 2.6
6
  Tested up to: 3.9
7
+ Stable tag: 7.21
8
  License: GPL2 or later
9
 
10
  Easy AdSense manages all aspects of AdSense: insert ads into posts and sidebar, and add a Google Search box. Easiest and most complete AdSense Plugin!
42
 
43
  == Upgrade Notice ==
44
 
45
+ Further refactoring and internationalization changes.
46
 
47
  == Screenshots ==
48
 
140
 
141
  == Change Log ==
142
 
143
+ * V7.21: Further refactoring and internationalization changes. [May 6, 2014]
144
  * V7.20: Some refactoring changes. [Apr 18, 2014]
145
  * V7.13: Bug fix. [Apr 10, 2014]
146
  * V7.12: Auto migrating options to current version if needed. [Apr 2, 2014]