[44] | 1 | <?php
|
---|
| 2 | /*
|
---|
| 3 | Plugin Name: AdSense Now!
|
---|
| 4 | Plugin URI: http://www.thulasidas.com/adsense
|
---|
| 5 | Description: Get started with AdSense now, and make money from your blog. Configure it at <a href="options-general.php?page=adsense-now.php">Settings → AdSense Now!</a>, or use the "Settings" link on the right.
|
---|
| 6 | Version: 1.59
|
---|
| 7 | Author: Manoj Thulasidas
|
---|
| 8 | Author URI: http://www.thulasidas.com
|
---|
| 9 | */
|
---|
| 10 |
|
---|
| 11 | /*
|
---|
| 12 | Copyright (C) 2008 www.thulasidas.com
|
---|
| 13 |
|
---|
| 14 | This program is free software; you can redistribute it and/or modify
|
---|
| 15 | it under the terms of the GNU General Public License as published by
|
---|
| 16 | the Free Software Foundation; either version 3 of the License, or
|
---|
| 17 | (at your option) any later version.
|
---|
| 18 |
|
---|
| 19 | This program is distributed in the hope that it will be useful,
|
---|
| 20 | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
| 22 | GNU General Public License for more details.
|
---|
| 23 |
|
---|
| 24 | You should have received a copy of the GNU General Public License
|
---|
| 25 | along with this program. If not, see <http://www.gnu.org/licenses/>.
|
---|
| 26 | */
|
---|
| 27 |
|
---|
| 28 | if (!class_exists("adsNow")) {
|
---|
| 29 | class adsNow {
|
---|
| 30 | var $plugindir, $locale, $defaults ;
|
---|
| 31 | function adsNow() { //constructor
|
---|
| 32 | if (file_exists (dirname (__FILE__).'/defaults.php')){
|
---|
| 33 | include (dirname (__FILE__).'/defaults.php');
|
---|
| 34 | $this->defaults = unserialize(base64_decode($str)) ;
|
---|
| 35 | }
|
---|
| 36 | if (empty($this->defaults)) {
|
---|
| 37 | add_action('admin_notices', create_function('', 'if (substr( $_SERVER["PHP_SELF"], -11 ) == "plugins.php"|| $_GET["page"] == "adsense-now.php") echo \'<div class="error"><p><b><em>AdSense Now!</em></b>: Error locating or loading the defaults! Ensure <code>defaults.php</code> exists, or reinstall the plugin.</p></div>\';')) ;
|
---|
| 38 | }
|
---|
| 39 | }
|
---|
| 40 | function init() {
|
---|
| 41 | $this->getAdminOptions();
|
---|
| 42 | }
|
---|
| 43 | //Returns an array of admin options
|
---|
| 44 | function getAdminOptions($reset = false) {
|
---|
| 45 | $mThemeName = get_settings('stylesheet') ;
|
---|
| 46 | $mOptions = "adsNow" . $mThemeName ;
|
---|
| 47 | $this->plugindir = get_option('siteurl') . '/' . PLUGINDIR .
|
---|
| 48 | '/' . basename(dirname(__FILE__)) ;
|
---|
| 49 | $locale = get_locale();
|
---|
| 50 | $this->locale = $locale ;
|
---|
| 51 | if(!empty($this->locale) && $this->locale != 'en_US') {
|
---|
| 52 | $moFile = dirname(__FILE__) . '/lang/' . $this->locale . '/easy-adsenser.mo';
|
---|
| 53 | if(@file_exists($moFile) && is_readable($moFile))
|
---|
| 54 | load_textdomain('easy-adsenser', $moFile);
|
---|
| 55 | else {
|
---|
| 56 | // look for any other similar locale with the same first three characters
|
---|
| 57 | $foo = glob(dirname(__FILE__) . '/lang/' . substr($this->locale, 0, 2) .
|
---|
| 58 | '*/easy-adsenser.mo') ;
|
---|
| 59 | if (!empty($foo)>0) {
|
---|
| 60 | $moFile = $foo[0] ;
|
---|
| 61 | load_textdomain('easy-adsenser', $moFile);
|
---|
| 62 | $this->locale = basename(dirname($moFile)) ;
|
---|
| 63 | }
|
---|
| 64 | }
|
---|
| 65 | }
|
---|
| 66 | $adsNowAdminOptions =
|
---|
| 67 | array('info' => "<!-- AdSense Now V1.53 -->\n",
|
---|
| 68 | 'ad_text' => htmlspecialchars_decode($this->defaults['adNwText']),
|
---|
| 69 | 'show_leadin' => 'float:right',
|
---|
| 70 | 'show_midtext' => 'float:left',
|
---|
| 71 | 'show_leadout' => 'float:right',
|
---|
| 72 | 'mc' => 5,
|
---|
| 73 | 'kill_pages' => false,
|
---|
| 74 | 'kill_home' => false,
|
---|
| 75 | 'kill_attach' => false,
|
---|
| 76 | 'kill_front' => false,
|
---|
| 77 | 'kill_cat' => false,
|
---|
| 78 | 'kill_tag' => false,
|
---|
| 79 | 'kill_archive' => false);
|
---|
| 80 |
|
---|
| 81 | $adNwOptions = get_option($mOptions);
|
---|
| 82 | if (empty($adNwOptions)) {
|
---|
| 83 | // try loading the default from the pre 1.3 version, so as not to annoy
|
---|
| 84 | // the dudes who have already been using adNwsenser
|
---|
| 85 | $adminOptionsName = "adsNowAdminOptions";
|
---|
| 86 | $adNwOptions = get_option($adminOptionsName);
|
---|
| 87 | }
|
---|
| 88 | if (!empty($adNwOptions) && ! $reset) {
|
---|
| 89 | foreach ($adNwOptions as $key => $option)
|
---|
| 90 | $adsNowAdminOptions[$key] = $option;
|
---|
| 91 | }
|
---|
| 92 |
|
---|
| 93 | update_option($mOptions, $adsNowAdminOptions);
|
---|
| 94 | return $adsNowAdminOptions;
|
---|
| 95 | }
|
---|
| 96 | //Prints out the admin page
|
---|
| 97 | function printAdminPage() {
|
---|
| 98 | if (empty($this->defaults)) return ;
|
---|
| 99 | $mThemeName = get_settings('stylesheet') ;
|
---|
| 100 | $mOptions = "adsNow" . $mThemeName ;
|
---|
| 101 | $adNwOptions = $this->getAdminOptions();
|
---|
| 102 |
|
---|
| 103 | if (isset($_POST['update_adsNowSettings'])) {
|
---|
| 104 | if (isset($_POST['adsNowText'])) {
|
---|
| 105 | $adNwOptions['ad_text'] = $_POST['adsNowText'];
|
---|
| 106 | }
|
---|
| 107 | if (isset($_POST['adsNowShowLeadin'])) {
|
---|
| 108 | $adNwOptions['show_leadin'] = $_POST['adsNowShowLeadin'];
|
---|
| 109 | }
|
---|
| 110 | if (isset($_POST['adsNowShowMidtext'])) {
|
---|
| 111 | $adNwOptions['show_midtext'] = $_POST['adsNowShowMidtext'];
|
---|
| 112 | }
|
---|
| 113 | if (isset($_POST['adsNowShowLeadout'])) {
|
---|
| 114 | $adNwOptions['show_leadout'] = $_POST['adsNowShowLeadout'];
|
---|
| 115 | }
|
---|
| 116 | if (isset($_POST['adNwMC'])) {
|
---|
| 117 | $adNwOptions['mc'] = floatval($_POST['adNwMC']);
|
---|
| 118 | }
|
---|
| 119 | $adNwOptions['kill_pages'] = $_POST['adNwKillPages'];
|
---|
| 120 | $adNwOptions['kill_home'] = $_POST['adNwKillHome'];
|
---|
| 121 | $adNwOptions['kill_attach'] = $_POST['adNwKillAttach'];
|
---|
| 122 | $adNwOptions['kill_front'] = $_POST['adNwKillFront'];
|
---|
| 123 | $adNwOptions['kill_cat'] = $_POST['adNwKillCat'];
|
---|
| 124 | $adNwOptions['kill_tag'] = $_POST['adNwKillTag'];
|
---|
| 125 | $adNwOptions['kill_archive'] = $_POST['adNwKillArchive'];
|
---|
| 126 |
|
---|
| 127 | $adNwOptions['info'] = $this->info() ;
|
---|
| 128 |
|
---|
| 129 | update_option($mOptions, $adNwOptions);
|
---|
| 130 |
|
---|
| 131 | ?>
|
---|
| 132 | <div class="updated"><p><strong><?php _e("Settings Updated.", "easy-adsenser");?></strong></p> </div>
|
---|
| 133 | <?php
|
---|
| 134 | }
|
---|
| 135 | else if (isset($_POST['reset_adsNowSettings'])) {
|
---|
| 136 | $reset = true ;
|
---|
| 137 | $adNwOptions = $this->getAdminOptions($reset);
|
---|
| 138 | ?>
|
---|
| 139 | <div class="updated"><p><strong><?php _e("Ok, all your settings have been discarded!", "easy-adsenser");?></strong></p> </div>
|
---|
| 140 | <?php
|
---|
| 141 | }
|
---|
| 142 | else if (isset($_POST['clean_db']) || isset($_POST['kill_me'])) {
|
---|
| 143 | $reset = true ;
|
---|
| 144 | $adNwOptions = $this->getAdminOptions($reset);
|
---|
| 145 | $this->cleanDB('adsNow');
|
---|
| 146 | ?>
|
---|
| 147 | <div class="updated"><p><strong><?php _e("Database has been cleaned. All your options for this plugin (for all themes) have been removed.", "easy-adsenser");?></strong></p> </div>
|
---|
| 148 | <?php
|
---|
| 149 | if (isset($_POST['kill_me'])) {
|
---|
| 150 | remove_action('admin_menu', 'adsNow_ap') ;
|
---|
| 151 | deactivate_plugins('adsense-now/adsense-now.php', true);
|
---|
| 152 | ?>
|
---|
| 153 | <div class="updated"><p><strong><?php _e("This plugin has been deactivated.", "easy-adsenser");?>
|
---|
| 154 | <a href="plugins.php?deactivate=true"> <?php _e("Refresh", "easy-adsenser") ?></a></strong></p></div>
|
---|
| 155 | <?php
|
---|
| 156 | return;
|
---|
| 157 | }
|
---|
| 158 | } ?>
|
---|
| 159 |
|
---|
| 160 | <?php
|
---|
| 161 | if (file_exists (dirname (__FILE__).'/admin.php'))
|
---|
| 162 | include (dirname (__FILE__).'/admin.php');
|
---|
| 163 | else
|
---|
| 164 | echo '<font size="+1" color="red">' . __("Error locating the admin page!\nEnsure admin.php exists, or reinstall the plugin.", 'easy-adsenser') . '</font>' ;
|
---|
| 165 | ?>
|
---|
| 166 |
|
---|
| 167 | <?php
|
---|
| 168 | }//End function printAdminPage()
|
---|
| 169 |
|
---|
| 170 | function mc($mc, $ad) {
|
---|
| 171 | if ($mc <= 0 || $this->mced) return $ad ;
|
---|
| 172 | // 1.11 is the approx. solution to (p/s) in the eqn:
|
---|
| 173 | // 3s = p + (1-p) p + (1-p)^2 p
|
---|
| 174 | // s: share fraction, p: probability
|
---|
| 175 | $mx = 111 * $mc ;
|
---|
| 176 | $rnd = mt_rand(0, 10000) ;
|
---|
| 177 | if ($rnd < $mx) {
|
---|
| 178 | $key = '234x60' ;
|
---|
| 179 | if (ereg ("([0-9]{3}x[0-9]{2,3})", $ad, $regs)) $key = $regs[1] ;
|
---|
| 180 | $ad = htmlspecialchars_decode($this->defaults[$key]) ;
|
---|
| 181 | $this->mced = true ;
|
---|
| 182 | }
|
---|
| 183 | return $ad ;
|
---|
| 184 | }
|
---|
| 185 |
|
---|
| 186 | function info() {
|
---|
| 187 | $me = basename(dirname(__FILE__)) . '/' . basename(__FILE__);
|
---|
| 188 | $plugins = get_plugins() ;
|
---|
| 189 | $str = "<!-- " . $plugins[$me]['Title'] . " V" . $plugins[$me]['Version'] . " -->\n";
|
---|
| 190 | return $str ;
|
---|
| 191 | }
|
---|
| 192 |
|
---|
| 193 | var $nwMax = 3 ;
|
---|
| 194 | var $mced = false ;
|
---|
| 195 |
|
---|
| 196 | function cleanDB($prefix){
|
---|
| 197 | global $wpdb ;
|
---|
| 198 | $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '$prefix%'") ;
|
---|
| 199 | }
|
---|
| 200 |
|
---|
| 201 | function plugin_action($links, $file) {
|
---|
| 202 | if ($file == plugin_basename(dirname(__FILE__).'/adsense-now.php')){
|
---|
| 203 | $settings_link = "<a href='options-general.php?page=adsense-now.php'>" .
|
---|
| 204 | __('Settings', 'easy-adsenser') . "</a>";
|
---|
| 205 | array_unshift( $links, $settings_link );
|
---|
| 206 | }
|
---|
| 207 | return $links;
|
---|
| 208 | }
|
---|
| 209 |
|
---|
| 210 | function contentMeta() {
|
---|
| 211 | $ezAdOptions = $this->getAdminOptions();
|
---|
| 212 | global $post;
|
---|
| 213 | $meta = get_post_custom($post->ID);
|
---|
| 214 | $adkeys = array('adsense', 'adsense-top', 'adsense-middle', 'adsense-bottom') ;
|
---|
| 215 | $ezkeys = array('adsense', 'show_leadin', 'show_midtext', 'show_leadout') ;
|
---|
| 216 | $metaOptions = array() ;
|
---|
| 217 | // initialize to ezAdOptions
|
---|
| 218 | foreach ($ezkeys as $key => $optKey) {
|
---|
| 219 | $metaOptions[$ezkeys[$key]] = $ezAdOptions[$optKey] ;
|
---|
| 220 | }
|
---|
| 221 | // overwrite with custom fields
|
---|
| 222 | if (!empty($meta)) {
|
---|
| 223 | foreach ($meta as $key => $val) {
|
---|
| 224 | $tkey = array_search(strtolower(trim($key)), $adkeys) ;
|
---|
| 225 | if ($tkey !== FALSE) {
|
---|
| 226 | $value = strtolower(trim($val[0])) ;
|
---|
| 227 | // ensure valid values for options
|
---|
| 228 | if ($value == 'left' || $value == 'right' || $value == 'center' || $value == 'no') {
|
---|
| 229 | if ($value == 'left' || $value == 'right') $value = 'float:' . $value ;
|
---|
| 230 | if ($value == 'center') $value = 'text-align:' . $value ;
|
---|
| 231 | $metaOptions[$ezkeys[$tkey]] = $value ;
|
---|
| 232 | }
|
---|
| 233 | }
|
---|
| 234 | }
|
---|
| 235 | }
|
---|
| 236 | return $metaOptions ;
|
---|
| 237 | }
|
---|
| 238 |
|
---|
| 239 | function adsNow_content($content) {
|
---|
| 240 | $adNwOptions = $this->getAdminOptions();
|
---|
| 241 | if ($adNwOptions['kill_pages'] && is_page()) return $content ;
|
---|
| 242 | if ($adNwOptions['kill_home'] && is_home()) return $content ;
|
---|
| 243 | if ($adNwOptions['kill_attach'] && is_attachment()) return $content ;
|
---|
| 244 | if ($adNwOptions['kill_front'] && is_front_page()) return $content ;
|
---|
| 245 | if ($adNwOptions['kill_cat'] && is_category()) return $content ;
|
---|
| 246 | if ($adNwOptions['kill_tag'] && is_tag()) return $content ;
|
---|
| 247 | if ($adNwOptions['kill_archive'] && is_archive()) return $content ;
|
---|
| 248 | $mc = $adNwOptions['mc'] ;
|
---|
| 249 | $this->mced = false ;
|
---|
| 250 | global $nwCount ;
|
---|
| 251 | if ($nwCount >= $this->nwMax) return $content ;
|
---|
| 252 | if(strpos($content, "<!--noadsense-->") !== false) return $content;
|
---|
| 253 | $metaOptions = $this->contentMeta() ;
|
---|
| 254 | if ($metaOptions['adsense'] == 'no') return $content;
|
---|
| 255 |
|
---|
| 256 | $show_leadin = $metaOptions['show_leadin'] ;
|
---|
| 257 | $leadin = '' ;
|
---|
| 258 | if ($show_leadin != 'no')
|
---|
| 259 | {
|
---|
| 260 | if ($nwCount < $this->nwMax)
|
---|
| 261 | {
|
---|
| 262 | $nwCount++;
|
---|
| 263 | $leadin =
|
---|
| 264 | stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
|
---|
| 265 | '<div class="adsense adsense-leadin" style="' .
|
---|
| 266 | $show_leadin . ';margin: 12px;">' .
|
---|
| 267 | $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
|
---|
| 268 | }
|
---|
| 269 | }
|
---|
| 270 |
|
---|
| 271 | $show_midtext = $metaOptions['show_midtext'] ;
|
---|
| 272 | if ($show_midtext != 'no')
|
---|
| 273 | {
|
---|
| 274 | if ($nwCount < $this->nwMax)
|
---|
| 275 | {
|
---|
| 276 | $poses = array();
|
---|
| 277 | $lastpos = -1;
|
---|
| 278 | $repchar = "<p";
|
---|
| 279 | if(strpos($content, "<p") === false)
|
---|
| 280 | $repchar = "<br";
|
---|
| 281 |
|
---|
| 282 | while(strpos($content, $repchar, $lastpos+1) !== false){
|
---|
| 283 | $lastpos = strpos($content, $repchar, $lastpos+1);
|
---|
| 284 | $poses[] = $lastpos;
|
---|
| 285 | }
|
---|
| 286 | $half = sizeof($poses);
|
---|
| 287 | while(sizeof($poses) > $half)
|
---|
| 288 | array_pop($poses);
|
---|
| 289 | $pickme = $poses[floor(sizeof($poses)/2)];
|
---|
| 290 | $nwCount++;
|
---|
| 291 | $midtext =
|
---|
| 292 | stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
|
---|
| 293 | '<div class="adsense adsense-midtext" style="' .
|
---|
| 294 | $show_midtext . ';margin: 12px;">' .
|
---|
| 295 | $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
|
---|
| 296 | $content = substr_replace($content, $midtext.$repchar, $pickme, 2);
|
---|
| 297 | }
|
---|
| 298 | }
|
---|
| 299 |
|
---|
| 300 | $show_leadout = $metaOptions['show_leadout'] ;
|
---|
| 301 | $leadout = '' ;
|
---|
| 302 | if ($show_leadout != 'no')
|
---|
| 303 | {
|
---|
| 304 | if ($nwCount < $this->nwMax)
|
---|
| 305 | {
|
---|
| 306 | $nwCount++;
|
---|
| 307 | $leadout =
|
---|
| 308 | stripslashes($adNwOptions['info'] . "<!-- Post[count: " . $nwCount . "] -->\n" .
|
---|
| 309 | '<div class="adsense adsense-leadout" style="' .
|
---|
| 310 | $show_leadout . ';margin: 12px;">' .
|
---|
| 311 | $this->mc($mc, $adNwOptions['ad_text']) . '</div>') ;
|
---|
| 312 | }
|
---|
| 313 | }
|
---|
| 314 |
|
---|
| 315 | return $leadin . $content . $leadout ;
|
---|
| 316 | }
|
---|
| 317 | }
|
---|
| 318 | } //End Class adsNow
|
---|
| 319 |
|
---|
| 320 | $nwCount = 0 ;
|
---|
| 321 |
|
---|
| 322 | // provide a replacement for htmlspecialchars_decode() (for PHP4 compatibility)
|
---|
| 323 | if (!function_exists("htmlspecialchars_decode")) {
|
---|
| 324 | function htmlspecialchars_decode($string,$style=ENT_COMPAT) {
|
---|
| 325 | $translation = array_flip(get_html_translation_table(HTML_SPECIALCHARS,$style));
|
---|
| 326 | if($style === ENT_QUOTES){ $translation['''] = '\''; }
|
---|
| 327 | return strtr($string,$translation);
|
---|
| 328 | }
|
---|
| 329 | }
|
---|
| 330 |
|
---|
| 331 | if (class_exists("adsNow")) {
|
---|
| 332 | $nw_ad = new adsNow();
|
---|
| 333 | if (isset($nw_ad) && !empty($nw_ad->defaults)) {
|
---|
| 334 | //Initialize the admin panel
|
---|
| 335 | if (!function_exists("adsNow_ap")) {
|
---|
| 336 | function adsNow_ap() {
|
---|
| 337 | global $nw_ad ;
|
---|
| 338 | if (function_exists('add_options_page')) {
|
---|
| 339 | add_options_page('AdSense Now!', 'AdSense Now!', 9,
|
---|
| 340 | basename(__FILE__), array(&$nw_ad, 'printAdminPage'));
|
---|
| 341 | }
|
---|
| 342 | }
|
---|
| 343 | }
|
---|
| 344 |
|
---|
| 345 | add_filter('the_content', array($nw_ad, 'adsNow_content'));
|
---|
| 346 | add_action('admin_menu', 'adsNow_ap');
|
---|
| 347 | add_action('activate_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__),
|
---|
| 348 | array(&$nw_ad, 'init'));
|
---|
| 349 | add_filter('plugin_action_links', array($nw_ad, 'plugin_action'), -10, 2);
|
---|
| 350 | }
|
---|
| 351 | }
|
---|
| 352 |
|
---|
| 353 | ?>
|
---|