messages = array(); $this->adboxes_client = new PWAdboxesClient(); $this->publisher_info = false; if ($member_id = get_option('plugin-wonderful-memberid')) { $this->publisher_info = $this->adboxes_client->get_ads($member_id); if ((get_option('plugin-wonderful-last-update') + PLUGIN_WONDERFUL_UPDATE_TIME) < time()) { if (($result = file_get_contents(sprintf(PLUGIN_WONDERFUL_XML_URL, (int)get_option('plugin-wonderful-memberid')))) !== false) { $this->publisher_info = new PublisherInfo(); if ($this->publisher_info->parse($result)) { $this->adboxes_client->post_ads($this->publisher_info); update_option('plugin-wonderful-last-update', time()); } } } } $result = get_option('plugin-wonderful-database-version'); if (empty($result) || ($result < PLUGIN_WONDERFUL_DATABASE_VERSION)) { if ($this->adboxes_client->initialize(true)) { update_option('plugin-wonderful-database-version', PLUGIN_WONDERFUL_DATABASE_VERSION); } else { $this->messages[] = "Unable to update database schema!"; } } if (!empty($_POST)) { $this->handle_action(); } } function insert_rss_feed_ads($content) { if (is_feed()) { foreach ($this->publisher_info->adboxes as $adbox) { if ($adbox->in_rss_feed == 1) { if (preg_match("##mis", $adbox->advancedcode, $matches) > 0) { echo $matches[1]; } } } } return $content; } function insert_activation_ad() { $result = get_option('plugin-wonderful-activate-ad-code'); if (!empty($result)) { echo $result; } } function render_widget($options, $adboxid) { if ($this->publisher_info !== false) { foreach ($this->publisher_info->adboxes as $adbox) { if (($adbox->adboxid == $adboxid) || ($adbox->template_tag_id == $adboxid)) { if (get_option("plugin-wonderful-use-standardcode") == 1) { $output = $adbox->standardcode; } else { $output = $adbox->advancedcode; } if ($adbox->center_widget == 1) { $output = "
{$output}
"; } echo $output; break; } } } } function inject_ads_into_body_copy($body) { if ($this->publisher_info !== false) { return $this->publisher_info->inject_ads_into_body_copy($body, (get_option("plugin-wonderful-use-standardcode") == 1)); } } function set_up_menu() { add_options_page('Plugin Wonderful', __("Plugin Wonderful", 'plugin-wonderful'), 5, __FILE__, array($this, "plugin_wonderful_main")); } function set_up_widgets() { if ($this->publisher_info !== false) { if (($widgets = $this->publisher_info->get_sidebar_widget_info()) !== false) { foreach ($widgets as $widget_info) { extract($widget_info); wp_register_sidebar_widget($id, $name, array($this, 'render_widget'), "", $options['adboxid']); register_widget_control($id, array($this, 'render_widget_control'), null, null, $options['adboxid']); } } } } function render_widget_control($adboxid) { foreach ($this->publisher_info->adboxes as $box) { if ($box->adboxid == $adboxid) { echo ''; break; } } } function handle_activation() { $this->adboxes_client->initialize(); } function plugin_wonderful_main() { $this->get_view(__FUNCTION__); } function show_messages() { if (count($this->messages) > 0) { echo '
'; foreach ($this->messages as $message) { echo '

' . $message . '

'; } echo '
'; } } function _create_target($name, $source) { return ABSPATH . PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)) . "/{$source}/{$name}.php"; } function get_view($function_name) { $target = $this->_create_target(str_replace('plugin_wonderful_', '', $function_name), "views"); if (file_exists($target)) { $info = get_plugin_data(realpath(__FILE__)); echo '
'; echo '

'; echo '

' . __("Plugin Wonderful", 'plugin-wonderful') . '

'; $this->show_messages(); include($target); echo '
'; echo '
'; echo sprintf(__('%1$s Version %2$s by %3$s', 'plugin-wonderful'), $info['Title'], $info['Version'], $info['Author']) . ' | '; echo __('Manage your Project Wonderful publisher account', 'plugin-wonderful'); echo '
'; echo '
'; echo '
'; } else { die(__("View not found: ", 'plugin-wonderful') . str_replace('plugin-wonderful_', '', $function_name)); } } function handle_action() { $action = "handle_action_" . str_replace("-", "_", preg_replace('#[^a-z\-]#', '', strtolower($_POST['action']))); if (method_exists($this, $action)) { call_user_func(array($this, $action)); } // handle widget updates if (isset($_POST['save-widgets'])) { $this->handle_action_save_widgets(); } } function handle_action_save_widgets() { $new_boxes = array(); foreach ($this->publisher_info->adboxes as $box) { if (isset($_POST['pw']['center'][$box->adboxid])) { $this->adboxes_client->set_widget_centering($box->adboxid, true); $box->center_widget = "1"; } else { $this->adboxes_client->set_widget_centering($box->adboxid, false); $box->center_widget = "0"; } $new_boxes[] = $box; } $this->publisher_info->adboxes = $new_boxes; } function handle_action_change_adbox_settings() { if ($member_id = get_option('plugin-wonderful-memberid')) { if (isset($_POST['template_tag_id']) && is_array($_POST['template_tag_id'])) { if (is_array($this->publisher_info->adboxes)) { $new_boxes = array(); foreach ($this->publisher_info->adboxes as $box) { if (isset($_POST['template_tag_id'][$box->adboxid])) { $tag = $_POST['template_tag_id'][$box->adboxid]; $prior_value = $box->template_tag_id; $tag = $this->adboxes_client->trim_field('template_tag_id', $tag); $this->adboxes_client->set_template_tag($box->adboxid, $tag); $box->template_tag_id = $tag; if (!empty($tag) && ($prior_value != $tag)) { $this->messages[] = sprintf(__('Template tag identifier for ad %1$s set to %2$s.', 'plugin-wonderful'), $box->adboxid, $tag); } else { if (!empty($prior_value) && empty($tag)) { $this->messages[] = sprintf(__('Template tag identifier for ad %s removed.', 'plugin-wonderful'), $box->adboxid); } } } $new_boxes[] = $box; } $this->publisher_info->adboxes = $new_boxes; } } if (is_array($this->publisher_info->adboxes)) { $new_boxes = array(); foreach ($this->publisher_info->adboxes as $box) { if (isset($_POST['in_rss_feed'][$box->adboxid])) { $this->adboxes_client->set_rss_feed_usage($box->adboxid, true); if ($box->in_rss_feed == 0) { $this->messages[] = sprintf(__('RSS feed usage for ad %1$s enabled.', 'plugin-wonderful'), $box->adboxid); } $box->in_rss_feed = "1"; } else { $this->adboxes_client->set_rss_feed_usage($box->adboxid, false); if ($box->in_rss_feed == 1) { $this->messages[] = sprintf(__('RSS feed usage for ad %1$s disabled.', 'plugin-wonderful'), $box->adboxid); } $box->in_rss_feed = "0"; } $new_boxes[] = $box; } $this->publisher_info->adboxes = $new_boxes; } } if (count($this->messages) == 0) { $this->messages[] = __("No changes to adboxes were made.", 'plugin-wonderful'); } } function handle_action_rebuild_database() { $this->adboxes_client->destroy(); $this->adboxes_client->initialize(); $this->messages[] = __("Adbox database destroyed and rebuilt.", 'plugin-wonderful'); if (get_option('plugin-wonderful-memberid') != "") { if (($result = file_get_contents(sprintf(PLUGIN_WONDERFUL_XML_URL, (int)get_option('plugin-wonderful-memberid')))) !== false) { $this->publisher_info = new PublisherInfo(); if ($this->publisher_info->parse($result)) { $this->adboxes_client->post_ads($this->publisher_info); $this->messages[] = sprintf(__('Adbox information redownloaded.', 'plugin-wonderful'), (int)$_POST['memberid']); } else { $this->messages[] = __("Unable to parse publisher data from Project Wonderful.", 'plugin-wonderful'); $this->publisher_info = false; } } else { $this->messages[] = __("Unable to read publisher data from Project Wonderful.", 'plugin-wonderful'); $this->publisher_info = false; } } } function handle_action_change_memberid() { if (trim($_POST['memberid'])) { if (trim($_POST['memberid']) === (string)(int)$_POST['memberid']) { if (($result = file_get_contents(sprintf(PLUGIN_WONDERFUL_XML_URL, (int)$_POST['memberid']))) !== false) { $this->publisher_info = new PublisherInfo(); if ($this->publisher_info->parse($result)) { update_option('plugin-wonderful-memberid', (int)$_POST['memberid']); $this->adboxes_client->post_ads($this->publisher_info); $this->messages[] = sprintf(__('Member number changed to %s and adbox information redownloaded.', 'plugin-wonderful'), (int)$_POST['memberid']); } else { $this->messages[] = __("Unable to parse publisher data from Project Wonderful.", 'plugin-wonderful'); update_option('plugin-wonderful-memberid', ""); $this->publisher_info = false; } } else { $this->messages[] = __("Unable to read publisher data from Project Wonderful.", 'plugin-wonderful'); update_option('plugin-wonderful-memberid', ""); $this->publisher_info = false; } } else { $this->messages[] = __("Member numbers need to be numeric.", 'plugin-wonderful'); update_option('plugin-wonderful-memberid', ""); $this->publisher_info = false; } } else { $this->messages[] = __("Existing adbox information removed.", 'plugin-wonderful'); update_option('plugin-wonderful-memberid', ""); $this->publisher_info = false; } foreach (array('use-standardcode', 'enable-body-copy-embedding') as $field) { update_option("plugin-wonderful-${field}", isset($_POST[$field]) ? "1" : "0"); } } } $plugin_wonderful = new PluginWonderful(); add_action('admin_menu', array($plugin_wonderful, 'set_up_menu')); add_action('init', array($plugin_wonderful, 'set_up_widgets')); add_filter('the_excerpt_rss', array($plugin_wonderful, 'insert_rss_feed_ads')); add_filter('the_content', array($plugin_wonderful, 'inject_ads_into_body_copy')); register_activation_hook(__FILE__, array($plugin_wonderful, 'handle_activation')); function the_project_wonderful_ad($adboxid) { global $plugin_wonderful; $plugin_wonderful->render_widget(array(), $adboxid); } ?>