diff --git a/ruby/lib/jam_ruby/db_util.rb b/ruby/lib/jam_ruby/db_util.rb index fac3145fb..f3163cc9d 100644 --- a/ruby/lib/jam_ruby/db_util.rb +++ b/ruby/lib/jam_ruby/db_util.rb @@ -14,5 +14,13 @@ module JamRuby end BAD_CONN_EXCEPTIONS.include?(test_exception.class) end + + def self.migrations_path + if ENV['RAILS_ENV'] == 'production' + "/var/lib/jam-web/vendor/bundle/ruby/2.3.0/gems/jam_ruby-0.1.#{ENV['BUILD_NUMBER']}/db/migrate" + else + File.expand_path("../../../../../db/migrate", __FILE__) + end + end end end \ No newline at end of file diff --git a/ruby/lib/jam_ruby/tasks/db/migrate.rake b/ruby/lib/jam_ruby/tasks/db/migrate.rake index 43a648521..64a179401 100644 --- a/ruby/lib/jam_ruby/tasks/db/migrate.rake +++ b/ruby/lib/jam_ruby/tasks/db/migrate.rake @@ -22,7 +22,7 @@ namespace :db do end ActiveRecord::Base.establish_connection(db_config) - migrate_dir = File.expand_path("../../../../../db/migrate", __FILE__) + migrate_dir = JamRuby::DbUtil.migrations_path ActiveRecord::Migrator.migrate(migrate_dir, version) puts "#{ENV['RAILS_ENV']} database migrated." end @@ -31,7 +31,7 @@ namespace :db do task :rollback do steps = (ARGV[1] || "1").to_i ActiveRecord::Base.establish_connection(db_config) - migrate_dir = File.expand_path("../../../../../db/migrate", __FILE__) + migrate_dir = JamRuby::DbUtil.migrations_path ActiveRecord::Migrator.rollback(migrate_dir, steps) puts "#{ENV['RAILS_ENV']} database migrated." end diff --git a/web/app/views/users/_user_dropdown.html.erb b/web/app/views/users/_user_dropdown.html.erb index ceb2db447..98dce067a 100644 --- a/web/app/views/users/_user_dropdown.html.erb +++ b/web/app/views/users/_user_dropdown.html.erb @@ -45,7 +45,7 @@ <% end %> <% end %> <% if current_user && current_user.affiliate_partner.present? %> -
  • <%= link_to "Affiliate Report", '/client#/account/affiliate' %>
  • +
  • <%= link_to "Affiliate Report", '/client#/account/affiliatePartner' %>
  • <% end %> <% if @nativeClient && Rails.application.config.jamblaster_menu %> diff --git a/wordpress/plugins/README.txt b/wordpress/plugins/README.txt new file mode 100644 index 000000000..532d20e61 --- /dev/null +++ b/wordpress/plugins/README.txt @@ -0,0 +1,7 @@ +The `jamkazam` folder is a wordpress plugin. + +It has a ton of boilerplate already added, so it's easy to extend. + +However, the only actual code currently is in jamkazam.php at the root folder. The code at the bottom looks for an *affiliate* +parameter, and if found, sets a cookie in the same manner as the jam-web app does. This is so that users going to jamkazam.com +landing pages can tack on the ?affiliate=10000 parameter and, if the user ends up signing up, then the affiliate_referra_id on the user will be set diff --git a/wordpress/plugins/jamkazam/LICENSE.txt b/wordpress/plugins/jamkazam/LICENSE.txt new file mode 100644 index 000000000..ba424fb84 --- /dev/null +++ b/wordpress/plugins/jamkazam/LICENSE.txt @@ -0,0 +1 @@ +This is JamKazam source code. Redistribution not allowed except as specifically granted by JamKazam. \ No newline at end of file diff --git a/wordpress/plugins/jamkazam/README.txt b/wordpress/plugins/jamkazam/README.txt new file mode 100644 index 000000000..60e25a3d9 --- /dev/null +++ b/wordpress/plugins/jamkazam/README.txt @@ -0,0 +1,114 @@ +=== Plugin Name === +Contributors: (this should be a list of wordpress.org userid's) +Donate link: http://example.com/ +Tags: comments, spam +Requires at least: 3.0.1 +Tested up to: 3.4 +Stable tag: 4.3 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Here is a short description of the plugin. This should be no more than 150 characters. No markup here. + +== Description == + +This is the long description. No limit, and you can use Markdown (as well as in the following sections). + +For backwards compatibility, if this section is missing, the full length of the short description will be used, and +Markdown parsed. + +A few notes about the sections above: + +* "Contributors" is a comma separated list of wp.org/wp-plugins.org usernames +* "Tags" is a comma separated list of tags that apply to the plugin +* "Requires at least" is the lowest version that the plugin will work on +* "Tested up to" is the highest version that you've *successfully used to test the plugin*. Note that it might work on +higher versions... this is just the highest one you've verified. +* Stable tag should indicate the Subversion "tag" of the latest stable version, or "trunk," if you use `/trunk/` for +stable. + + Note that the `readme.txt` of the stable tag is the one that is considered the defining one for the plugin, so +if the `/trunk/readme.txt` file says that the stable tag is `4.3`, then it is `/tags/4.3/readme.txt` that'll be used +for displaying information about the plugin. In this situation, the only thing considered from the trunk `readme.txt` +is the stable tag pointer. Thus, if you develop in trunk, you can update the trunk `readme.txt` to reflect changes in +your in-development version, without having that information incorrectly disclosed about the current stable version +that lacks those changes -- as long as the trunk's `readme.txt` points to the correct stable tag. + + If no stable tag is provided, it is assumed that trunk is stable, but you should specify "trunk" if that's where +you put the stable version, in order to eliminate any doubt. + +== Installation == + +This section describes how to install the plugin and get it working. + +e.g. + +1. Upload `plugin-name.php` to the `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress +1. Place `` in your templates + +== Frequently Asked Questions == + += A question that someone might have = + +An answer to that question. + += What about foo bar? = + +Answer to foo bar dilemma. + +== Screenshots == + +1. This screen shot description corresponds to screenshot-1.(png|jpg|jpeg|gif). Note that the screenshot is taken from +the /assets directory or the directory that contains the stable readme.txt (tags or trunk). Screenshots in the /assets +directory take precedence. For example, `/assets/screenshot-1.png` would win over `/tags/4.3/screenshot-1.png` +(or jpg, jpeg, gif). +2. This is the second screen shot + +== Changelog == + += 1.0 = +* A change since the previous version. +* Another change. + += 0.5 = +* List versions from most recent at top to oldest at bottom. + +== Upgrade Notice == + += 1.0 = +Upgrade notices describe the reason a user should upgrade. No more than 300 characters. + += 0.5 = +This version fixes a security related bug. Upgrade immediately. + +== Arbitrary section == + +You may provide arbitrary sections, in the same format as the ones above. This may be of use for extremely complicated +plugins where more information needs to be conveyed that doesn't fit into the categories of "description" or +"installation." Arbitrary sections will be shown below the built-in sections outlined above. + +== A brief Markdown Example == + +Ordered list: + +1. Some feature +1. Another feature +1. Something else about the plugin + +Unordered list: + +* something +* something else +* third thing + +Here's a link to [WordPress](http://wordpress.org/ "Your favorite software") and one to [Markdown's Syntax Documentation][markdown syntax]. +Titles are optional, naturally. + +[markdown syntax]: http://daringfireball.net/projects/markdown/syntax + "Markdown is what the parser uses to process much of the readme file" + +Markdown uses email style notation for blockquotes and I've been told: +> Asterisks for *emphasis*. Double it up for **strong**. + +`` \ No newline at end of file diff --git a/wordpress/plugins/jamkazam/admin/class-jamkazam-admin.php b/wordpress/plugins/jamkazam/admin/class-jamkazam-admin.php new file mode 100644 index 000000000..cfcd93736 --- /dev/null +++ b/wordpress/plugins/jamkazam/admin/class-jamkazam-admin.php @@ -0,0 +1,103 @@ + + */ +class JamKazam_Admin { + + /** + * The ID of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $plugin_name The ID of this plugin. + */ + private $plugin_name; + + /** + * The version of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $version The current version of this plugin. + */ + private $version; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $plugin_name The name of this plugin. + * @param string $version The version of this plugin. + */ + public function __construct( $plugin_name, $version ) { + + $this->plugin_name = $plugin_name; + $this->version = $version; + + } + + /** + * Register the stylesheets for the admin area. + * + * @since 1.0.0 + */ + public function enqueue_styles() { + + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in JamKazam_Loader as all of the hooks are defined + * in that particular class. + * + * The JamKazam_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + + wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/jamkazam-admin.css', array(), $this->version, 'all' ); + + } + + /** + * Register the JavaScript for the admin area. + * + * @since 1.0.0 + */ + public function enqueue_scripts() { + + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in JamKazam_Loader as all of the hooks are defined + * in that particular class. + * + * The JamKazam_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + + wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/jamkazam-admin.js', array( 'jquery' ), $this->version, false ); + + } + +} diff --git a/wordpress/plugins/jamkazam/admin/css/jamkazam-admin.css b/wordpress/plugins/jamkazam/admin/css/jamkazam-admin.css new file mode 100644 index 000000000..00c8c7f74 --- /dev/null +++ b/wordpress/plugins/jamkazam/admin/css/jamkazam-admin.css @@ -0,0 +1,4 @@ +/** + * All of the CSS for your admin-specific functionality should be + * included in this file. + */ \ No newline at end of file diff --git a/wordpress/plugins/jamkazam/admin/index.php b/wordpress/plugins/jamkazam/admin/index.php new file mode 100644 index 000000000..e71af0ef2 --- /dev/null +++ b/wordpress/plugins/jamkazam/admin/index.php @@ -0,0 +1 @@ + + + diff --git a/wordpress/plugins/jamkazam/includes/class-jamkazam-activator.php b/wordpress/plugins/jamkazam/includes/class-jamkazam-activator.php new file mode 100644 index 000000000..bd741f8a5 --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/class-jamkazam-activator.php @@ -0,0 +1,36 @@ + + */ +class JamKazam_Activator { + + /** + * Short Description. (use period) + * + * Long Description. + * + * @since 1.0.0 + */ + public static function activate() { + + } + +} diff --git a/wordpress/plugins/jamkazam/includes/class-jamkazam-deactivator.php b/wordpress/plugins/jamkazam/includes/class-jamkazam-deactivator.php new file mode 100644 index 000000000..74d09db9c --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/class-jamkazam-deactivator.php @@ -0,0 +1,36 @@ + + */ +class JamKazam_Deactivator { + + /** + * Short Description. (use period) + * + * Long Description. + * + * @since 1.0.0 + */ + public static function deactivate() { + + } + +} diff --git a/wordpress/plugins/jamkazam/includes/class-jamkazam-i18n.php b/wordpress/plugins/jamkazam/includes/class-jamkazam-i18n.php new file mode 100644 index 000000000..f18ae5184 --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/class-jamkazam-i18n.php @@ -0,0 +1,47 @@ + + */ +class JamKazam_i18n { + + + /** + * Load the plugin text domain for translation. + * + * @since 1.0.0 + */ + public function load_plugin_textdomain() { + + load_plugin_textdomain( + 'jamkazam', + false, + dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/' + ); + + } + + + +} diff --git a/wordpress/plugins/jamkazam/includes/class-jamkazam-loader.php b/wordpress/plugins/jamkazam/includes/class-jamkazam-loader.php new file mode 100644 index 000000000..0fe88c103 --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/class-jamkazam-loader.php @@ -0,0 +1,129 @@ + + */ +class JamKazam_Loader { + + /** + * The array of actions registered with WordPress. + * + * @since 1.0.0 + * @access protected + * @var array $actions The actions registered with WordPress to fire when the plugin loads. + */ + protected $actions; + + /** + * The array of filters registered with WordPress. + * + * @since 1.0.0 + * @access protected + * @var array $filters The filters registered with WordPress to fire when the plugin loads. + */ + protected $filters; + + /** + * Initialize the collections used to maintain the actions and filters. + * + * @since 1.0.0 + */ + public function __construct() { + + $this->actions = array(); + $this->filters = array(); + + } + + /** + * Add a new action to the collection to be registered with WordPress. + * + * @since 1.0.0 + * @param string $hook The name of the WordPress action that is being registered. + * @param object $component A reference to the instance of the object on which the action is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority Optional. The priority at which the function should be fired. Default is 10. + * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1. + */ + public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { + $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args ); + } + + /** + * Add a new filter to the collection to be registered with WordPress. + * + * @since 1.0.0 + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority Optional. The priority at which the function should be fired. Default is 10. + * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1 + */ + public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { + $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args ); + } + + /** + * A utility function that is used to register the actions and hooks into a single + * collection. + * + * @since 1.0.0 + * @access private + * @param array $hooks The collection of hooks that is being registered (that is, actions or filters). + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority The priority at which the function should be fired. + * @param int $accepted_args The number of arguments that should be passed to the $callback. + * @return array The collection of actions and filters registered with WordPress. + */ + private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) { + + $hooks[] = array( + 'hook' => $hook, + 'component' => $component, + 'callback' => $callback, + 'priority' => $priority, + 'accepted_args' => $accepted_args + ); + + return $hooks; + + } + + /** + * Register the filters and actions with WordPress. + * + * @since 1.0.0 + */ + public function run() { + + foreach ( $this->filters as $hook ) { + add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); + } + + foreach ( $this->actions as $hook ) { + add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); + } + + } + +} diff --git a/wordpress/plugins/jamkazam/includes/class-jamkazam.php b/wordpress/plugins/jamkazam/includes/class-jamkazam.php new file mode 100644 index 000000000..aeba0acd2 --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/class-jamkazam.php @@ -0,0 +1,218 @@ + + */ +class JamKazam { + + /** + * The loader that's responsible for maintaining and registering all hooks that power + * the plugin. + * + * @since 1.0.0 + * @access protected + * @var JamKazam_Loader $loader Maintains and registers all hooks for the plugin. + */ + protected $loader; + + /** + * The unique identifier of this plugin. + * + * @since 1.0.0 + * @access protected + * @var string $plugin_name The string used to uniquely identify this plugin. + */ + protected $plugin_name; + + /** + * The current version of the plugin. + * + * @since 1.0.0 + * @access protected + * @var string $version The current version of the plugin. + */ + protected $version; + + /** + * Define the core functionality of the plugin. + * + * Set the plugin name and the plugin version that can be used throughout the plugin. + * Load the dependencies, define the locale, and set the hooks for the admin area and + * the public-facing side of the site. + * + * @since 1.0.0 + */ + public function __construct() { + if ( defined( 'JAMKAZAM_VERSION' ) ) { + $this->version = JAMKAZAM_VERSION; + } else { + $this->version = '1.0.0'; + } + $this->plugin_name = 'jamkazam'; + + $this->load_dependencies(); + $this->set_locale(); + $this->define_admin_hooks(); + $this->define_public_hooks(); + + } + + /** + * Load the required dependencies for this plugin. + * + * Include the following files that make up the plugin: + * + * - JamKazam_Loader. Orchestrates the hooks of the plugin. + * - JamKazam_i18n. Defines internationalization functionality. + * - JamKazam_Admin. Defines all hooks for the admin area. + * - JamKazam_Public. Defines all hooks for the public side of the site. + * + * Create an instance of the loader which will be used to register the hooks + * with WordPress. + * + * @since 1.0.0 + * @access private + */ + private function load_dependencies() { + + /** + * The class responsible for orchestrating the actions and filters of the + * core plugin. + */ + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-jamkazam-loader.php'; + + /** + * The class responsible for defining internationalization functionality + * of the plugin. + */ + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-jamkazam-i18n.php'; + + /** + * The class responsible for defining all actions that occur in the admin area. + */ + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-jamkazam-admin.php'; + + /** + * The class responsible for defining all actions that occur in the public-facing + * side of the site. + */ + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-jamkazam-public.php'; + + $this->loader = new JamKazam_Loader(); + + } + + /** + * Define the locale for this plugin for internationalization. + * + * Uses the JamKazam_i18n class in order to set the domain and to register the hook + * with WordPress. + * + * @since 1.0.0 + * @access private + */ + private function set_locale() { + + $plugin_i18n = new JamKazam_i18n(); + + $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' ); + + } + + /** + * Register all of the hooks related to the admin area functionality + * of the plugin. + * + * @since 1.0.0 + * @access private + */ + private function define_admin_hooks() { + + $plugin_admin = new JamKazam_Admin( $this->get_plugin_name(), $this->get_version() ); + + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' ); + $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' ); + + } + + /** + * Register all of the hooks related to the public-facing functionality + * of the plugin. + * + * @since 1.0.0 + * @access private + */ + private function define_public_hooks() { + + $plugin_public = new JamKazam_Public( $this->get_plugin_name(), $this->get_version() ); + + $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' ); + $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' ); + + } + + /** + * Run the loader to execute all of the hooks with WordPress. + * + * @since 1.0.0 + */ + public function run() { + $this->loader->run(); + } + + /** + * The name of the plugin used to uniquely identify it within the context of + * WordPress and to define internationalization functionality. + * + * @since 1.0.0 + * @return string The name of the plugin. + */ + public function get_plugin_name() { + return $this->plugin_name; + } + + /** + * The reference to the class that orchestrates the hooks with the plugin. + * + * @since 1.0.0 + * @return JamKazam_Loader Orchestrates the hooks of the plugin. + */ + public function get_loader() { + return $this->loader; + } + + /** + * Retrieve the version number of the plugin. + * + * @since 1.0.0 + * @return string The version number of the plugin. + */ + public function get_version() { + return $this->version; + } + +} diff --git a/wordpress/plugins/jamkazam/includes/index.php b/wordpress/plugins/jamkazam/includes/index.php new file mode 100644 index 000000000..e71af0ef2 --- /dev/null +++ b/wordpress/plugins/jamkazam/includes/index.php @@ -0,0 +1 @@ +run(); + +} +run_jamkazam(); + + + +/** +* Set affiliate tracking cookie if there is an `?affiliate=xxxx` parameter in the URL +* The rails set honors this cookie, and a new user will be associated with the affiliate. +*/ +add_action( 'init', 'process_post' ); +function process_post() { + $affiliate_id = $_GET['affiliate']; + + $expiration = current_time( 'timestamp' ) + ( DAY_IN_SECONDS * 2 ); + #cookies[:affiliate_visitor] = { :value => params[:affiliate], :expires => Time.now + 3600 * 24} # 1 day from now + + if(isset($affiliate_id)) { + setcookie('affiliate_visitor', $affiliate_id, $expiration, '/', '.jamkazam.com'); + } +} \ No newline at end of file diff --git a/wordpress/plugins/jamkazam/languages/jamkazam.pot b/wordpress/plugins/jamkazam/languages/jamkazam.pot new file mode 100644 index 000000000..e69de29bb diff --git a/wordpress/plugins/jamkazam/public/class-jamkazam-public.php b/wordpress/plugins/jamkazam/public/class-jamkazam-public.php new file mode 100644 index 000000000..7c8abb441 --- /dev/null +++ b/wordpress/plugins/jamkazam/public/class-jamkazam-public.php @@ -0,0 +1,103 @@ + + */ +class JamKazam_Public { + + /** + * The ID of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $plugin_name The ID of this plugin. + */ + private $plugin_name; + + /** + * The version of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $version The current version of this plugin. + */ + private $version; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $plugin_name The name of the plugin. + * @param string $version The version of this plugin. + */ + public function __construct( $plugin_name, $version ) { + + $this->plugin_name = $plugin_name; + $this->version = $version; + + } + + /** + * Register the stylesheets for the public-facing side of the site. + * + * @since 1.0.0 + */ + public function enqueue_styles() { + + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in JamKazam_Loader as all of the hooks are defined + * in that particular class. + * + * The JamKazam_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + + wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/jamkazam-public.css', array(), $this->version, 'all' ); + + } + + /** + * Register the JavaScript for the public-facing side of the site. + * + * @since 1.0.0 + */ + public function enqueue_scripts() { + + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in JamKazam_Loader as all of the hooks are defined + * in that particular class. + * + * The JamKazam_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + + wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/jamkazam-public.js', array( 'jquery' ), $this->version, false ); + + } + +} diff --git a/wordpress/plugins/jamkazam/public/css/jamkazam-public.css b/wordpress/plugins/jamkazam/public/css/jamkazam-public.css new file mode 100644 index 000000000..65bbf9630 --- /dev/null +++ b/wordpress/plugins/jamkazam/public/css/jamkazam-public.css @@ -0,0 +1,4 @@ +/** + * All of the CSS for your public-facing functionality should be + * included in this file. + */ \ No newline at end of file diff --git a/wordpress/plugins/jamkazam/public/index.php b/wordpress/plugins/jamkazam/public/index.php new file mode 100644 index 000000000..e71af0ef2 --- /dev/null +++ b/wordpress/plugins/jamkazam/public/index.php @@ -0,0 +1 @@ + + + diff --git a/wordpress/plugins/jamkazam/uninstall.php b/wordpress/plugins/jamkazam/uninstall.php new file mode 100644 index 000000000..01d73af45 --- /dev/null +++ b/wordpress/plugins/jamkazam/uninstall.php @@ -0,0 +1,31 @@ +